Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. ich brauche etwas Nachhilfe mit Node Red und RS232

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    921

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.9k

ich brauche etwas Nachhilfe mit Node Red und RS232

Geplant Angeheftet Gesperrt Verschoben Node-Red
16 Beiträge 5 Kommentatoren 63 Aufrufe 4 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P peterfido

    Am Ende kommt statt der 0 normal ein \r,\n oder \r\n.

    Also

    bat 1\r
    
    bat 1\n
    
    bat 1 \r\n
    

    probieren. Sender und Epfänger würde ich separieren.

    A Offline
    A Offline
    andibr
    schrieb zuletzt editiert von andibr
    #3

    @peterfido
    Danke, das hat schon mal was massiv verändert:
    Bildschirmfoto vom 2026-08-08 13-30-29.png

    der Zeitablauf erstaunt mich noch etwas, wie auch die 2 Message mit "unk...."
    Aber es beweist mir schon mal, dass ich auf dem richtigen Weg bin, um dass ganze auszulesen und das es nicht an der Hardware oder irgendwelchen Linux Berechtigungen zwischen Konsole und Nod-Red liegt.

    Marc BergM 1 Antwort Letzte Antwort
    0
    • A andibr

      @peterfido
      Danke, das hat schon mal was massiv verändert:
      Bildschirmfoto vom 2026-08-08 13-30-29.png

      der Zeitablauf erstaunt mich noch etwas, wie auch die 2 Message mit "unk...."
      Aber es beweist mir schon mal, dass ich auf dem richtigen Weg bin, um dass ganze auszulesen und das es nicht an der Hardware oder irgendwelchen Linux Berechtigungen zwischen Konsole und Nod-Red liegt.

      Marc BergM Offline
      Marc BergM Offline
      Marc Berg
      Most Active
      schrieb zuletzt editiert von Marc Berg
      #4

      @andibr

      Die Aufteilung nach würde ich noch umstellen auf "nach Zeitablauf", 250ms. Dann kommt fast sofort die Antwort.

      "unknown command 0" kommt aus deinem inject Node, da sagst du ja, dass er eine "0" senden soll.

      bfd8b9dc-5385-45c7-8e9d-741b470d48cb-image.jpeg

      NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

      Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN

      Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

      A 1 Antwort Letzte Antwort
      1
      • Marc BergM Marc Berg

        @andibr

        Die Aufteilung nach würde ich noch umstellen auf "nach Zeitablauf", 250ms. Dann kommt fast sofort die Antwort.

        "unknown command 0" kommt aus deinem inject Node, da sagst du ja, dass er eine "0" senden soll.

        bfd8b9dc-5385-45c7-8e9d-741b470d48cb-image.jpeg

        A Offline
        A Offline
        andibr
        schrieb zuletzt editiert von andibr
        #5

        @Marc-Berg
        Habe ich angepasst, aber jetzt kommt nur noch die hälfte an?
        Bildschirmfoto vom 2026-08-08 14-05-19.png

        Die Schnittstelle:
        Bildschirmfoto vom 2026-08-08 14-05-58.png

        Das erzeugt jetzt diesen Output:
        Bildschirmfoto vom 2026-08-08 14-07-20.png

        Ich verstehe nicht ganz wieso es vorher funktioniert hat und jetzt plötzlich abbricht bei der 8 Zelle. Es sind eigentlich 16 Zellen in 8 Blöcken. Das mit den einzelnen Blöcken ist mir klar, ist mit "bat x" zu lösen. Hat interesanterweise nichts mit der Anzahl Zeichen beim Empfang zu tun.

        Edit:
        Das hat scheinbar mit der Zeitspannen zwischen den Aufrufen zu tun, wenn genügend Zeit dazwischen liegt scheint er wieder alle 16 zu liefern.

        Marc BergM 1 Antwort Letzte Antwort
        0
        • A andibr

          @Marc-Berg
          Habe ich angepasst, aber jetzt kommt nur noch die hälfte an?
          Bildschirmfoto vom 2026-08-08 14-05-19.png

          Die Schnittstelle:
          Bildschirmfoto vom 2026-08-08 14-05-58.png

          Das erzeugt jetzt diesen Output:
          Bildschirmfoto vom 2026-08-08 14-07-20.png

          Ich verstehe nicht ganz wieso es vorher funktioniert hat und jetzt plötzlich abbricht bei der 8 Zelle. Es sind eigentlich 16 Zellen in 8 Blöcken. Das mit den einzelnen Blöcken ist mir klar, ist mit "bat x" zu lösen. Hat interesanterweise nichts mit der Anzahl Zeichen beim Empfang zu tun.

          Edit:
          Das hat scheinbar mit der Zeitspannen zwischen den Aufrufen zu tun, wenn genügend Zeit dazwischen liegt scheint er wieder alle 16 zu liefern.

          Marc BergM Offline
          Marc BergM Offline
          Marc Berg
          Most Active
          schrieb zuletzt editiert von
          #6

          @andibr

          ich sprach auch von der "Aufteilung", dort die 250ms setzen.

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          A 1 Antwort Letzte Antwort
          0
          • HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            schrieb zuletzt editiert von Homoran
            #7

            @andibr
            [OT]
            Hast du dieses
            2377.jpg
            Kabel?

            kein Support per PN! - Fragen im Forum stellen - Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            A 1 Antwort Letzte Antwort
            0
            • Marc BergM Marc Berg

              @andibr

              ich sprach auch von der "Aufteilung", dort die 250ms setzen.

              A Offline
              A Offline
              andibr
              schrieb zuletzt editiert von
              #8

              @Marc-Berg
              du meinst so?
              Bildschirmfoto vom 2026-08-08 14-52-13.png

              Nur bringt das leider auch nur ein Teil

              Bin mir aber gerade noch am überlegen wie ich diese ASCII String nun in ein eingermassen brauchbares Zeugs verwandeln kann.
              Der String ist ab der 3.Zeile immer identisch aufgeteilt, leider mit Leerzeichen und nichts schlauen drin und erst noch nicht immer gleich viele Stellen.

              1 Antwort Letzte Antwort
              0
              • HomoranH Homoran

                @andibr
                [OT]
                Hast du dieses
                2377.jpg
                Kabel?

                A Offline
                A Offline
                andibr
                schrieb zuletzt editiert von andibr
                #9

                @Homoran
                Nee, nicht ganz meines sieht etwas wilder aus:
                20260807_094759.jpg

                Ist aber im Prinzip genau das selbe:
                ein aktives USB Verlängerungskabel - eine USBzuRS232 (mit FTF8I5L-Chip) - uraltes Cisco Firewall Console Kabel.

                Der USBzuRS232 hat folgende Spez:
                T: Bus=01 Lev=02 Prnt=10 Port=03 Cnt=01 Dev#= 11 Spd=12 MxCh= 0
                D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
                P: Vendor=0403 ProdID=6001 Rev=06.00
                S: Manufacturer=FTDI
                S: Product=USB Serial Converter
                S: SerialNumber=FTFS8I5L
                C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=44mA
                I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
                E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
                E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

                Ohne das lange USB Kabel kann ich mit dieser Kombination auch mit dem Pytes-Tool BMSQ.... und einem Windows direkt auf die 48100R zugreifen. Darum weiss ich das die Kombi ja funktioniert. Irgendwo habe ich etwas gelesen von einem "RS232-Null-Modemkabel". Aber das steht ja sehr selten auf den Kabel drauf.

                Das ganze steckt jetzt am Proxmox Host und ist an den Node-Red Container durchgereicht mit mode=0777. Es scheint zumindest teilweise zu funktionieren. Wobei ich nicht ganz abschätzen kann, ob es nun an der Verkabelung, BMS oder Node-Red liegt wieso da teilweise unterschiedliche Resultate ankommen.

                A 1 Antwort Letzte Antwort
                0
                • A andibr

                  @Homoran
                  Nee, nicht ganz meines sieht etwas wilder aus:
                  20260807_094759.jpg

                  Ist aber im Prinzip genau das selbe:
                  ein aktives USB Verlängerungskabel - eine USBzuRS232 (mit FTF8I5L-Chip) - uraltes Cisco Firewall Console Kabel.

                  Der USBzuRS232 hat folgende Spez:
                  T: Bus=01 Lev=02 Prnt=10 Port=03 Cnt=01 Dev#= 11 Spd=12 MxCh= 0
                  D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
                  P: Vendor=0403 ProdID=6001 Rev=06.00
                  S: Manufacturer=FTDI
                  S: Product=USB Serial Converter
                  S: SerialNumber=FTFS8I5L
                  C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=44mA
                  I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
                  E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
                  E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

                  Ohne das lange USB Kabel kann ich mit dieser Kombination auch mit dem Pytes-Tool BMSQ.... und einem Windows direkt auf die 48100R zugreifen. Darum weiss ich das die Kombi ja funktioniert. Irgendwo habe ich etwas gelesen von einem "RS232-Null-Modemkabel". Aber das steht ja sehr selten auf den Kabel drauf.

                  Das ganze steckt jetzt am Proxmox Host und ist an den Node-Red Container durchgereicht mit mode=0777. Es scheint zumindest teilweise zu funktionieren. Wobei ich nicht ganz abschätzen kann, ob es nun an der Verkabelung, BMS oder Node-Red liegt wieso da teilweise unterschiedliche Resultate ankommen.

                  A Offline
                  A Offline
                  andibr
                  schrieb zuletzt editiert von andibr
                  #10

                  versteht das jemand?
                  Bildschirmfoto vom 2026-08-08 15-28-36.png

                  der Node "csv-bearbeiten" ist zwar toll, macht aber irgendwie nicht reglmässig das gleiche?
                  Bildschirmfoto vom 2026-08-08 15-29-40.png

                  Da ist doch schon eine ganze Menge aufgeteilt, nur eben bei den einzelnen Zellen fehlen irgendwie Inhalte. Irgendwas habe ich falsch eingestellt.

                  Zusätzlich sind da im Debug 10 alle 16 Zellen drin, obwohl im Debug 9 nur bis 8 aufgeführt sind, es scheint da irgendwie eine Anzeigekürzung zu geben.

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • A andibr

                    versteht das jemand?
                    Bildschirmfoto vom 2026-08-08 15-28-36.png

                    der Node "csv-bearbeiten" ist zwar toll, macht aber irgendwie nicht reglmässig das gleiche?
                    Bildschirmfoto vom 2026-08-08 15-29-40.png

                    Da ist doch schon eine ganze Menge aufgeteilt, nur eben bei den einzelnen Zellen fehlen irgendwie Inhalte. Irgendwas habe ich falsch eingestellt.

                    Zusätzlich sind da im Debug 10 alle 16 Zellen drin, obwohl im Debug 9 nur bis 8 aufgeführt sind, es scheint da irgendwie eine Anzeigekürzung zu geben.

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb zuletzt editiert von OliverIO
                    #11

                    @andibr

                    Schau mal in die Daten per hexadezimal rein.
                    Sind das wirklich Leerzeichen oder evtl ein tab (hex glaube ich 09)
                    Wenn die Daten tatsächlich mit einer unbestimmten Anzahl von Leerzeichen als trennzeichen kommt, dann ist es ein csv mit fester feldgrösse, dann wirst du zählen müssen und das der csv Node konfigurieren wenn sie das kann.

                    Alternativ eine funktions Node, bei der man den Text anhand des Zeilenumbrüche in ein Array füllt und dann jede Zeile mit substring die verschiedenen Felder extrahiert.

                    Willst du jede Zeile separat weiter verarbeiten oder die Tabelle als Ganzes?
                    Das hängt dann davon ab ob die funktionsnode eine Message oder für jede Zeile eine Message erzeugt.

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    A 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @andibr

                      Schau mal in die Daten per hexadezimal rein.
                      Sind das wirklich Leerzeichen oder evtl ein tab (hex glaube ich 09)
                      Wenn die Daten tatsächlich mit einer unbestimmten Anzahl von Leerzeichen als trennzeichen kommt, dann ist es ein csv mit fester feldgrösse, dann wirst du zählen müssen und das der csv Node konfigurieren wenn sie das kann.

                      Alternativ eine funktions Node, bei der man den Text anhand des Zeilenumbrüche in ein Array füllt und dann jede Zeile mit substring die verschiedenen Felder extrahiert.

                      Willst du jede Zeile separat weiter verarbeiten oder die Tabelle als Ganzes?
                      Das hängt dann davon ab ob die funktionsnode eine Message oder für jede Zeile eine Message erzeugt.

                      A Offline
                      A Offline
                      andibr
                      schrieb zuletzt editiert von
                      #12

                      @OliverIO
                      Bin zwar nicht mehr vor dem PC, aber es sind echt Leerzeichen. Habe das ganze mal in Notepad hineinkopiert und die quasi Spalten angeschaut es sind einmal 9 und dann wieder 13 und wieder 9.
                      Auch habe ich das ganze mal als csv gespeichert und auch Excell erkennt nicht autmatisch Spalten. Was ich bereits erreicht habe ist, dass ich die Leerzeichen durch ein Semikolon ersetzen konnte. Was ich nun aber nicht schaffe sind die ersten beiden Zeilen wegzulassen und die entsprechenden Werte rauszupicken. Ich bin da mit Node-Red noch Anfänger und habe auch sonst mit Software manchmal meine Mühe.

                      Das ganze soll eigentlich einfach meine 8 Akku mit jeweils 16 Zellen auslesen und die Spannung und Ladung in die Datenpunkte füllen. Ob das nun im eigenen Node-Red Container oder im iobroker Container läuft ist mir eigentlich egal. Und ja ich weiss es gibt bereits ein Adapter aber der funktioniert scheinbar bei Pytes nicht mehr oder nicht.

                      OliverIOO 2 Antworten Letzte Antwort
                      0
                      • A andibr

                        @OliverIO
                        Bin zwar nicht mehr vor dem PC, aber es sind echt Leerzeichen. Habe das ganze mal in Notepad hineinkopiert und die quasi Spalten angeschaut es sind einmal 9 und dann wieder 13 und wieder 9.
                        Auch habe ich das ganze mal als csv gespeichert und auch Excell erkennt nicht autmatisch Spalten. Was ich bereits erreicht habe ist, dass ich die Leerzeichen durch ein Semikolon ersetzen konnte. Was ich nun aber nicht schaffe sind die ersten beiden Zeilen wegzulassen und die entsprechenden Werte rauszupicken. Ich bin da mit Node-Red noch Anfänger und habe auch sonst mit Software manchmal meine Mühe.

                        Das ganze soll eigentlich einfach meine 8 Akku mit jeweils 16 Zellen auslesen und die Spannung und Ladung in die Datenpunkte füllen. Ob das nun im eigenen Node-Red Container oder im iobroker Container läuft ist mir eigentlich egal. Und ja ich weiss es gibt bereits ein Adapter aber der funktioniert scheinbar bei Pytes nicht mehr oder nicht.

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb zuletzt editiert von
                        #13

                        @andibr sagte:

                        Habe das ganze mal in Notepad hineinkopiert

                        das ist gefährlich. du weißt nicht was der anzeigeeditor oder notepad da uU automatisch macht.

                        @andibr sagte:

                        Auch habe ich das ganze mal als csv gespeichert und auch Excell erkennt nicht autmatisch Spalten

                        ja, aber excel kann feste breite schon, muss man aber einstellen, automatisch geht da nichts

                        de8dd97a-1ffc-4207-9697-c993ad612465-image.jpeg

                        aber du willst ja nicht excel, sondern node red

                        stell doch mal den exakten output aus deinem rs232 in einer textdatei zur verfügung.
                        also nichts editieren.
                        dann mach ich dir eine funktionsnode die das ordentlich verarbeitet

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        1 Antwort Letzte Antwort
                        0
                        • A andibr

                          @OliverIO
                          Bin zwar nicht mehr vor dem PC, aber es sind echt Leerzeichen. Habe das ganze mal in Notepad hineinkopiert und die quasi Spalten angeschaut es sind einmal 9 und dann wieder 13 und wieder 9.
                          Auch habe ich das ganze mal als csv gespeichert und auch Excell erkennt nicht autmatisch Spalten. Was ich bereits erreicht habe ist, dass ich die Leerzeichen durch ein Semikolon ersetzen konnte. Was ich nun aber nicht schaffe sind die ersten beiden Zeilen wegzulassen und die entsprechenden Werte rauszupicken. Ich bin da mit Node-Red noch Anfänger und habe auch sonst mit Software manchmal meine Mühe.

                          Das ganze soll eigentlich einfach meine 8 Akku mit jeweils 16 Zellen auslesen und die Spannung und Ladung in die Datenpunkte füllen. Ob das nun im eigenen Node-Red Container oder im iobroker Container läuft ist mir eigentlich egal. Und ja ich weiss es gibt bereits ein Adapter aber der funktioniert scheinbar bei Pytes nicht mehr oder nicht.

                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb zuletzt editiert von OliverIO
                          #14

                          @andibr

                          habe mir mal aus deinem screenhot oben die daten extrahiert. aber wie gesagt das ist nur annahme und folgenden testflow gemacht

                          [
                             {
                                 "id": "593468e.75a0498",
                                 "type": "tab",
                                 "label": "Flow 1",
                                 "disabled": false,
                                 "info": ""
                             },
                             {
                                 "id": "6602913b9103c8e9",
                                 "type": "function",
                                 "z": "593468e.75a0498",
                                 "name": "bereitstellung text",
                                 "func": "msg.payload = `@\nBattery  Volt     Tempr     Base State   Volt. State  Curr. State  Temp. State  Coulomb\n0        3467     29000     Idle         Normal       Normal       Normal       97%       95988 mAH\n1        3474     29000     Idle         Normal       Normal       Normal       97%       96070 mAH\n2        3463     29000     Idle         Normal       Normal       Normal       96%       95549 mAH\n3        3473     29000     Idle         Normal       Normal       Normal       97%       96070 mAH\n4        3468     29000     Idle         Normal       Normal       Normal       97%       95906 mAH\n5        3465     28000     Idle         Normal       Normal       Normal       96%       95329 mAH\n6        3459     28000     Idle         Normal       Normal       Normal       96%       95220 mAH\n7        3471     28000     Idle         Normal       Normal       Normal       97%       95906 mAH\n`;\n\nreturn msg;",
                                 "outputs": 1,
                                 "timeout": 0,
                                 "noerr": 0,
                                 "initialize": "",
                                 "finalize": "",
                                 "libs": [],
                                 "x": 130,
                                 "y": 120,
                                 "wires": [
                                     [
                                         "2df68931298f6d99"
                                     ]
                                 ]
                             },
                             {
                                 "id": "2df68931298f6d99",
                                 "type": "function",
                                 "z": "593468e.75a0498",
                                 "name": "convert to msgs",
                                 "func": "const text = msg.payload;\n\nif (typeof text !== \"string\") {\n    node.error(\"msg.payload ist kein String\", msg);\n    return null;\n}\n\n// In einzelne Zeilen zerlegen\nconst lines = text\n    .split(/\\r?\\n/)\n    .map(line => line.trim())\n    .filter(line => line !== \"\");\n\n// Nur Zeilen berücksichtigen, die mit einer Batterienummer beginnen\nconst dataLines = lines.filter(line => /^\\d+\\s/.test(line));\n\nconst messages = [];\n\nfor (const line of dataLines) {\n\n    // Spalten sind durch mindestens 2 Leerzeichen getrennt\n    const columns = line.split(/\\s{2,}/);\n\n    if (columns.length < 9) {\n        node.warn(\"Zeile konnte nicht verarbeitet werden: \" + line);\n        continue;\n    }\n\n    const battery = {\n        battery: Number(columns[0]),\n        volt: Number(columns[1]),\n        tempr: Number(columns[2]),\n        baseState: columns[3],\n        voltState: columns[4],\n        currState: columns[5],\n        tempState: columns[6],\n        coulomb: Number(columns[7].replace(\"%\", \"\")),\n        capacity: Number(columns[8].replace(/[^\\d]/g, \"\"))\n    };\n\n    messages.push({\n        ...msg,\n        payload: battery\n    });\n}\n\n// Alle Nachrichten nacheinander über denselben Ausgang senden\nreturn [messages];",
                                 "outputs": 1,
                                 "timeout": 0,
                                 "noerr": 0,
                                 "initialize": "",
                                 "finalize": "",
                                 "libs": [],
                                 "x": 320,
                                 "y": 120,
                                 "wires": [
                                     [
                                         "dd25a6c986c48c9a"
                                     ]
                                 ]
                             },
                             {
                                 "id": "c972ab9ba4b7bebd",
                                 "type": "debug",
                                 "z": "593468e.75a0498",
                                 "name": "debug 1",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "true",
                                 "targetType": "full",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 400,
                                 "y": 200,
                                 "wires": []
                             },
                             {
                                 "id": "a349e5287a176ccf",
                                 "type": "inject",
                                 "z": "593468e.75a0498",
                                 "name": "Start button",
                                 "props": [
                                     {
                                         "p": "payload"
                                     },
                                     {
                                         "p": "topic",
                                         "vt": "str"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": "",
                                 "payloadType": "date",
                                 "x": 110,
                                 "y": 60,
                                 "wires": [
                                     [
                                         "6602913b9103c8e9"
                                     ]
                                 ]
                             },
                             {
                                 "id": "941c0f521bd7fa84",
                                 "type": "ioBroker out",
                                 "z": "593468e.75a0498",
                                 "name": "",
                                 "topic": "",
                                 "ack": "true",
                                 "autoCreate": "true",
                                 "stateName": "",
                                 "role": "",
                                 "payloadType": "",
                                 "readonly": "",
                                 "stateUnit": "",
                                 "stateMin": "",
                                 "stateMax": "",
                                 "x": 420,
                                 "y": 240,
                                 "wires": []
                             },
                             {
                                 "id": "dd25a6c986c48c9a",
                                 "type": "function",
                                 "z": "593468e.75a0498",
                                 "name": "function 1",
                                 "func": "const battery = msg.payload;\n\nif (!battery || battery.battery === undefined) {\n    node.error(\"Ungültiges Battery-Objekt\", msg);\n    return null;\n}\n\nconst batteryId = battery.battery;\n\nconst states = [\n    {\n        id: \"voltage\",\n        value: battery.volt,\n        name: \"Voltage\",\n        role: \"value.voltage\",\n        type: \"number\",\n        readonly: true,\n        unit: \"mV\",\n        min: 0\n    },\n    {\n        id: \"temperature\",\n        value: battery.tempr / 1000,\n        name: \"Temperature\",\n        role: \"value.temperature\",\n        type: \"number\",\n        readonly: true,\n        unit: \"°C\"\n    },\n    {\n        id: \"baseState\",\n        value: battery.baseState,\n        name: \"Base State\",\n        role: \"text\",\n        type: \"string\",\n        readonly: true\n    },\n    {\n        id: \"voltageState\",\n        value: battery.voltState,\n        name: \"Voltage State\",\n        role: \"text\",\n        type: \"string\",\n        readonly: true\n    },\n    {\n        id: \"currentState\",\n        value: battery.currState,\n        name: \"Current State\",\n        role: \"text\",\n        type: \"string\",\n        readonly: true\n    },\n    {\n        id: \"temperatureState\",\n        value: battery.tempState,\n        name: \"Temperature State\",\n        role: \"text\",\n        type: \"string\",\n        readonly: true\n    },\n    {\n        id: \"charge\",\n        value: battery.coulomb,\n        name: \"Charge\",\n        role: \"value.battery\",\n        type: \"number\",\n        readonly: true,\n        unit: \"%\",\n        min: 0,\n        max: 100\n    },\n    {\n        id: \"capacity\",\n        value: battery.capacity,\n        name: \"Capacity\",\n        role: \"value\",\n        type: \"number\",\n        readonly: true,\n        unit: \"mAh\",\n        min: 0\n    }\n];\n\nconst messages = [];\n\nfor (const state of states) {\n    const out = {\n        topic: `0_userdata.0.noderedbattery.${batteryId}.${state.id}`,\n        payload: state.value,\n\n        stateName: state.name,\n        stateRole: state.role,\n        stateType: state.type,\n        stateReadonly: state.readonly\n    };\n\n    if (state.unit !== undefined) {\n        out.stateUnit = state.unit;\n    }\n\n    if (state.min !== undefined) {\n        out.stateMin = state.min;\n    }\n\n    if (state.max !== undefined) {\n        out.stateMax = state.max;\n    }\n\n    messages.push(out);\n}\n\nreturn [messages];",
                                 "outputs": 1,
                                 "timeout": 0,
                                 "noerr": 0,
                                 "initialize": "",
                                 "finalize": "",
                                 "libs": [],
                                 "x": 160,
                                 "y": 200,
                                 "wires": [
                                     [
                                         "941c0f521bd7fa84",
                                         "c972ab9ba4b7bebd"
                                     ]
                                 ]
                             }
                          ]
                          

                          cb1bd8c0-3762-40d6-a8d1-b723eab43c91-image.jpeg

                          1.das erste ist ein inject node zum manuellen starten des flows, den brauchst du nicht. bei dir wird aus der rs232 getriggert
                          2.diese node stellt den test text bereit, bei dir wäre das dann die rs232 node
                          3.hier wird nun aus dem ankommenden text die daten aufbereitet

                          • verarbeitet wird nur wenn text kommt
                          • text muss mindestens 9 zeichen lang sein
                          • text wird dann in einzelne zeilen aufgeteilt evtl leerzeilen werden ausgefiltert
                          • jede zeile wird mit regex in spalten aufgeteilt, dabei fliegen die leezeichen raus
                          • jeder match wird dann in ein battery objekt in das entsprechende feld gelegt
                          • aus jedem zeilen objekt wird dann ein eigenes messag objekt erzeugt
                          • wenn alle zeilen verarbeitet sind, werden alle messages an node red zum weiterverarbeiten zurückgegeben
                          1. debug node: die gibt dann für jede einzelne message (also jede zeile) eine nachricht im debug fenster (käfer symbol) aus. vgl screenshot

                          danach darfst du damit machen was du willst :)
                          also bspw ein battery objekt nehmen, aus den daten den datenpunkt ableiten (also das ist eine eigene node, bei dem du den datenpunktnamen und den zu schreibenden inhalt ermittelst) und dann mit der iobroker out node an iobroker senden

                          Nachtrag:
                          da ich gerade in spiellaune war habe ich dir deinen flow noch zu ende gemacht
                          in der zusätzlichen node function 1 (habe sie jetzt nicht benannt)
                          wird das battery objekt jetzt so aufbereitet, das es durch iobroker out direkt geschrieben wird
                          Ich habe bei mir mal als hauptobjekt
                          0_userdata.0.noderedbattery
                          genommen.

                          in den node red instanz einstellungen musst du dann noch die folgende option aktivieren
                          55095627-51ff-4a83-83fb-bf59c2ab5aa8-image.jpeg

                          das sieht dann so aus
                          f3f93369-7869-4e4d-aaea-64ef8a7061cb-image.jpeg

                          versuche aber jede einzelne node zu verstehen was die macht, sonst kannst du die nicht anpassen.

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          1 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            andibr
                            schrieb zuletzt editiert von
                            #15

                            Vielen Dank, bin gerade unterwegs, werde das aber morgen mal testen. Der Inhalt des Debug sieht schon sehr vielversprechend aus. Damit lässt sich glaub dann relativ einfach ein Datenpunkt für den Iobroker erstellen. Ich meinte ich habe solche Filter auch schon gebaut beim auslesen der Victron Forcast aus dem VRM.
                            Ich werde auf alle Fälle mal den ganzen String nochmals "nackt" hier einstellen.
                            Mit den Terminal Tools lassen sich den BMS noch ganz viele Dinge entlocken, habe unteranderem festgestellt, dass meine 8 Pytes mehrere verschiedene BMS Versionen und auch entsprechend verschiedene Firmeware haben. Sogar solche die ich zusammen gekauft habe.

                            OliverIOO 1 Antwort Letzte Antwort
                            0
                            • A andibr

                              Vielen Dank, bin gerade unterwegs, werde das aber morgen mal testen. Der Inhalt des Debug sieht schon sehr vielversprechend aus. Damit lässt sich glaub dann relativ einfach ein Datenpunkt für den Iobroker erstellen. Ich meinte ich habe solche Filter auch schon gebaut beim auslesen der Victron Forcast aus dem VRM.
                              Ich werde auf alle Fälle mal den ganzen String nochmals "nackt" hier einstellen.
                              Mit den Terminal Tools lassen sich den BMS noch ganz viele Dinge entlocken, habe unteranderem festgestellt, dass meine 8 Pytes mehrere verschiedene BMS Versionen und auch entsprechend verschiedene Firmeware haben. Sogar solche die ich zusammen gekauft habe.

                              OliverIOO Offline
                              OliverIOO Offline
                              OliverIO
                              schrieb zuletzt editiert von OliverIO
                              #16

                              @andibr sagte:

                              relativ einfach ein Datenpunkt für den Iobroker

                              ist schon fertig. macht es bei mir schon so und ist im obigen flow enthalten.
                              habe aber gerade festgestellt, das das mit in neuen flow importieren nicht richtig klappt.
                              flow oben heißt
                              flow 1
                              wenn du den schon hast, dann vorher umbenennen

                              Meine Adapter und Widgets
                              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                              Links im Profil

                              1 Antwort Letzte Antwort
                              0

                              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                              Registrieren Anmelden
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              401

                              Online

                              33.0k

                              Benutzer

                              83.5k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2026
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe