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. MSG Payload werte auslesen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

MSG Payload werte auslesen

Geplant Angeheftet Gesperrt Verschoben Node-Red
24 Beiträge 4 Kommentatoren 22.1k Aufrufe 5 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.
  • mickymM mickym

    @frankyboy73 Ohne Garantie hier mal ein Versuch der Vereinfachung:

    screen.png

    [
        {
            "id": "413cec0e.1c8994",
            "type": "inject",
            "z": "dce8fa20.2e93c8",
            "name": "Alle 5 Minuten",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "300",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "sonoff.0.dummy.alive",
            "payload": "true",
            "payloadType": "bool",
            "x": 120,
            "y": 1380,
            "wires": [
                [
                    "7fab1454.5756bc"
                ]
            ]
        },
        {
            "id": "7fab1454.5756bc",
            "type": "ioBroker list",
            "z": "dce8fa20.2e93c8",
            "name": "Sonoffs alive",
            "topic": "sonoff.0.*.alive",
            "objType": "state",
            "regex": "",
            "asArray": "false",
            "onlyIDs": "false",
            "withValues": "true",
            "x": 320,
            "y": 1380,
            "wires": [
                [
                    "975325ba.b9aa58"
                ]
            ]
        },
        {
            "id": "dbf63722.beef58",
            "type": "trigger",
            "z": "dce8fa20.2e93c8",
            "name": "",
            "op1": "verbunden",
            "op2": "nicht verbunden",
            "op1type": "str",
            "op2type": "str",
            "duration": "6",
            "extend": true,
            "overrideDelay": false,
            "units": "min",
            "reset": "",
            "bytopic": "topic",
            "topic": "topic",
            "outputs": 1,
            "x": 780,
            "y": 1380,
            "wires": [
                [
                    "5fd5c116.79242"
                ]
            ]
        },
        {
            "id": "5fd5c116.79242",
            "type": "change",
            "z": "dce8fa20.2e93c8",
            "name": "Nachricht erstellen",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "topic & \" \" & payload ",
                    "tot": "jsonata"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 990,
            "y": 1380,
            "wires": [
                [
                    "846bc903.448268"
                ]
            ]
        },
        {
            "id": "846bc903.448268",
            "type": "debug",
            "z": "dce8fa20.2e93c8",
            "name": "",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "false",
            "statusVal": "",
            "statusType": "auto",
            "x": 1190,
            "y": 1380,
            "wires": []
        },
        {
            "id": "975325ba.b9aa58",
            "type": "switch",
            "z": "dce8fa20.2e93c8",
            "name": "msg.payload.val = true",
            "property": "payload.val",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "true"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 1,
            "x": 560,
            "y": 1380,
            "wires": [
                [
                    "dbf63722.beef58"
                ]
            ]
        }
    ]
    

    Ich habe es gerade getestet - das funktioniert tatsächlich für jedes msg.topic. Die Anzahl der Nachrichten die im trigger zurückgehalten werden, werden sogar angezeigt.

    screen.png

    Mich begeistert dieses Programm immer wieder. ;) - Die 1 min hier war nur zum Test -damit ich keine 6 Minuten warten musste. ;)

    Korrektur: Ich hatte noch einen Denkfehler drin - Du musst doch eine switch - aber mit true zwischenschalten. Den muss man halt ggf. noch anpassen - je nachdem ob das true als Boolean oder als String kommt.

    Alternativ kann man auch im trigger node - den Auslöser zurücksetzen. Indem Du msg.payload.val über eine Change Node in msg.payload setzt -

    F Offline
    F Offline
    frankyboy73
    schrieb am zuletzt editiert von frankyboy73
    #15

    @mickym Hi, vielen Dank, habe es mal nachgebaut. Sieht bis jetzt gut aus, auch simulierte Ausfälle werden mir gemeldet. Lasse das jetzt erst mal so laufen.
    Bei den Injekt Nodes dachte ich immer ich müsste sie einmal anschubsen damit der Intervall läuft, deshalb habe ich nen Cron verwendet. Habe jetzt festgestellt, das es ja nicht so ist und der Intervall auch so läuft.
    Jetzt wollte ich das gleiche noch mit meinen Deconz (Zigbee) Sensoren umsetzen, damit habe ich nur leider das Problem das die Objekt Ordner nur Nummern und nicht so wie bei den Sonoffs spezifische Namen haben. Wenn ich jetzt das Topic auslese kriege ich nur Nummern und muss erst mal nachschauen welcher Sensor es ist. Kann man da auch irgendwie die Namen der Objekte auslesen oder müsste ich die Ordner alle umbenennen, wobei ich nicht weiß ob das irgendwelche negativen Auswirkungen hätte.Sensoren.png

    Schöne Grüße Frank

    mickymM 2 Antworten Letzte Antwort
    0
    • F frankyboy73

      @mickym Hi, vielen Dank, habe es mal nachgebaut. Sieht bis jetzt gut aus, auch simulierte Ausfälle werden mir gemeldet. Lasse das jetzt erst mal so laufen.
      Bei den Injekt Nodes dachte ich immer ich müsste sie einmal anschubsen damit der Intervall läuft, deshalb habe ich nen Cron verwendet. Habe jetzt festgestellt, das es ja nicht so ist und der Intervall auch so läuft.
      Jetzt wollte ich das gleiche noch mit meinen Deconz (Zigbee) Sensoren umsetzen, damit habe ich nur leider das Problem das die Objekt Ordner nur Nummern und nicht so wie bei den Sonoffs spezifische Namen haben. Wenn ich jetzt das Topic auslese kriege ich nur Nummern und muss erst mal nachschauen welcher Sensor es ist. Kann man da auch irgendwie die Namen der Objekte auslesen oder müsste ich die Ordner alle umbenennen, wobei ich nicht weiß ob das irgendwelche negativen Auswirkungen hätte.Sensoren.png

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #16

      @frankyboy73 sagte in MSG Payload werte auslesen:

      Gibt es denn in den Ordnern (also weiter unten in der Hierachie? ) keinen Wert der mit Klartext das Gerät bezeichnet?

      Ansonsten gäbe es noch folgende Alternativen. Du erstellst selbst ein JSON String bzw. Java Objekt als Übersetzungstabelle oder machst Dir eine herstellerunabhängige Alias-Struktur - das ist zwar erst mal eine Menge Aufwand aber dann hast Du immer die gleiche Struktur. Wenn ein Hersteller diese Struktur nicht anbietet bleibt sie halt leer.

      Ich mach mal einen Screenshot - wie ich das gelöst habe:

      screen.png

      Oben sind das Parameter aus dem Shelly Baum - unten aus dem Tasmota Baum

      Hab aber auch nicht alles drin - z. Bsp Zigbees sind aber auch streng genommen keine Schalter und Relais. ;)

      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
      • F frankyboy73

        @mickym Hi, vielen Dank, habe es mal nachgebaut. Sieht bis jetzt gut aus, auch simulierte Ausfälle werden mir gemeldet. Lasse das jetzt erst mal so laufen.
        Bei den Injekt Nodes dachte ich immer ich müsste sie einmal anschubsen damit der Intervall läuft, deshalb habe ich nen Cron verwendet. Habe jetzt festgestellt, das es ja nicht so ist und der Intervall auch so läuft.
        Jetzt wollte ich das gleiche noch mit meinen Deconz (Zigbee) Sensoren umsetzen, damit habe ich nur leider das Problem das die Objekt Ordner nur Nummern und nicht so wie bei den Sonoffs spezifische Namen haben. Wenn ich jetzt das Topic auslese kriege ich nur Nummern und muss erst mal nachschauen welcher Sensor es ist. Kann man da auch irgendwie die Namen der Objekte auslesen oder müsste ich die Ordner alle umbenennen, wobei ich nicht weiß ob das irgendwelche negativen Auswirkungen hätte.Sensoren.png

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #17

        @frankyboy73 Ich habe noch was entdeckt - soweit ich sehe enthält doch der Name den Klartext. Wenn Du mit dem iobroker list node arbeitest bekommst Du doch immer die kompletten Objekte. Unter common.name sollte doch der name im Klartext stehen.

        Ich habe gerade festgestellt, dass wen der iobroker list topic mit dem * auf einen Ordner verweist, dann werden alle Objekte unter dem Ordner aufgelistet, d.h Du musst ggf. sowieso filtern.

        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.

        F 2 Antworten Letzte Antwort
        0
        • mickymM mickym

          @frankyboy73 Ich habe noch was entdeckt - soweit ich sehe enthält doch der Name den Klartext. Wenn Du mit dem iobroker list node arbeitest bekommst Du doch immer die kompletten Objekte. Unter common.name sollte doch der name im Klartext stehen.

          Ich habe gerade festgestellt, dass wen der iobroker list topic mit dem * auf einen Ordner verweist, dann werden alle Objekte unter dem Ordner aufgelistet, d.h Du musst ggf. sowieso filtern.

          F Offline
          F Offline
          frankyboy73
          schrieb am zuletzt editiert von
          #18

          @mickym Hi, die Alias sind schon mal ne gute Idee, mal schauen wenn ich ganz viel Zeit habe, ob ich das umsetzte.
          Die List Node kann mir auch den Namen auslesen wenn ich sie richtig einstelle. Danke für den Denkanstoß.
          Bei den Zigbee Sensoren ist es so das sie sich in bestimmten Intervallen melden, der Batterienwert wird aktualisiert. Das werte ich mit ner Input Node und nem Trigger aus. Gibt es eine bestimmte Zeit keine Aktualisierung, sage ich Sensor soundso meldet sich nicht. Da hatte ich bis jetzt für jede Node nen eigenen Trigger und ne festen Text verwendet. Durch deine Idee mit der List Node führe ich die Input Nodes jetzt alle durch einen Trigger bei dem ich sage "ürgsprüngliches msg senden", mit ner List Node dahinter, bei der ich das Topic Feld frei lasse. Damit wird jetzt das Topic Feld von der Input Node beschrieben die sich nicht mehr meldet und ich kann den Namen auslesen. Super, ich liebe Node Red. Klappt bis jetzt einwandfrei.
          Sorry dafür das ich immer noch ne Funktion Node zum Text erstellen nutze, aber damit kenne ich mich besser aus.:grin:
          Batterie1.jpg
          Batterie2.jpg
          Batterie3.jpg
          Batterie4.jpg

          Schöne Grüße Frank

          mickymM 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @frankyboy73 Ich habe noch was entdeckt - soweit ich sehe enthält doch der Name den Klartext. Wenn Du mit dem iobroker list node arbeitest bekommst Du doch immer die kompletten Objekte. Unter common.name sollte doch der name im Klartext stehen.

            Ich habe gerade festgestellt, dass wen der iobroker list topic mit dem * auf einen Ordner verweist, dann werden alle Objekte unter dem Ordner aufgelistet, d.h Du musst ggf. sowieso filtern.

            F Offline
            F Offline
            frankyboy73
            schrieb am zuletzt editiert von frankyboy73
            #19

            @mickym Zusätzlich kriege ich jetzt noch ne Meldung wenn eine der Batterien unter 10% ist mit dem passenden Namen. Ich musste nur noch die Reihenfolge der Nodes ändern.
            Batterie5.jpg

            Schöne Grüße Frank

            1 Antwort Letzte Antwort
            0
            • F frankyboy73

              @mickym Hi, die Alias sind schon mal ne gute Idee, mal schauen wenn ich ganz viel Zeit habe, ob ich das umsetzte.
              Die List Node kann mir auch den Namen auslesen wenn ich sie richtig einstelle. Danke für den Denkanstoß.
              Bei den Zigbee Sensoren ist es so das sie sich in bestimmten Intervallen melden, der Batterienwert wird aktualisiert. Das werte ich mit ner Input Node und nem Trigger aus. Gibt es eine bestimmte Zeit keine Aktualisierung, sage ich Sensor soundso meldet sich nicht. Da hatte ich bis jetzt für jede Node nen eigenen Trigger und ne festen Text verwendet. Durch deine Idee mit der List Node führe ich die Input Nodes jetzt alle durch einen Trigger bei dem ich sage "ürgsprüngliches msg senden", mit ner List Node dahinter, bei der ich das Topic Feld frei lasse. Damit wird jetzt das Topic Feld von der Input Node beschrieben die sich nicht mehr meldet und ich kann den Namen auslesen. Super, ich liebe Node Red. Klappt bis jetzt einwandfrei.
              Sorry dafür das ich immer noch ne Funktion Node zum Text erstellen nutze, aber damit kenne ich mich besser aus.:grin:
              Batterie1.jpg
              Batterie2.jpg
              Batterie3.jpg
              Batterie4.jpg

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von
              #20

              @frankyboy73 Genau bei den Zigbees habe ich ein Interval von 2 Std. genutzt und das funktioniert ganz gut.

              Ursprünglich war ich etwas verwirrt bei Deinem ersten Flow - weil Du den Trigger vor anstelle hinter die List Node gestellt hast, aber im letzten Flow hast Du es ja dann korrigiert.

              Und dafür dass Du Deine Function Node für die Textausgabe nutzt - ist ja OK. Ich mach mal einen Screenshot wie es mit einem Change Node funktionieren würde. Da ich ja jetzt den Inhalt Deiner Function Node kenne. ;)

              screen.png

              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.

              F 1 Antwort Letzte Antwort
              1
              • mickymM mickym

                @frankyboy73 Genau bei den Zigbees habe ich ein Interval von 2 Std. genutzt und das funktioniert ganz gut.

                Ursprünglich war ich etwas verwirrt bei Deinem ersten Flow - weil Du den Trigger vor anstelle hinter die List Node gestellt hast, aber im letzten Flow hast Du es ja dann korrigiert.

                Und dafür dass Du Deine Function Node für die Textausgabe nutzt - ist ja OK. Ich mach mal einen Screenshot wie es mit einem Change Node funktionieren würde. Da ich ja jetzt den Inhalt Deiner Function Node kenne. ;)

                screen.png

                F Offline
                F Offline
                frankyboy73
                schrieb am zuletzt editiert von
                #21

                @mickym Ah, ok, dann werde ich das jetzt mal mit der change Node umsetzen. Danke. Dann werde ich auch mal so nach und nach meine anderen Funktion Nodes (Texterstellung) dadurch ersetzen. Und für die Zukunft habe ich ja jetzt deine Vorlage.

                Schöne Grüße Frank

                mickymM 1 Antwort Letzte Antwort
                0
                • F frankyboy73

                  @mickym Ah, ok, dann werde ich das jetzt mal mit der change Node umsetzen. Danke. Dann werde ich auch mal so nach und nach meine anderen Funktion Nodes (Texterstellung) dadurch ersetzen. Und für die Zukunft habe ich ja jetzt deine Vorlage.

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #22

                  @frankyboy73 sagte in MSG Payload werte auslesen:

                  @mickym Ah, ok, dann werde ich das jetzt mal mit der change Node umsetzen. Danke. Dann werde ich auch mal so nach und nach meine anderen Funktion Nodes (Texterstellung) dadurch ersetzen. Und für die Zukunft habe ich ja jetzt deine Vorlage.

                  Musst Du nicht. ;) - Da machst ja auch nicht viel kaputt in Deiner Übersicht. Um was es mir ging habe ich ja am Anfang dieses Threads mit einem Beispiel versucht zu verdeutlichen. Bei komplexen Funktionen nimmt man sich halt die Möglichkeiten der Visualisierung eines Programmflows - das ja eine der Stärken von Node-Red ist. Letztlich ist jedes Programm, ob Blockly oder Javascript oder auch sonstiges Programm ja eine Abfolge von Anweisungen, die abgearbeitet werden und somit auch einen Flow darstellen.

                  Manchmal geht es ja auch nicht anders und deswegen gibt es ja auch die Function Nodes. Ich kann auch nur aus eigener Erfahrung sagen, dass ich am Anfang auch viele Function Nodes genutzt habe und dann irgendwann festgestellt habe, dass ich immer weniger verwende.

                  Ich nutze auch manchmal function Nodes die gar nichts machen (also nur "return msg") um einen Flow grafisch besser zu strukturieren.

                  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 Offline
                    B Offline
                    BF532
                    schrieb am zuletzt editiert von BF532
                    #23

                    Hallo Leute,
                    vielleicht könnt ihr mir ja weiterhelfen. Ich bekomme es nicht zusammen hier einzelne Objekte z.b die Temperatur als Zahl für weitere Verarbeitung raus zu bekommen.
                    78644682-b126-445e-b97a-5eed961483da-image.png

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • B BF532

                      Hallo Leute,
                      vielleicht könnt ihr mir ja weiterhelfen. Ich bekomme es nicht zusammen hier einzelne Objekte z.b die Temperatur als Zahl für weitere Verarbeitung raus zu bekommen.
                      78644682-b126-445e-b97a-5eed961483da-image.png

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #24

                      @bf532
                      müsste sein:

                      msg.payload.devices[0].modules[2].dashboard_data.Temperature

                      also change Node mit setze

                      msg.payload auf

                      msg.payload.devices[0].modules[2].dashboard_data.Temperature

                      musst Dich halt ggf. mit debug Nodes durchhangeln. also erst debug Node auf msg.payload.devices[0] usw.

                      Es gibt ausserdem einen ganz einfachen Trick:

                      geh neben dem Wert der Dich interessiert und dann taucht rechts ein Icon auf: Pfad kopieren - dann hast Du den Pfad in der Zwischenablage

                      Hier noch zur Illustration - auch wenn ich mich oben vertan haben sollte. Also einfach neben dem Wert der von Interesse ist, dann den Pfad kopieren:

                      screen.png

                      siehe rechts neben dem Screenshot. Dann in eine Change Node den Pfad setzen:

                      3e544e74-4afb-44a0-a2f6-2e03ba42554c-image.png

                      und schon hast Du den Wert extrahiert.

                      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
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      818

                      Online

                      32.4k

                      Benutzer

                      81.5k

                      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