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. change node reicht anscheinend msg.payload durch

NEWS

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

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

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

change node reicht anscheinend msg.payload durch

Geplant Angeheftet Gesperrt Verschoben Node-Red
15 Beiträge 2 Kommentatoren 2.6k Aufrufe 2 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.
  • Fred FreundF Offline
    Fred FreundF Offline
    Fred Freund
    schrieb am zuletzt editiert von Fred Freund
    #1

    Hallo,
    ich habe die schedex Node misbraucht um eine Toggle funktion zu machen. Diese funktioniert, aber manchmal muss man zweimal druecken um zu toggeln da sie den status vergisst.
    Mir ist eingefallen das es einfacher geht:
    Habe den STatus der Lampe abgefragt und moechte diesen invertieren.
    Leider scheint es die change node gibt den retournierten Status der Lampe einfach durch.
    Rechts im Debug sieht man die node ist die Gleiche fuer beide Debug Eingaenge.
    ausserdem aendert sich true auf false nicht
    b4c2d2f7-0df2-4385-b386-fccf5549d647-image.png
    b16a90ef-6a1e-49cb-a118-405e1f3ab8de-image.png

    Weiters habe ich eine Frage zur msg.reset , konnte nicht finden wie diese definiert ist.
    ist die Payload dann reset?
    Habe beim Trigger den reset jetzt mit der msg off geloest aber dennoch wuerde ich gerne wissen was
    msg.reset ist ?
    6dd12555-56a5-4a7a-a087-1169f8f92730-image.png
    Wie immer herzlichen Dank!

    many Thx for your support,
    Vielen Dank!

    mickymM 1 Antwort Letzte Antwort
    0
    • Fred FreundF Fred Freund

      Hallo,
      ich habe die schedex Node misbraucht um eine Toggle funktion zu machen. Diese funktioniert, aber manchmal muss man zweimal druecken um zu toggeln da sie den status vergisst.
      Mir ist eingefallen das es einfacher geht:
      Habe den STatus der Lampe abgefragt und moechte diesen invertieren.
      Leider scheint es die change node gibt den retournierten Status der Lampe einfach durch.
      Rechts im Debug sieht man die node ist die Gleiche fuer beide Debug Eingaenge.
      ausserdem aendert sich true auf false nicht
      b4c2d2f7-0df2-4385-b386-fccf5549d647-image.png
      b16a90ef-6a1e-49cb-a118-405e1f3ab8de-image.png

      Weiters habe ich eine Frage zur msg.reset , konnte nicht finden wie diese definiert ist.
      ist die Payload dann reset?
      Habe beim Trigger den reset jetzt mit der msg off geloest aber dennoch wuerde ich gerne wissen was
      msg.reset ist ?
      6dd12555-56a5-4a7a-a087-1169f8f92730-image.png
      Wie immer herzlichen Dank!

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

      @fred-freund
      Kann beide Fragen beantworten. ;)

      1. Ja Du musst eine Nachricht mit der Eigenschaft msg.reset definieren - hat mit der payload nichts zu tun.

      a1f3f89d-6d58-439e-a1a3-9ed0bd918058-image.png

      kannst Du natürlich auch mit einer Inject Node testen:
      3118bb2e-0271-4e0d-8f79-48ef194244ce-image.png

      1. Du musst Dir grundsätzlich das Funktionieren der Change Node verstehen - das heißt alle Regel werden nacheinander abgearbeitet.

      Was Du machst: Du änderst in der 1.Regel true = > false, dann wird die 2. Regel ausgeführt und Du änderst false => true und wunderst Dich dann, dass nichts passiert ;) ;) wenn true ankommt, false dürfte ja gehen, da dann ja nur die 2. Regel ausgeführt wird. Also Dein Titel, dass die Change Node, reicht nicht durchreicht ist deshalb völlig falsch. ;) Sie arbeitet hingegegen so wie Du das definiert hast und übt eine doppelte Verneinung aus. ;) ;) - sozusagend: nicht (nicht richtig) = richtig

      Entweder Du sicherst ein Status weg - geht auch indem Du den Typ änderst.
      Also true => false (string), dann false in true und dann false (string) in true.
      Noch einfacher geht es allerdings bei booleans:
      Einfach statt Change ein Set auf einen JSONATA Ausdruck, in dem Du den eingehenden Status einfach verneinst. Das macht man mit $not(payload) wie folgt:

      bf50829e-8207-4321-ba98-6aad74cde048-image.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.

      Fred FreundF 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @fred-freund
        Kann beide Fragen beantworten. ;)

        1. Ja Du musst eine Nachricht mit der Eigenschaft msg.reset definieren - hat mit der payload nichts zu tun.

        a1f3f89d-6d58-439e-a1a3-9ed0bd918058-image.png

        kannst Du natürlich auch mit einer Inject Node testen:
        3118bb2e-0271-4e0d-8f79-48ef194244ce-image.png

        1. Du musst Dir grundsätzlich das Funktionieren der Change Node verstehen - das heißt alle Regel werden nacheinander abgearbeitet.

        Was Du machst: Du änderst in der 1.Regel true = > false, dann wird die 2. Regel ausgeführt und Du änderst false => true und wunderst Dich dann, dass nichts passiert ;) ;) wenn true ankommt, false dürfte ja gehen, da dann ja nur die 2. Regel ausgeführt wird. Also Dein Titel, dass die Change Node, reicht nicht durchreicht ist deshalb völlig falsch. ;) Sie arbeitet hingegegen so wie Du das definiert hast und übt eine doppelte Verneinung aus. ;) ;) - sozusagend: nicht (nicht richtig) = richtig

        Entweder Du sicherst ein Status weg - geht auch indem Du den Typ änderst.
        Also true => false (string), dann false in true und dann false (string) in true.
        Noch einfacher geht es allerdings bei booleans:
        Einfach statt Change ein Set auf einen JSONATA Ausdruck, in dem Du den eingehenden Status einfach verneinst. Das macht man mit $not(payload) wie folgt:

        bf50829e-8207-4321-ba98-6aad74cde048-image.png

        Fred FreundF Offline
        Fred FreundF Offline
        Fred Freund
        schrieb am zuletzt editiert von
        #3

        @mickym Danke!

        UI, dachte die change ist ein if then else nicht eines nach dem anderen :-)

        JSonata hab ich schon gelesen das das maechtig ist...

        Danke nochmals, werde mir das LERNEN
        LG und schoenen Abend

        many Thx for your support,
        Vielen Dank!

        1 Antwort Letzte Antwort
        0
        • mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

          @fred-freund Wenn Du in den JSONATA Nodes auf die 3 Punkte klickst - bekommst Du eine Funktionsreferenz mit einer kleinen Erklärung. Ansonsten kannst Du die mathematische Operatoren verwenden bzw. mit & strings miteinander verketten.

          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
          • Fred FreundF Offline
            Fred FreundF Offline
            Fred Freund
            schrieb am zuletzt editiert von Fred Freund
            #5

            @mickym Danke...cool

            cc9b214d-b11a-497b-aecc-2ed002a73eea-image.png

            Weiss jetzt natuerlich warum meine anderen change multi-nodes funktionierten..da viel in string auf bolean und wieder zureuck gingen ....

            Also der schedex als toggle Befehl hatte auch seine Vorteile : wenn das licht mit dem Sensor eingeschaltet wurde und der Trigger resetted wurde blieb das licht an ,, da schedex dachte es ist ja AUS...
            also ein Befehl Ein und Reset

            jetzt da der Status abgefragt wird geht die Lampe natuerlich aus ...cancled die zeitliche Abschaltung und muss wieder Ein geschalten werden.

            many Thx for your support,
            Vielen Dank!

            mickymM 1 Antwort Letzte Antwort
            0
            • Fred FreundF Fred Freund

              @mickym Danke...cool

              cc9b214d-b11a-497b-aecc-2ed002a73eea-image.png

              Weiss jetzt natuerlich warum meine anderen change multi-nodes funktionierten..da viel in string auf bolean und wieder zureuck gingen ....

              Also der schedex als toggle Befehl hatte auch seine Vorteile : wenn das licht mit dem Sensor eingeschaltet wurde und der Trigger resetted wurde blieb das licht an ,, da schedex dachte es ist ja AUS...
              also ein Befehl Ein und Reset

              jetzt da der Status abgefragt wird geht die Lampe natuerlich aus ...cancled die zeitliche Abschaltung und muss wieder Ein geschalten werden.

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

              @fred-freund Du musst halt aufpassen, dass Du Deine Logik auch noch in mehreren Monaten verstehst und es ist immer etwas problematisch, wenn man verschiedene Logiken auf das gleiche Device anwendet.

              Ich kenne das schedex nicht - hab mir mal kurz die Beschreibung angeschaut. Mit dem Toggle Befehl in dem schedex schaltest ja auch nicht die Lampe, sondern Deinen manual Zustand ein oder aus.

              Ich nutze inzwischen 3 andere Scheduler - alle mit bestimmten Vor- und Nachteilen, Ich glaube der schedex ist fast identisch mit meinem eztimer. Du kannst Dir auch noch den light scheduler anschauen, den kann man zwar nicht von aussen konfigurieren, aber man kann sehr komfortabel wöchentliche AN AUS Intervalle eingeben und auch genial, der liefert Dir noch eine filter Node - die nichts direkt rausschickt, aber Deine Nachrichten zeitabhängig durchlässt.

              Das heißt Du schaltest das Licht nicht über den Scheduler, sondern über den Bewegungsmelder, Lichtsteuerung und was auch immer. Mit der Filternode anschließend kannst Du dann zustätzlich über die Zeit steuern. Also eigentlich Bewegung - schalte Licht an - nein doch nicht, da ja 12 Uhr mittags.

              Noch ein Wort zur Change Node.

              If then Abfragen macht man eher mit der Switch Node. ;)

              Die Change Node ist bewußt kein if - then node, da Du viel mehr als Ändern machst. Du veränderst (wie in JSONATA), selektierst via RegEX, setzt Variablen usw. - Es ist eigentlich ein kleines Unterprogramm ohne dass Du eine Zeile schreiben musst.

              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.

              Fred FreundF 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @fred-freund Du musst halt aufpassen, dass Du Deine Logik auch noch in mehreren Monaten verstehst und es ist immer etwas problematisch, wenn man verschiedene Logiken auf das gleiche Device anwendet.

                Ich kenne das schedex nicht - hab mir mal kurz die Beschreibung angeschaut. Mit dem Toggle Befehl in dem schedex schaltest ja auch nicht die Lampe, sondern Deinen manual Zustand ein oder aus.

                Ich nutze inzwischen 3 andere Scheduler - alle mit bestimmten Vor- und Nachteilen, Ich glaube der schedex ist fast identisch mit meinem eztimer. Du kannst Dir auch noch den light scheduler anschauen, den kann man zwar nicht von aussen konfigurieren, aber man kann sehr komfortabel wöchentliche AN AUS Intervalle eingeben und auch genial, der liefert Dir noch eine filter Node - die nichts direkt rausschickt, aber Deine Nachrichten zeitabhängig durchlässt.

                Das heißt Du schaltest das Licht nicht über den Scheduler, sondern über den Bewegungsmelder, Lichtsteuerung und was auch immer. Mit der Filternode anschließend kannst Du dann zustätzlich über die Zeit steuern. Also eigentlich Bewegung - schalte Licht an - nein doch nicht, da ja 12 Uhr mittags.

                Noch ein Wort zur Change Node.

                If then Abfragen macht man eher mit der Switch Node. ;)

                Die Change Node ist bewußt kein if - then node, da Du viel mehr als Ändern machst. Du veränderst (wie in JSONATA), selektierst via RegEX, setzt Variablen usw. - Es ist eigentlich ein kleines Unterprogramm ohne dass Du eine Zeile schreiben musst.

                Fred FreundF Offline
                Fred FreundF Offline
                Fred Freund
                schrieb am zuletzt editiert von
                #7

                @mickym Also den light scheduler hatte ich schon auf dem Radar...jedoch hab ich mich fuer die fuer mich einfachere Method entschieden...schedex

                im Prinzip ist eine Funktion schreiben zu koennen super genuegend.
                Benutze moementan viel die switch nur um True auszufiltern :-) da diese Druckschalter true/false immer liefern.
                5539e0ab-59c3-45c8-9398-060c1de87593-image.png

                naechster Schritt ist jetzt mich ein mal fuer eine Visualisierung zu entscheiden ...Vis,.Material Vis oder Dashboard.

                Vielen Danke fuer Deine Muehe und Zeit!!

                many Thx for your support,
                Vielen Dank!

                mickymM 1 Antwort Letzte Antwort
                0
                • Fred FreundF Fred Freund

                  @mickym Also den light scheduler hatte ich schon auf dem Radar...jedoch hab ich mich fuer die fuer mich einfachere Method entschieden...schedex

                  im Prinzip ist eine Funktion schreiben zu koennen super genuegend.
                  Benutze moementan viel die switch nur um True auszufiltern :-) da diese Druckschalter true/false immer liefern.
                  5539e0ab-59c3-45c8-9398-060c1de87593-image.png

                  naechster Schritt ist jetzt mich ein mal fuer eine Visualisierung zu entscheiden ...Vis,.Material Vis oder Dashboard.

                  Vielen Danke fuer Deine Muehe und Zeit!!

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

                  @fred-freund Eine Meinung muss ich doch noch zum Besten geben. Vermeide "function" Nodes soweit wie möglich. Alles in Function Nodes zu verstecken und herkömmlich zu programmieren, macht den Sinn und die Vorteile die dieses einzigartige System bietet zu nichte. In einer Function Node ist es wesentlich schwerer zu debuggen.

                  Jedenfalls würde ich für solche Aktionen - die Du als Code implementiert hast , nie function Nodes benutzen.

                  Zu Deiner Visualisierung kann ich nur sagen, dass Du Dich nicht entscheiden musst, sondern man kann Beides nutzen.
                  Das Node-Red Dashboard ist superschnell um etwas zu steuern und schnell Ergebnisse zu erreichen. Vis hingegen ist für optisch anspruchsvolle Visualisierungen besser geeignet. Bei VIS gestaltest Du also zu erst und platzierst dann Deine Schalter - mit dem Dashboard möchtest Du möglichst schnell Deine Geräte steuern und legst nicht soviel Wert auf Optik.

                  Ich habe 95% im Dashboard - aber habe mal angefangen so eine animierte Grundrisssteuerung im VIS realisiert.

                  Hier siehst Du meine Hauptseite im NodeRed Dashboard und eingebette mein animierter Grundriss in VIS. ;) Und hier mal die Hauptseite im Dashboard und ein weiteres Beispiel zur Heizungssteuerung.

                  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.

                  Fred FreundF 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @fred-freund Eine Meinung muss ich doch noch zum Besten geben. Vermeide "function" Nodes soweit wie möglich. Alles in Function Nodes zu verstecken und herkömmlich zu programmieren, macht den Sinn und die Vorteile die dieses einzigartige System bietet zu nichte. In einer Function Node ist es wesentlich schwerer zu debuggen.

                    Jedenfalls würde ich für solche Aktionen - die Du als Code implementiert hast , nie function Nodes benutzen.

                    Zu Deiner Visualisierung kann ich nur sagen, dass Du Dich nicht entscheiden musst, sondern man kann Beides nutzen.
                    Das Node-Red Dashboard ist superschnell um etwas zu steuern und schnell Ergebnisse zu erreichen. Vis hingegen ist für optisch anspruchsvolle Visualisierungen besser geeignet. Bei VIS gestaltest Du also zu erst und platzierst dann Deine Schalter - mit dem Dashboard möchtest Du möglichst schnell Deine Geräte steuern und legst nicht soviel Wert auf Optik.

                    Ich habe 95% im Dashboard - aber habe mal angefangen so eine animierte Grundrisssteuerung im VIS realisiert.

                    Hier siehst Du meine Hauptseite im NodeRed Dashboard und eingebette mein animierter Grundriss in VIS. ;) Und hier mal die Hauptseite im Dashboard und ein weiteres Beispiel zur Heizungssteuerung.

                    Fred FreundF Offline
                    Fred FreundF Offline
                    Fred Freund
                    schrieb am zuletzt editiert von
                    #9

                    @mickym
                    Bin fuer jede Zeile Erklaerung Dankbar!
                    echt liege ich so falsch mit der Benutzung der Funktion?
                    Muss mir das ansehen wie ich das anders machen koennte ...aber ich dachte das kuerzt den Code ab und wuerde den Flow verkuerzen welches sicher das Ziel ist ??

                    many Thx for your support,
                    Vielen Dank!

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • Fred FreundF Fred Freund

                      @mickym
                      Bin fuer jede Zeile Erklaerung Dankbar!
                      echt liege ich so falsch mit der Benutzung der Funktion?
                      Muss mir das ansehen wie ich das anders machen koennte ...aber ich dachte das kuerzt den Code ab und wuerde den Flow verkuerzen welches sicher das Ziel ist ??

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

                      @fred-freund Hier mal das was Du mit Deiner Function Node machst als Flow:

                      fc398914-0817-4604-b10e-eaf830d08f56-image.png

                      Was ist übersichtlicher? - Wo kannst Du leichter sehen, wenn was falsch läuft? Nein in meinen Augen ist nicht das Ziel den Flow zu verkürzen, sondern ihn einfach und logisch darzustellen um auch schnell zu sehen, wie der Fluß der Nachrichten verläuft. Alles was in einer Function Node abläuft mit allen If und Thens und was weiß ich sind ja auch alles Flows, die in der function Node versteckt werden.

                      Machen allerdings viele. Wenn Du sowas verkürzen willst, weil Du sowas immer wieder brauchst, könntest Du obigen Flow auch in einen Subflow packen . und dann hast nur noch eine Node und kannst quasi immer alle Werte um 10 erhöhen bis max. 100!!

                      Hier kannst mal importieren - ist der Flow nur ohne Function Node:

                      [
                         {
                             "id": "756912e2.cd6a9c",
                             "type": "change",
                             "z": "dce8fa20.2e93c8",
                             "name": "erhöhe um 10",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "payload +10",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 580,
                             "y": 2460,
                             "wires": [
                                 [
                                     "6b758fb5.08ea3"
                                 ]
                             ]
                         },
                         {
                             "id": "6b758fb5.08ea3",
                             "type": "switch",
                             "z": "dce8fa20.2e93c8",
                             "name": "> 100 ?",
                             "property": "payload",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "gt",
                                     "v": "100",
                                     "vt": "str"
                                 },
                                 {
                                     "t": "else"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 2,
                             "x": 790,
                             "y": 2460,
                             "wires": [
                                 [
                                     "8f9eb523.74b008"
                                 ],
                                 [
                                     "b1c726aa.a715a8"
                                 ]
                             ]
                         },
                         {
                             "id": "8f9eb523.74b008",
                             "type": "change",
                             "z": "dce8fa20.2e93c8",
                             "name": "wenn > 100 setze 100",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "100",
                                     "tot": "num"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1010,
                             "y": 2440,
                             "wires": [
                                 [
                                     "b1c726aa.a715a8"
                                 ]
                             ]
                         },
                         {
                             "id": "b1c726aa.a715a8",
                             "type": "debug",
                             "z": "dce8fa20.2e93c8",
                             "name": "Mach was !",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "payload",
                             "targetType": "msg",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 1210,
                             "y": 2480,
                             "wires": []
                         }
                      ]
                      

                      Du kannst theoretisch nach einer IN -Node den ganzen Flow in eine function Node packen. Function Nodes machen oft Sinn wenn man zum Beispiel Zustände sichern muss ... aber selbst das ist nicht zwingend.

                      Ich habe diese Thematik hier schon mal aus meiner Sicht erläutert:

                      https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/21?_=1615326063144

                      Dort siehst Du das Gleiche einmal mit EINER Funcion Node oder als Flow implementiert.

                      Die Stärke von Node Red ist, Deine Logik grafisch zu veranschaulichen und das machst Du mit Programmcode alles wieder kaputt.

                      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.

                      Fred FreundF 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @fred-freund Hier mal das was Du mit Deiner Function Node machst als Flow:

                        fc398914-0817-4604-b10e-eaf830d08f56-image.png

                        Was ist übersichtlicher? - Wo kannst Du leichter sehen, wenn was falsch läuft? Nein in meinen Augen ist nicht das Ziel den Flow zu verkürzen, sondern ihn einfach und logisch darzustellen um auch schnell zu sehen, wie der Fluß der Nachrichten verläuft. Alles was in einer Function Node abläuft mit allen If und Thens und was weiß ich sind ja auch alles Flows, die in der function Node versteckt werden.

                        Machen allerdings viele. Wenn Du sowas verkürzen willst, weil Du sowas immer wieder brauchst, könntest Du obigen Flow auch in einen Subflow packen . und dann hast nur noch eine Node und kannst quasi immer alle Werte um 10 erhöhen bis max. 100!!

                        Hier kannst mal importieren - ist der Flow nur ohne Function Node:

                        [
                           {
                               "id": "756912e2.cd6a9c",
                               "type": "change",
                               "z": "dce8fa20.2e93c8",
                               "name": "erhöhe um 10",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "payload +10",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 580,
                               "y": 2460,
                               "wires": [
                                   [
                                       "6b758fb5.08ea3"
                                   ]
                               ]
                           },
                           {
                               "id": "6b758fb5.08ea3",
                               "type": "switch",
                               "z": "dce8fa20.2e93c8",
                               "name": "> 100 ?",
                               "property": "payload",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "gt",
                                       "v": "100",
                                       "vt": "str"
                                   },
                                   {
                                       "t": "else"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 790,
                               "y": 2460,
                               "wires": [
                                   [
                                       "8f9eb523.74b008"
                                   ],
                                   [
                                       "b1c726aa.a715a8"
                                   ]
                               ]
                           },
                           {
                               "id": "8f9eb523.74b008",
                               "type": "change",
                               "z": "dce8fa20.2e93c8",
                               "name": "wenn > 100 setze 100",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "100",
                                       "tot": "num"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1010,
                               "y": 2440,
                               "wires": [
                                   [
                                       "b1c726aa.a715a8"
                                   ]
                               ]
                           },
                           {
                               "id": "b1c726aa.a715a8",
                               "type": "debug",
                               "z": "dce8fa20.2e93c8",
                               "name": "Mach was !",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1210,
                               "y": 2480,
                               "wires": []
                           }
                        ]
                        

                        Du kannst theoretisch nach einer IN -Node den ganzen Flow in eine function Node packen. Function Nodes machen oft Sinn wenn man zum Beispiel Zustände sichern muss ... aber selbst das ist nicht zwingend.

                        Ich habe diese Thematik hier schon mal aus meiner Sicht erläutert:

                        https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/21?_=1615326063144

                        Dort siehst Du das Gleiche einmal mit EINER Funcion Node oder als Flow implementiert.

                        Die Stärke von Node Red ist, Deine Logik grafisch zu veranschaulichen und das machst Du mit Programmcode alles wieder kaputt.

                        Fred FreundF Offline
                        Fred FreundF Offline
                        Fred Freund
                        schrieb am zuletzt editiert von Fred Freund
                        #11

                        @mickym Ah ok, ich versehe , es ist also egal wie lange der Flow ist , es geht nicht darum ihn abzukuerzen.

                        Danke fuer deine ERklaerungen!

                        Also das Erhoehe um 10 ist super geloest...

                        many Thx for your support,
                        Vielen Dank!

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • Fred FreundF Fred Freund

                          @mickym Ah ok, ich versehe , es ist also egal wie lange der Flow ist , es geht nicht darum ihn abzukuerzen.

                          Danke fuer deine ERklaerungen!

                          Also das Erhoehe um 10 ist super geloest...

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

                          @fred-freund Wie gesagt ich nutze auch function Nodes - aber je länger ich das System nutze, desto weniger brauche ich sie. Manchmal lasst es sich nicht vermeiden oder es wird unübersichtlich - gerade bei Schleifen oder Iterationen oder rekursiven Aufrufen.

                          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.

                          Fred FreundF 1 Antwort Letzte Antwort
                          0
                          • mickymM mickym

                            @fred-freund Wie gesagt ich nutze auch function Nodes - aber je länger ich das System nutze, desto weniger brauche ich sie. Manchmal lasst es sich nicht vermeiden oder es wird unübersichtlich - gerade bei Schleifen oder Iterationen oder rekursiven Aufrufen.

                            Fred FreundF Offline
                            Fred FreundF Offline
                            Fred Freund
                            schrieb am zuletzt editiert von
                            #13

                            @mickym ""gerade bei Schleifen oder Iterationen oder rekursiven Aufrufen.""

                            ja fuer diese Dinge fehlt mir noch die Vorstellungskraft einer Loesung...aber aller Anfang ist schwer.

                            Bin froh das man hier mit Triggern arbeiten kann...

                            many Thx for your support,
                            Vielen Dank!

                            mickymM 1 Antwort Letzte Antwort
                            0
                            • Fred FreundF Fred Freund

                              @mickym ""gerade bei Schleifen oder Iterationen oder rekursiven Aufrufen.""

                              ja fuer diese Dinge fehlt mir noch die Vorstellungskraft einer Loesung...aber aller Anfang ist schwer.

                              Bin froh das man hier mit Triggern arbeiten kann...

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

                              @fred-freund Bin gerade dabei - eine wiederverwendbare function Node zu basteln, um einen laufenden Durchschnitt pro Zeiteinheit zu basteln. Es gibt zwar die aggregator Node - aber ich brauch etwas um zum Beispiel den Stromverbrauch der letzten Stunde zu ermitteln und die soll sich immer ändern.

                              Ich hab zum Beispiel im Node Red eine Tasterfunktion zu entwickeln, die im VIS einen Hardwaretaster abbildet. ;) - da habe ich dann auch eine function Node genutzt.

                              So sieht mein VIS Taster (mit Node Red) realisiert aus um wie ein Hardwaretaster für einen Dimmer zu funktionieren:

                              Tasterimplementierung Dimmer - vis - NodeRed.mp4

                              So hier gabs eine zentrale function Node - mit mehreren Ausgängen um einen langen Tastendruck von einem kurzen zu unterscheiden. ;)

                              1bf9b1e2-7347-4491-a01d-6f0826f11863-image.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.

                              Fred FreundF 1 Antwort Letzte Antwort
                              0
                              • mickymM mickym

                                @fred-freund Bin gerade dabei - eine wiederverwendbare function Node zu basteln, um einen laufenden Durchschnitt pro Zeiteinheit zu basteln. Es gibt zwar die aggregator Node - aber ich brauch etwas um zum Beispiel den Stromverbrauch der letzten Stunde zu ermitteln und die soll sich immer ändern.

                                Ich hab zum Beispiel im Node Red eine Tasterfunktion zu entwickeln, die im VIS einen Hardwaretaster abbildet. ;) - da habe ich dann auch eine function Node genutzt.

                                So sieht mein VIS Taster (mit Node Red) realisiert aus um wie ein Hardwaretaster für einen Dimmer zu funktionieren:

                                Tasterimplementierung Dimmer - vis - NodeRed.mp4

                                So hier gabs eine zentrale function Node - mit mehreren Ausgängen um einen langen Tastendruck von einem kurzen zu unterscheiden. ;)

                                1bf9b1e2-7347-4491-a01d-6f0826f11863-image.png

                                Fred FreundF Offline
                                Fred FreundF Offline
                                Fred Freund
                                schrieb am zuletzt editiert von
                                #15

                                @mickym ah cool...ja Tastendruck mit timer abfragen ...?? damit du entscheiden kannst lange oder kurz...

                                hab das fuer einen Arduino mal programmiert...mit taster....

                                many Thx for your support,
                                Vielen Dank!

                                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

                                811

                                Online

                                32.4k

                                Benutzer

                                81.6k

                                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