Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Daten per Serieller Schnittstelle übertragen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    895

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Daten per Serieller Schnittstelle übertragen

Geplant Angeheftet Gesperrt Verschoben Node-Red
12 Beiträge 3 Kommentatoren 983 Aufrufe 3 Watching
  • Ä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.
  • B Offline
    B Offline
    Bavarian
    schrieb am zuletzt editiert von Bavarian
    #1

    Hallo zusammen,

    ich möchte einige Sachen per Serial in Node Red an meinen Arduino senden, der Code ist alt und fix, kann nicht geändert werden.
    Ich kann sehr gut einen String senden LEDON oder LEDOFF.

    [
        {
            "id": "61c5ee22.b88f1",
            "type": "tab",
            "label": "Flow 4",
            "disabled": false,
            "info": ""
        },
        {
            "id": "2b3000e4.63106",
            "type": "inject",
            "z": "61c5ee22.b88f1",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "LEDON",
            "payloadType": "str",
            "x": 370,
            "y": 340,
            "wires": [
                [
                    "168de73c.72f521",
                    "5aa5836f.d0a01c"
                ]
            ]
        },
        {
            "id": "3f6f6ec7.f8afda",
            "type": "inject",
            "z": "61c5ee22.b88f1",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "LEDON",
            "payloadType": "str",
            "x": 370,
            "y": 420,
            "wires": [
                [
                    "168de73c.72f521",
                    "5aa5836f.d0a01c"
                ]
            ]
        },
        {
            "id": "168de73c.72f521",
            "type": "serial out",
            "z": "61c5ee22.b88f1",
            "name": "",
            "serial": "e13e4297edea67b8",
            "x": 620,
            "y": 300,
            "wires": []
        },
        {
            "id": "5aa5836f.d0a01c",
            "type": "debug",
            "z": "61c5ee22.b88f1",
            "name": "",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "false",
            "statusVal": "",
            "statusType": "auto",
            "x": 610,
            "y": 440,
            "wires": []
        },
        {
            "id": "e13e4297edea67b8",
            "type": "serial-port",
            "serialport": "/dev/ttyACM0",
            "serialbaud": "57600",
            "databits": "8",
            "parity": "none",
            "stopbits": "1",
            "waitfor": "",
            "dtr": "none",
            "rts": "none",
            "cts": "none",
            "dsr": "none",
            "newline": "\\n",
            "bin": "bin",
            "out": "char",
            "addchar": "\\n",
            "responsetimeout": "100"
        }
    ]
    

    Im Debug Fenster steht dann:
    msg.payload : string[5]
    "LEDON"

    Das \n wir automatisch durch die Config der Serial geschickt und wird auch auf dem Arduino erwartet.

    Auf diese Weise werden ein paar Funktionen ein und ausgeschaltet, so weit so gut.

    Nun hänge ich seit Tagen (und Nächten) vor dem Problem, dass ich auch Werte übertragen will.
    Ich bin mittlerweile verwirrt was ASCII BUFFER STRING OBJECT anbetrifft und habe auch viel versucht mit dem Buffer Maker.
    Auf der Empfangsseite habe ich das mit den Werten die ich bekomme mittlerweile mit dem Buffer Parser im Griff.
    Da kommt eine ASCII Kennung gefolgt von floats int boolean etc. das klappt!

    Auf der Arduino Seite sieht das für einfache Befehle so aus:

    if (strcmp(command, "LEDON") == 0 && !ledon) {
          digitalWrite(LEDON_PIN, HIGH);
          ledon = true;
    

    Passt, keine Probleme bis hier, dann aber:

    else if (strcmp(substr, "MSS:") == 0) {
            byte a = command[4];
            byte b = command[5];
            bool x = command[6] != 0;
            mss.configure(a, b, x);
    

    Byte A und B sind Zahlen zwischen 0 und 255 und x als bool.
    Also sehe das eigentlich so aus: MSS: 19 188 true
    mss.configure(a, b, x) sollte dass die Werte erhalten mss.configure(19, 188, true);

    Ich bekomme das aber nicht zum laufen.
    Als String geht es nicht da sonst aus 19 eine 1 und eine 9 gemacht wird.
    Packe ich das in ein Array ["MSS:",19,188,true] geht das nicht.
    Nehme ich den Buffer Maker und mache daraus eine Buffer sehe ich im Debug auch die passenden Werte.
    Wenn ich den Buffer Maker dann mit der Serial verbinde, kommt erstmal eine Warnung da \n nur für Strigs ist.
    Nehme ich das Kreuz in der Config von der Serial raus, also dass automatisch \n gesendet wird, passiert nix.

    Um das zu testen habe ich LEDON als ASCII Inject > BufferMaker ( ASCII länge 5) > Debug und Serial.
    Buffer sieht gut aus, Werte passen, aber gesendet wird nix.

    Ich blicke da echt nicht mehr durch :confused:

    mickymM 3 Antworten Letzte Antwort
    0
    • B Bavarian

      Hallo zusammen,

      ich möchte einige Sachen per Serial in Node Red an meinen Arduino senden, der Code ist alt und fix, kann nicht geändert werden.
      Ich kann sehr gut einen String senden LEDON oder LEDOFF.

      [
          {
              "id": "61c5ee22.b88f1",
              "type": "tab",
              "label": "Flow 4",
              "disabled": false,
              "info": ""
          },
          {
              "id": "2b3000e4.63106",
              "type": "inject",
              "z": "61c5ee22.b88f1",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "LEDON",
              "payloadType": "str",
              "x": 370,
              "y": 340,
              "wires": [
                  [
                      "168de73c.72f521",
                      "5aa5836f.d0a01c"
                  ]
              ]
          },
          {
              "id": "3f6f6ec7.f8afda",
              "type": "inject",
              "z": "61c5ee22.b88f1",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "LEDON",
              "payloadType": "str",
              "x": 370,
              "y": 420,
              "wires": [
                  [
                      "168de73c.72f521",
                      "5aa5836f.d0a01c"
                  ]
              ]
          },
          {
              "id": "168de73c.72f521",
              "type": "serial out",
              "z": "61c5ee22.b88f1",
              "name": "",
              "serial": "e13e4297edea67b8",
              "x": 620,
              "y": 300,
              "wires": []
          },
          {
              "id": "5aa5836f.d0a01c",
              "type": "debug",
              "z": "61c5ee22.b88f1",
              "name": "",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "false",
              "statusVal": "",
              "statusType": "auto",
              "x": 610,
              "y": 440,
              "wires": []
          },
          {
              "id": "e13e4297edea67b8",
              "type": "serial-port",
              "serialport": "/dev/ttyACM0",
              "serialbaud": "57600",
              "databits": "8",
              "parity": "none",
              "stopbits": "1",
              "waitfor": "",
              "dtr": "none",
              "rts": "none",
              "cts": "none",
              "dsr": "none",
              "newline": "\\n",
              "bin": "bin",
              "out": "char",
              "addchar": "\\n",
              "responsetimeout": "100"
          }
      ]
      

      Im Debug Fenster steht dann:
      msg.payload : string[5]
      "LEDON"

      Das \n wir automatisch durch die Config der Serial geschickt und wird auch auf dem Arduino erwartet.

      Auf diese Weise werden ein paar Funktionen ein und ausgeschaltet, so weit so gut.

      Nun hänge ich seit Tagen (und Nächten) vor dem Problem, dass ich auch Werte übertragen will.
      Ich bin mittlerweile verwirrt was ASCII BUFFER STRING OBJECT anbetrifft und habe auch viel versucht mit dem Buffer Maker.
      Auf der Empfangsseite habe ich das mit den Werten die ich bekomme mittlerweile mit dem Buffer Parser im Griff.
      Da kommt eine ASCII Kennung gefolgt von floats int boolean etc. das klappt!

      Auf der Arduino Seite sieht das für einfache Befehle so aus:

      if (strcmp(command, "LEDON") == 0 && !ledon) {
            digitalWrite(LEDON_PIN, HIGH);
            ledon = true;
      

      Passt, keine Probleme bis hier, dann aber:

      else if (strcmp(substr, "MSS:") == 0) {
              byte a = command[4];
              byte b = command[5];
              bool x = command[6] != 0;
              mss.configure(a, b, x);
      

      Byte A und B sind Zahlen zwischen 0 und 255 und x als bool.
      Also sehe das eigentlich so aus: MSS: 19 188 true
      mss.configure(a, b, x) sollte dass die Werte erhalten mss.configure(19, 188, true);

      Ich bekomme das aber nicht zum laufen.
      Als String geht es nicht da sonst aus 19 eine 1 und eine 9 gemacht wird.
      Packe ich das in ein Array ["MSS:",19,188,true] geht das nicht.
      Nehme ich den Buffer Maker und mache daraus eine Buffer sehe ich im Debug auch die passenden Werte.
      Wenn ich den Buffer Maker dann mit der Serial verbinde, kommt erstmal eine Warnung da \n nur für Strigs ist.
      Nehme ich das Kreuz in der Config von der Serial raus, also dass automatisch \n gesendet wird, passiert nix.

      Um das zu testen habe ich LEDON als ASCII Inject > BufferMaker ( ASCII länge 5) > Debug und Serial.
      Buffer sieht gut aus, Werte passen, aber gesendet wird nix.

      Ich blicke da echt nicht mehr durch :confused:

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      Also ich hab mal die serielle Node auf ein Testsystem übertragen - allerdings besitze ich keine serielle Schnittstelle, um das zu testen.

      Grundsätzlich sagst Du ja, dass es mit reinen Strings funktioniert.

      Die BufferNodes habe ich auch mal installiert, die habe ich auch auf dem Produktivsystem, da der Parser immer sehr gut zur Analyse von Puffern zu gebrauchen ist. Wobei der aufgrund seiner enormen Funktionalität nicht einfach zu verstehen ist.

      Die serielle Node sagt ja, dass bei einem Buffer nichts angehängt werden muss.

      5c698efb-0a84-4344-b7b4-abdeb07ce652-image.png

      Wenn Du einen buffer rausschickst, darfst Du aber in der seriellen Konfig nichts spezifizieren oder Du musst den Code Hex eingeben.

      Die haben auch ein sehr komplexes Beispiel mit geschickt (mit der Node) mitgeschickt - das muss man nur noch verstehen.
      Jedenfalls wird ein komplexes JS Objekt in den Puffer gepackt

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      0
      • B Bavarian

        Hallo zusammen,

        ich möchte einige Sachen per Serial in Node Red an meinen Arduino senden, der Code ist alt und fix, kann nicht geändert werden.
        Ich kann sehr gut einen String senden LEDON oder LEDOFF.

        [
            {
                "id": "61c5ee22.b88f1",
                "type": "tab",
                "label": "Flow 4",
                "disabled": false,
                "info": ""
            },
            {
                "id": "2b3000e4.63106",
                "type": "inject",
                "z": "61c5ee22.b88f1",
                "name": "",
                "props": [
                    {
                        "p": "payload"
                    },
                    {
                        "p": "topic",
                        "vt": "str"
                    }
                ],
                "repeat": "",
                "crontab": "",
                "once": false,
                "onceDelay": 0.1,
                "topic": "",
                "payload": "LEDON",
                "payloadType": "str",
                "x": 370,
                "y": 340,
                "wires": [
                    [
                        "168de73c.72f521",
                        "5aa5836f.d0a01c"
                    ]
                ]
            },
            {
                "id": "3f6f6ec7.f8afda",
                "type": "inject",
                "z": "61c5ee22.b88f1",
                "name": "",
                "props": [
                    {
                        "p": "payload"
                    },
                    {
                        "p": "topic",
                        "vt": "str"
                    }
                ],
                "repeat": "",
                "crontab": "",
                "once": false,
                "onceDelay": 0.1,
                "topic": "",
                "payload": "LEDON",
                "payloadType": "str",
                "x": 370,
                "y": 420,
                "wires": [
                    [
                        "168de73c.72f521",
                        "5aa5836f.d0a01c"
                    ]
                ]
            },
            {
                "id": "168de73c.72f521",
                "type": "serial out",
                "z": "61c5ee22.b88f1",
                "name": "",
                "serial": "e13e4297edea67b8",
                "x": 620,
                "y": 300,
                "wires": []
            },
            {
                "id": "5aa5836f.d0a01c",
                "type": "debug",
                "z": "61c5ee22.b88f1",
                "name": "",
                "active": true,
                "tosidebar": true,
                "console": false,
                "tostatus": false,
                "complete": "false",
                "statusVal": "",
                "statusType": "auto",
                "x": 610,
                "y": 440,
                "wires": []
            },
            {
                "id": "e13e4297edea67b8",
                "type": "serial-port",
                "serialport": "/dev/ttyACM0",
                "serialbaud": "57600",
                "databits": "8",
                "parity": "none",
                "stopbits": "1",
                "waitfor": "",
                "dtr": "none",
                "rts": "none",
                "cts": "none",
                "dsr": "none",
                "newline": "\\n",
                "bin": "bin",
                "out": "char",
                "addchar": "\\n",
                "responsetimeout": "100"
            }
        ]
        

        Im Debug Fenster steht dann:
        msg.payload : string[5]
        "LEDON"

        Das \n wir automatisch durch die Config der Serial geschickt und wird auch auf dem Arduino erwartet.

        Auf diese Weise werden ein paar Funktionen ein und ausgeschaltet, so weit so gut.

        Nun hänge ich seit Tagen (und Nächten) vor dem Problem, dass ich auch Werte übertragen will.
        Ich bin mittlerweile verwirrt was ASCII BUFFER STRING OBJECT anbetrifft und habe auch viel versucht mit dem Buffer Maker.
        Auf der Empfangsseite habe ich das mit den Werten die ich bekomme mittlerweile mit dem Buffer Parser im Griff.
        Da kommt eine ASCII Kennung gefolgt von floats int boolean etc. das klappt!

        Auf der Arduino Seite sieht das für einfache Befehle so aus:

        if (strcmp(command, "LEDON") == 0 && !ledon) {
              digitalWrite(LEDON_PIN, HIGH);
              ledon = true;
        

        Passt, keine Probleme bis hier, dann aber:

        else if (strcmp(substr, "MSS:") == 0) {
                byte a = command[4];
                byte b = command[5];
                bool x = command[6] != 0;
                mss.configure(a, b, x);
        

        Byte A und B sind Zahlen zwischen 0 und 255 und x als bool.
        Also sehe das eigentlich so aus: MSS: 19 188 true
        mss.configure(a, b, x) sollte dass die Werte erhalten mss.configure(19, 188, true);

        Ich bekomme das aber nicht zum laufen.
        Als String geht es nicht da sonst aus 19 eine 1 und eine 9 gemacht wird.
        Packe ich das in ein Array ["MSS:",19,188,true] geht das nicht.
        Nehme ich den Buffer Maker und mache daraus eine Buffer sehe ich im Debug auch die passenden Werte.
        Wenn ich den Buffer Maker dann mit der Serial verbinde, kommt erstmal eine Warnung da \n nur für Strigs ist.
        Nehme ich das Kreuz in der Config von der Serial raus, also dass automatisch \n gesendet wird, passiert nix.

        Um das zu testen habe ich LEDON als ASCII Inject > BufferMaker ( ASCII länge 5) > Debug und Serial.
        Buffer sieht gut aus, Werte passen, aber gesendet wird nix.

        Ich blicke da echt nicht mehr durch :confused:

        mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #3

        @bavarian Was ich allerdings nicht verstehe - wenn Du Strings verschickst - warum dann keine JSON Strings.
        Wenn der JS Code hier frei sit mit dem strcmp - da können wir doch das ganze Array schicken und das auf der Empfängerseite anlysieren?

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        1 Antwort Letzte Antwort
        0
        • B Bavarian

          Hallo zusammen,

          ich möchte einige Sachen per Serial in Node Red an meinen Arduino senden, der Code ist alt und fix, kann nicht geändert werden.
          Ich kann sehr gut einen String senden LEDON oder LEDOFF.

          [
              {
                  "id": "61c5ee22.b88f1",
                  "type": "tab",
                  "label": "Flow 4",
                  "disabled": false,
                  "info": ""
              },
              {
                  "id": "2b3000e4.63106",
                  "type": "inject",
                  "z": "61c5ee22.b88f1",
                  "name": "",
                  "props": [
                      {
                          "p": "payload"
                      },
                      {
                          "p": "topic",
                          "vt": "str"
                      }
                  ],
                  "repeat": "",
                  "crontab": "",
                  "once": false,
                  "onceDelay": 0.1,
                  "topic": "",
                  "payload": "LEDON",
                  "payloadType": "str",
                  "x": 370,
                  "y": 340,
                  "wires": [
                      [
                          "168de73c.72f521",
                          "5aa5836f.d0a01c"
                      ]
                  ]
              },
              {
                  "id": "3f6f6ec7.f8afda",
                  "type": "inject",
                  "z": "61c5ee22.b88f1",
                  "name": "",
                  "props": [
                      {
                          "p": "payload"
                      },
                      {
                          "p": "topic",
                          "vt": "str"
                      }
                  ],
                  "repeat": "",
                  "crontab": "",
                  "once": false,
                  "onceDelay": 0.1,
                  "topic": "",
                  "payload": "LEDON",
                  "payloadType": "str",
                  "x": 370,
                  "y": 420,
                  "wires": [
                      [
                          "168de73c.72f521",
                          "5aa5836f.d0a01c"
                      ]
                  ]
              },
              {
                  "id": "168de73c.72f521",
                  "type": "serial out",
                  "z": "61c5ee22.b88f1",
                  "name": "",
                  "serial": "e13e4297edea67b8",
                  "x": 620,
                  "y": 300,
                  "wires": []
              },
              {
                  "id": "5aa5836f.d0a01c",
                  "type": "debug",
                  "z": "61c5ee22.b88f1",
                  "name": "",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "false",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 610,
                  "y": 440,
                  "wires": []
              },
              {
                  "id": "e13e4297edea67b8",
                  "type": "serial-port",
                  "serialport": "/dev/ttyACM0",
                  "serialbaud": "57600",
                  "databits": "8",
                  "parity": "none",
                  "stopbits": "1",
                  "waitfor": "",
                  "dtr": "none",
                  "rts": "none",
                  "cts": "none",
                  "dsr": "none",
                  "newline": "\\n",
                  "bin": "bin",
                  "out": "char",
                  "addchar": "\\n",
                  "responsetimeout": "100"
              }
          ]
          

          Im Debug Fenster steht dann:
          msg.payload : string[5]
          "LEDON"

          Das \n wir automatisch durch die Config der Serial geschickt und wird auch auf dem Arduino erwartet.

          Auf diese Weise werden ein paar Funktionen ein und ausgeschaltet, so weit so gut.

          Nun hänge ich seit Tagen (und Nächten) vor dem Problem, dass ich auch Werte übertragen will.
          Ich bin mittlerweile verwirrt was ASCII BUFFER STRING OBJECT anbetrifft und habe auch viel versucht mit dem Buffer Maker.
          Auf der Empfangsseite habe ich das mit den Werten die ich bekomme mittlerweile mit dem Buffer Parser im Griff.
          Da kommt eine ASCII Kennung gefolgt von floats int boolean etc. das klappt!

          Auf der Arduino Seite sieht das für einfache Befehle so aus:

          if (strcmp(command, "LEDON") == 0 && !ledon) {
                digitalWrite(LEDON_PIN, HIGH);
                ledon = true;
          

          Passt, keine Probleme bis hier, dann aber:

          else if (strcmp(substr, "MSS:") == 0) {
                  byte a = command[4];
                  byte b = command[5];
                  bool x = command[6] != 0;
                  mss.configure(a, b, x);
          

          Byte A und B sind Zahlen zwischen 0 und 255 und x als bool.
          Also sehe das eigentlich so aus: MSS: 19 188 true
          mss.configure(a, b, x) sollte dass die Werte erhalten mss.configure(19, 188, true);

          Ich bekomme das aber nicht zum laufen.
          Als String geht es nicht da sonst aus 19 eine 1 und eine 9 gemacht wird.
          Packe ich das in ein Array ["MSS:",19,188,true] geht das nicht.
          Nehme ich den Buffer Maker und mache daraus eine Buffer sehe ich im Debug auch die passenden Werte.
          Wenn ich den Buffer Maker dann mit der Serial verbinde, kommt erstmal eine Warnung da \n nur für Strigs ist.
          Nehme ich das Kreuz in der Config von der Serial raus, also dass automatisch \n gesendet wird, passiert nix.

          Um das zu testen habe ich LEDON als ASCII Inject > BufferMaker ( ASCII länge 5) > Debug und Serial.
          Buffer sieht gut aus, Werte passen, aber gesendet wird nix.

          Ich blicke da echt nicht mehr durch :confused:

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @bavarian So ansonsten habe ich es jetzt mal so hingebracht, dass das Array in einen Puffer geschrieben wird.

          f4850edb-f30d-4464-bfee-b03bd24a937b-image.png

          Diese Meldung
          2073b418-603f-4a59-852e-6406b334d7f4-image.png
          bekommst Du von der serial out Node - wenn Du einen Buffer schreiben willst, weil Buffer und String sich nicht vertragen.

          \n ist ja das Zeilenvorschubzeichen. Wenn Du das unbedingt brauchst, damit was geschickt wird, dann kann man das HEX eintragen und dann gibt es auch die Fehlermeldung beim Buffer nicht mehr:

          f4b8f87a-5c0a-4795-90f7-457573037e75-image.png

          Hier der Flow - ich hab allerdings für den Bool auch den Type Byte genommen - anders mag das Teil nicht.

          [{"id":"e08ae59281d89c61","type":"buffer-maker","z":"61c5ee22.b88f1","name":"","specification":"spec","specificationType":"ui","items":[{"name":"item1","type":"string","length":-1,"dataType":"msg","data":"payload[0]"},{"name":"item2","type":"byte","length":1,"dataType":"msg","data":"payload[1]"},{"name":"item3","type":"byte","length":1,"dataType":"msg","data":"payload[2]"},{"name":"item4","type":"byte","length":1,"dataType":"msg","data":"payload[3]"}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","x":730,"y":480,"wires":[["4ce6d6acb107c8d7","1df6c50f97d2dbea"]]},{"id":"4ce6d6acb107c8d7","type":"debug","z":"61c5ee22.b88f1","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":910,"y":480,"wires":[]},{"id":"1df6c50f97d2dbea","type":"serial out","z":"61c5ee22.b88f1","name":"","serial":"e13e4297edea67b8","x":940,"y":420,"wires":[]},{"id":"445effb16bf3ad09","type":"inject","z":"61c5ee22.b88f1","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[\"MSS:\",200,50,true]","payloadType":"json","x":530,"y":480,"wires":[["e08ae59281d89c61"]]},{"id":"2b3000e4.63106","type":"inject","z":"61c5ee22.b88f1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"LEDON","payloadType":"str","x":730,"y":420,"wires":[["4ce6d6acb107c8d7","1df6c50f97d2dbea"]]},{"id":"e13e4297edea67b8","type":"serial-port","serialport":"/dev/ttyACM0","serialbaud":"57600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"bin","out":"char","addchar":"0x10","responsetimeout":""}]
          

          ec41fc70-f4cf-408f-9beb-3011ed547515-image.pngc739e42e-d2e7-403e-b6da-9e10a01de1d4-image.png

          Als Type Bool den letzten Parameter im Array für die Buffer Node zu verwenden funktioniert anscheinend nur, wenn das insgesamt ein Array ist.

          8c15d429-8e73-4a2e-adc4-45d4e5a6e830-image.png

          In der Hilfe zur Parser Node steht es dann auch wohl so drin, das hier auch ein Array ausgegeben wird.
          2d1b0b7c-b148-4769-b3c2-cd2cbcfe2f9a-image.png


          Im Prinzip bekommt man den Puffer auch ohne buffer Node hin - man muss allerdings Strings getrennt vom übrigen Array behandeln:

          ca048304-6497-44e6-bb0e-bdd764138227-image.png

          Hier der Code der Function Node:

          var buffArr = [];
          var topic = msg.payload.shift();
          buffArr.push(Buffer.from(topic));
          buffArr.push(Buffer.from(msg.payload));
          msg.payload=Buffer.concat(buffArr);
          return msg;
          

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          B 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @bavarian So ansonsten habe ich es jetzt mal so hingebracht, dass das Array in einen Puffer geschrieben wird.

            f4850edb-f30d-4464-bfee-b03bd24a937b-image.png

            Diese Meldung
            2073b418-603f-4a59-852e-6406b334d7f4-image.png
            bekommst Du von der serial out Node - wenn Du einen Buffer schreiben willst, weil Buffer und String sich nicht vertragen.

            \n ist ja das Zeilenvorschubzeichen. Wenn Du das unbedingt brauchst, damit was geschickt wird, dann kann man das HEX eintragen und dann gibt es auch die Fehlermeldung beim Buffer nicht mehr:

            f4b8f87a-5c0a-4795-90f7-457573037e75-image.png

            Hier der Flow - ich hab allerdings für den Bool auch den Type Byte genommen - anders mag das Teil nicht.

            [{"id":"e08ae59281d89c61","type":"buffer-maker","z":"61c5ee22.b88f1","name":"","specification":"spec","specificationType":"ui","items":[{"name":"item1","type":"string","length":-1,"dataType":"msg","data":"payload[0]"},{"name":"item2","type":"byte","length":1,"dataType":"msg","data":"payload[1]"},{"name":"item3","type":"byte","length":1,"dataType":"msg","data":"payload[2]"},{"name":"item4","type":"byte","length":1,"dataType":"msg","data":"payload[3]"}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","x":730,"y":480,"wires":[["4ce6d6acb107c8d7","1df6c50f97d2dbea"]]},{"id":"4ce6d6acb107c8d7","type":"debug","z":"61c5ee22.b88f1","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":910,"y":480,"wires":[]},{"id":"1df6c50f97d2dbea","type":"serial out","z":"61c5ee22.b88f1","name":"","serial":"e13e4297edea67b8","x":940,"y":420,"wires":[]},{"id":"445effb16bf3ad09","type":"inject","z":"61c5ee22.b88f1","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[\"MSS:\",200,50,true]","payloadType":"json","x":530,"y":480,"wires":[["e08ae59281d89c61"]]},{"id":"2b3000e4.63106","type":"inject","z":"61c5ee22.b88f1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"LEDON","payloadType":"str","x":730,"y":420,"wires":[["4ce6d6acb107c8d7","1df6c50f97d2dbea"]]},{"id":"e13e4297edea67b8","type":"serial-port","serialport":"/dev/ttyACM0","serialbaud":"57600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"bin","out":"char","addchar":"0x10","responsetimeout":""}]
            

            ec41fc70-f4cf-408f-9beb-3011ed547515-image.pngc739e42e-d2e7-403e-b6da-9e10a01de1d4-image.png

            Als Type Bool den letzten Parameter im Array für die Buffer Node zu verwenden funktioniert anscheinend nur, wenn das insgesamt ein Array ist.

            8c15d429-8e73-4a2e-adc4-45d4e5a6e830-image.png

            In der Hilfe zur Parser Node steht es dann auch wohl so drin, das hier auch ein Array ausgegeben wird.
            2d1b0b7c-b148-4769-b3c2-cd2cbcfe2f9a-image.png


            Im Prinzip bekommt man den Puffer auch ohne buffer Node hin - man muss allerdings Strings getrennt vom übrigen Array behandeln:

            ca048304-6497-44e6-bb0e-bdd764138227-image.png

            Hier der Code der Function Node:

            var buffArr = [];
            var topic = msg.payload.shift();
            buffArr.push(Buffer.from(topic));
            buffArr.push(Buffer.from(msg.payload));
            msg.payload=Buffer.concat(buffArr);
            return msg;
            
            B Offline
            B Offline
            Bavarian
            schrieb am zuletzt editiert von
            #5

            @mickym

            Ich kann auf der Arduino Seite nichts ändern, nicht weil ich nicht will sondern weil es sonst zu einer anderen Software nicht mehr passt.

            Das mit dem \n ist gelöst mit 0x10 kann ich die Strings senden und bekomme auch mit dem Buffer keine Meldung mehr :+1:
            Leider sehen aber auch nur die Debug Meldungen gut aus, es geht nichts raus.
            Da der Arduino verbaut ist, sehe ich die RX/TX LED nicht, also noch eine Arduino genomme, Programm drauf und LED's ansehen.
            String mit 0x10 angehangen und LED blinkt auf.
            Ansonsten bleibt die RX LED aus, Debug Message kommt aber Serial passiert nix.

            Ich denke bevor ich mit dem Inhalt der Nachrichten weiter mache die ich senden will, sollte ich erstmal sicherstellen, dass da
            aus dem Buffer auch Seriell gesendet wird.

            mickymM B 2 Antworten Letzte Antwort
            0
            • B Bavarian

              @mickym

              Ich kann auf der Arduino Seite nichts ändern, nicht weil ich nicht will sondern weil es sonst zu einer anderen Software nicht mehr passt.

              Das mit dem \n ist gelöst mit 0x10 kann ich die Strings senden und bekomme auch mit dem Buffer keine Meldung mehr :+1:
              Leider sehen aber auch nur die Debug Meldungen gut aus, es geht nichts raus.
              Da der Arduino verbaut ist, sehe ich die RX/TX LED nicht, also noch eine Arduino genomme, Programm drauf und LED's ansehen.
              String mit 0x10 angehangen und LED blinkt auf.
              Ansonsten bleibt die RX LED aus, Debug Message kommt aber Serial passiert nix.

              Ich denke bevor ich mit dem Inhalt der Nachrichten weiter mache die ich senden will, sollte ich erstmal sicherstellen, dass da
              aus dem Buffer auch Seriell gesendet wird.

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @bavarian Probier mal statt 0x10, 0x0A ich hab da dezimal statt hex 10 dezimal 10 genommen, sorry.

              c0fa10d3-f72d-4d61-b05b-a11dee826556-image.png

              Alternativ auch CR - habe ich auch gelesen - also 0x0D.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              1 Antwort Letzte Antwort
              0
              • B Bavarian

                @mickym

                Ich kann auf der Arduino Seite nichts ändern, nicht weil ich nicht will sondern weil es sonst zu einer anderen Software nicht mehr passt.

                Das mit dem \n ist gelöst mit 0x10 kann ich die Strings senden und bekomme auch mit dem Buffer keine Meldung mehr :+1:
                Leider sehen aber auch nur die Debug Meldungen gut aus, es geht nichts raus.
                Da der Arduino verbaut ist, sehe ich die RX/TX LED nicht, also noch eine Arduino genomme, Programm drauf und LED's ansehen.
                String mit 0x10 angehangen und LED blinkt auf.
                Ansonsten bleibt die RX LED aus, Debug Message kommt aber Serial passiert nix.

                Ich denke bevor ich mit dem Inhalt der Nachrichten weiter mache die ich senden will, sollte ich erstmal sicherstellen, dass da
                aus dem Buffer auch Seriell gesendet wird.

                B Offline
                B Offline
                Bavarian
                schrieb am zuletzt editiert von
                #7

                @bavarian

                :the_horns:
                DAS war es !
                Statt \n eben nicht leer lassen sonden 0x0a senden :sunglasses:

                Ich hab es nun als im Inject als JSON ["MSS:",89,27,1] das klappt, nun wird das ja von mir per klick ausgelöst.
                Der JSON Datenpunkt sieht ja genauso aus, ändert sich aber ein Wert im DP wird nicht automatisch gesendet.
                Muss ich hierzu noch was beachten?
                Irgendein trigger setzten, wenn sich was im DP ändert bitte senden?

                mickymM 1 Antwort Letzte Antwort
                0
                • B Bavarian

                  @bavarian

                  :the_horns:
                  DAS war es !
                  Statt \n eben nicht leer lassen sonden 0x0a senden :sunglasses:

                  Ich hab es nun als im Inject als JSON ["MSS:",89,27,1] das klappt, nun wird das ja von mir per klick ausgelöst.
                  Der JSON Datenpunkt sieht ja genauso aus, ändert sich aber ein Wert im DP wird nicht automatisch gesendet.
                  Muss ich hierzu noch was beachten?
                  Irgendein trigger setzten, wenn sich was im DP ändert bitte senden?

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @bavarian Na statt der Inject Node nimmst Du doch eine iobroker In Node und wenn der Wert neu geschrieben wird, dann triggert die Node auch. Vielleicht hast Du in der iobroker In Node was ausgefiltert zum Beispiel ACK=true oder so.

                  Du musst halt jetzt den ganzen Flow nehmen - iobroker in- json Node die das in Objekt konvertiert und dann halt in den Buffer Maker oder function Node.

                  Wenn all Events in der iobroker In Node spezifiziert ist, dann wird auch gesendet, selbst wenn sich gar nichts ändert und der Wert nur neu geschrieben wird.

                  1597f955-9306-4aea-8215-96d36a5e1df6-image.png

                  funktioniert bei mir einwandfrei - hier der gesamte Flow - nur das halt bei Dir hinten die serial Node dranhängt:

                  ec1fc68c-fce5-4ac9-a60e-3d3ea9bb9c0f-image.png

                  Du sendest ja nicht einzelne Werte im JSON - sondern immer den Datenpunkt und der enthält ja den kompletten JSON String.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  B 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @bavarian Na statt der Inject Node nimmst Du doch eine iobroker In Node und wenn der Wert neu geschrieben wird, dann triggert die Node auch. Vielleicht hast Du in der iobroker In Node was ausgefiltert zum Beispiel ACK=true oder so.

                    Du musst halt jetzt den ganzen Flow nehmen - iobroker in- json Node die das in Objekt konvertiert und dann halt in den Buffer Maker oder function Node.

                    Wenn all Events in der iobroker In Node spezifiziert ist, dann wird auch gesendet, selbst wenn sich gar nichts ändert und der Wert nur neu geschrieben wird.

                    1597f955-9306-4aea-8215-96d36a5e1df6-image.png

                    funktioniert bei mir einwandfrei - hier der gesamte Flow - nur das halt bei Dir hinten die serial Node dranhängt:

                    ec1fc68c-fce5-4ac9-a60e-3d3ea9bb9c0f-image.png

                    Du sendest ja nicht einzelne Werte im JSON - sondern immer den Datenpunkt und der enthält ja den kompletten JSON String.

                    B Offline
                    B Offline
                    Bavarian
                    schrieb am zuletzt editiert von
                    #9

                    @mickym

                    LÄUFT!

                    Problem war noch ein bool im Script.

                    Vielen Dank Michael!!!

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • B Bavarian

                      @mickym

                      LÄUFT!

                      Problem war noch ein bool im Script.

                      Vielen Dank Michael!!!

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @bavarian Na freut mich - zusammen bekommt man das meist hin - auch wenn ich kein Arduino Board habe. ;) Ich lerne ja auch immer - nächstes Mal weiss ich dass man 0x0a in die serielle Node eintragen muss, wenn man Buffer überträgt - ausserdem habe ich mich ja wieder etwas mit der Buffer Node und der JS Buffer Funktion heute auseinandergesetzt. Dieses Wissen ist mir ja Gewinn genug und deswegen mache ich so was ja auch gerne, weil es mein eigenes Wissen und die Erfahrung vergrößert.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      H 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @bavarian Na freut mich - zusammen bekommt man das meist hin - auch wenn ich kein Arduino Board habe. ;) Ich lerne ja auch immer - nächstes Mal weiss ich dass man 0x0a in die serielle Node eintragen muss, wenn man Buffer überträgt - ausserdem habe ich mich ja wieder etwas mit der Buffer Node und der JS Buffer Funktion heute auseinandergesetzt. Dieses Wissen ist mir ja Gewinn genug und deswegen mache ich so was ja auch gerne, weil es mein eigenes Wissen und die Erfahrung vergrößert.

                        H Nicht stören
                        H Nicht stören
                        Hansi1234
                        schrieb am zuletzt editiert von
                        #11

                        Wäre es auf diese Weise auch möglich einen Fingerprint Reader (zfm 20/40/60 etc) zu integrieren?

                        1 Antwort Letzte Antwort
                        0
                        • mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @hansi1234 sagte in Daten per Serieller Schnittstelle übertragen:

                          Es scheint wohl Libaries für Arduino bzgl. fingerprint zu geben - aber das müssen dann wohl Leute mit so einem Board sagen und wie die Befehle aussehen müssen. Es scheint aber üblich zu sein über die serielle Schnittstelle mit dem Board zu kommunzieren. Gibt auch im Netz einige Beispiele wie Fingerprint Sensoren an so ein Arduino angeschlossen wurden.

                          Ich kann dazu leider nichts beitragen.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          1 Antwort Letzte Antwort
                          1
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          577

                          Online

                          32.6k

                          Benutzer

                          82.1k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          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