Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Node-Red Hilfe

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Node-Red Hilfe

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      stefan22 @stefan22 last edited by

      @stefan22 Dann kommt die msg.payload zur ersten Switch-Node.
      Die bewirkt das du alle Objekt mit Nr. (kriege ich noch hin) das W ist die Leerstelle
      das d die erste Zahl dann , dann die zweite Zahl da keine Leerstelle nach dem Komma wird diese in Klammern gesetzt ???????

      Woher weiß man das ????? Lach

      mickym 1 Reply Last reply Reply Quote 0
      • S
        stefan22 @mickym last edited by

        @mickym Ahh ok sprich es werden nur einzelne Objekte erzeugt die mit der msg.payload weitergeben werden

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @stefan22 last edited by mickym

          @stefan22 Das nutzen von regulären Ausdrücken ist wirklich nicht leicht - und ich behelfe mir zur Analyse immer mit einer Webseite.
          https://regexr.com/

          mit dem switch-Node filtere ich also alle Nachrichten aus, die dem Schema genügen.

          Mit einer Klammer kannst Du gruppieren und dann mit $1 auf den Inhalt der Gruppe zugreifen. - das habe ich dann vor allen Dingen in der Change Node gemacht. In der Switch Node hätte ich die Klammern gar nicht gebraucht zum Matchen - das war wohl Copy & Paste - Entschuldigung.

          Ich habe das alles mal hier in einem ScreenShot festgehalten:

          screen.png

          S 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @stefan22 last edited by

            @stefan22 said in Node-Red Hilfe:

            @mickym Ahh ok sprich es werden nur einzelne Objekte erzeugt die mit der msg.payload weitergeben werden

            Du kannst es einzelne Nachrichtenobejkte nennen.

            Ein Nachrichtenobjekt kannst Du Dir ebenfalls mit der Debug Node anschauen - in dem Du Dir nicht die Payload - sondern das ganze Objekt ausgeben lässt. Dann siehst Du dass die payload nur ein Bestandteil ist.

            1 Reply Last reply Reply Quote 0
            • S
              stefan22 @mickym last edited by

              @mickym heisst du Gruppierst in der Switch nach dem Komma .
              In der änder gruppierst du mal vor dem Komma und hinter dem Komma und greifst mit der $1 jeweils auf die Gruppierungen zu um dann weiter unter die nach dem Komma entstehend 1 und 0 in Boolen umzuwandeln , sprich true und false
              Was hat das dann mit msg.topic auf sich. msg.payload ist die kommende von der Switch-Node.
              Kommt das durch boolean ???

              mickym 3 Replies Last reply Reply Quote 0
              • mickym
                mickym Most Active @stefan22 last edited by

                @stefan22 Nein habe ich gerade in der Erklärung korrigiert. Im Switch kannst die Klammern weglassen. Das war Copy & Paste. Sorry.

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @stefan22 last edited by mickym

                  @stefan22 said in Node-Red Hilfe:

                  @mickym heisst du Gruppierst in der Switch nach dem Komma .
                  In der änder gruppierst du mal vor dem Komma und hinter dem Komma und greifst mit der $1 jeweils auf die Gruppierungen zu um dann weiter unter die nach dem Komma entstehend 1 und 0 in Boolen umzuwandeln , sprich true und false
                  Was hat das dann mit msg.topic auf sich. msg.payload ist die kommende von der Switch-Node.
                  Kommt das durch boolean ???

                  Nun mit dem Topic - beschreibst Du in der Regel, was den die Nachricht bedeuten soll.
                  Danach selektiere ich ja die einzelnen Steckdosen im großen Switch Node.

                  Das topic ist also Nr. 1, Nr. 2 usw. - siehst Du auch in rot und kleiner Schrift immer als Überschrift in Deinen Debug nodes.
                  Ja deshalb nehme ich am Anfang das vorne in Klammern als Topic und dann hinten als payload. Diese payload enthält nun den String "0" oder "1" denn ich dann durch wahr oder falsch ersetze.

                  Die eigentliche Info ist ja nur das 0 oder 1 - das ich übersetze - das Topic beschreibt aber welche Steckdose denn nun ein oder ausgeschaltet ist.

                  Irgendwann wirst Du noch FAN von NodeRED und Du siehst was man alles ohne Funktions-Node und ProgrammCode machen kann. Und hinter jede Node kannst eine Debug Node setzen um zu sehen, was passiert. 😉

                  S 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @stefan22 last edited by mickym

                    @stefan22 Die Change Node ist tatsächlich bissi Kompliziert - aber das wird auch nacheinender abgearbeitet.

                    Es sind ja 5 Regeln:

                    1. Da es bislang keine msg.topic gibt - kopiere ich die msg.payload in msg.topic.
                    2. Ich extrahiere ändere msg.topic das nur noch der vordere Teil (Klammer) drin steht - also msg.topic= "Nr. 2"
                    3. Dann änder ich die msg.payload - dass diese nur noch "0" oder "1" enthält hintere Teil (Klammer) also msg.payload="1"
                    4. Wenn msg.payload = "0" dann ändere msg.payload=true
                    5. Wenn msg.payload = "1" dann ändere msg.payload= false

                    Du kannst "0" auch in "aus" und "1" in "an" übersetzen - egal was Du halt brauchst.

                    Wie gesagt mach Dir Debug Nodes hinter jede Node - oder verdrahte diese mehrfach und Du siehst wie man die Nachrichten so verändert wie man sie braucht. 😉

                    1 Reply Last reply Reply Quote 0
                    • S
                      stefan22 @mickym last edited by

                      @mickym Sprich die change-Node änder gibt dann nur die msg.topic aus oder besteht die msg.payload weiterhin ???

                      S mickym 2 Replies Last reply Reply Quote 0
                      • S
                        stefan22 @stefan22 last edited by

                        @stefan22 quatsch die msg.topic bleibt in der change-node ändern und wird nur zur übergabe genommen oder ?

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @stefan22 last edited by mickym

                          @stefan22 Es wird immer das ganze msg.objekt ausgegeben - mach eine Debug Node hinten dran und dann ganzes Nachrichtenobjekt und Du siehst das mit jeder Nachricht msg.payload und msg.topic ausgegeben wird.

                          Du kannst auch beliebig weitere Objekte in Deinem msg Objekt definieren.

                          Wenn Du in Deiner Change-Node noch eine msg.text auf "Hallo" festlegst, dann enthält Dein Nachrichtenobjekt ein msg.topic, ein msg.payload und ein msg.text

                          Hier mal wieder ein Screenshot der das geschrieben in einem Bild verdeutlicht:

                          screen.png

                          Wie Du auch siehst, befindet sich das msg.topic als Überschrift nochmal in roter Schrift in der Ausgabe der Debug Node.

                          S 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @stefan22 last edited by mickym

                            @stefan22 said in Node-Red Hilfe:

                            @stefan22 quatsch die msg.topic bleibt in der change-node ändern und wird nur zur übergabe genommen oder ?

                            Es werden grundsätzlich nur ganze MSG (also Nachrichten objekte) weitergegeben und nicht nur Teile aus dem Nachrichtenobjekt!!!

                            Du wirst sehen, was das für immense Vorteile hat. So nutze ich das zum Beispiel um teilweise die Herkunft einer Nachricht mitzugeben oder wenn ich einen neunen Wert auslesen, einen alten zu speichern um den alten und neuen Wert miteinander zu verarbeiten usw.

                            1 Reply Last reply Reply Quote 0
                            • S
                              stefan22 @mickym last edited by

                              @mickym Ok also ist die msg.topic ein weiteres Nachrichtenobjekt. Die msg.topic kann ich quasi immer überall durch Festlegen erzeugen.Und dieses Nachrichtenobjekt wird von manchen Nodes vorausgesetzt.

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @stefan22 last edited by

                                @stefan22 Nein es ist kein weiteres Nachrichtenobjekt - sondern gehört zu dem gleichen Nachrichtenobjekt, dass auch die payload enthält,

                                das Object ist also so definiert:

                                var msg = {topic:"Dies ist ein Topic", payload:"Dies ist die payload"};

                                und zugreifen tust Du über msg.topic oder msg.payload.

                                Es sind Bestandteile eines Nachrichtenobjektes und keines zweiten.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  stefan22 @mickym last edited by

                                  @mickym ahhhhh jetzt. Sprich die variable msg ist das ganze und beinhaltet die Topic und die Payload. Diese kann ich aber unterschiedlich oder getrennt von einander für Inhalte nutzen.

                                  mickym 2 Replies Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @stefan22 last edited by mickym

                                    @stefan22 Genau. 😄 Der Kandidat hat 100 Punkte.

                                    Ich hab Dir mal die Steckdose 1 Debug Node in dem Flow als Objekt ausgeben lassen und Du siehst dass das Topic Nr.1 noch weiter enthalten ist:

                                    screen.png

                                    In dem obigen Beispiel siehst Du auch dass die split node noch weitere Objekte dem msg Objekt hat zukommen lassen, nämlich msg.parts - dieses dienen zum Beispiel einer JOIN Node die Nachrichten wieder zusammenzufügen - brauchen wir aber nicht.

                                    Ein weiterer Bestandteil eines msg Objektes ist die interne _msg.id - die nutzt aber nodeRed intern um eine Nachricht genau zu identifizieren.

                                    Wie gesagt Du kannst jederzeit - ein Nachrichtenobjekt mit beliebigen weiteren Objekten/Parametern ergänzen und die werden auch in der Regel alle weitergegeben ausser ein node - erstellt ein komplett neues Nachrichtenobjekt.

                                    1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @stefan22 last edited by mickym

                                      @stefan22 said in Node-Red Hilfe:

                                      @mickym ahhhhh jetzt. Sprich die variable msg ist das ganze und beinhaltet die Topic und die Payload. Diese kann ich aber unterschiedlich oder getrennt von einander für Inhalte nutzen.

                                      und ja auch wenn Du die unterschiedlich nutzen kannst - so sind halt diese beiden in Ihrer Funktion vordefiniert - sprich die meisten Nodes gehen davon aus, dass das Topic die Sache / Herkunft der Nachricht beschreibt, die mit dem Nachrichtenobjekt einhergeht und die payload den Wert den die Sache hat.

                                      In unserem Fall ist das Topic also die Steckdose Nr. X und die payload der Zustand oder Wert ob die Steckdose ein oder ausgeschaltet ist.

                                      Bei einem Sensor wie einem Thermometer wird das Topic beschreiben, welches Thermometer es ist und die Payload die aktuelle Temperatur.

                                      Deine UDP node wird als topic wahrscheinlich die IP Adresse enthalten und als payload eben diesen String. usw,

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        stefan22 @mickym last edited by

                                        @mickym Moin. Soooo ich hab es auch mal wieder hier her geschafft. Jetzt dachte ich ich schaumal ob ich das mit dem nächsten Projekt alleine hinbekomme , aber ich hab da noch meine Probleme, irgendwie steh ich auf dem Kriegsfuß mit json.
                                        Anbei mal ein Bild. Wie bekomme ich da die einzelne Werte raus, damit ich mit diesen Arbeiten kann ?????
                                        Wann nehm ich ne Json Node , wann ne Split-Node ???
                                        Und kann es sein das gewisse Sachen bei manchen Browsern nicht gehen, sprich beim Programmieren der Node ?

                                        Gruss Stefan

                                        KeineAhunung.png

                                        mickym 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @stefan22 last edited by mickym

                                          @stefan22 Mit dieser Abfrage bekommst Du doch nur einen Wert (Value) innerhalb eines Objektes raus. BSH.Common.EnumType. PowerState.On - also On
                                          Wenn Du das alleine haben willst einfach: einen change node - Festlegen msg.payload auf msg.payload.value. Dann kannst auch noch übersetzten mit Change Node Ändern BSH.Common.EnumType. PowerState.On

                                          JSON ist erst mal einen String und was Du siehst - ist da ein Objekt und kein String (siehst Du ja msg.payload.Object). Darauf greifst Du dann einfach zu mit msg.payload.<Eigenschaft des Objektes> also zum Beispiel: value.

                                          Und Du brauchst doch nur 1 Nachricht weder was zum aufteilen noch zusammenzufassen.

                                          S 2 Replies Last reply Reply Quote 0
                                          • S
                                            stefan22 @mickym last edited by

                                            @mickym Hm Ok für blöde. Ich könnte auch rein theoretisch die msg.payload auf msg.payload key festlegen, auch wenn es käse wäre. Erklär mir mal bitte die Grundlage von dem Objekt . In den Anführungsstrichen ist der String. Was ist dann das key , value , level . Gruss

                                            mickym 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            103
                                            6625
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo