Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Shellys ("Alt und Plus") über MQTT Adapter

NEWS

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

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

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

Shellys ("Alt und Plus") über MQTT Adapter

Scheduled Pinned Locked Moved ioBroker Allgemein
512 Posts 5 Posters 93.1k Views 6 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mickymM mickym

    Wie kann ich die flow Variabel debuggen? Geht das auch? Ob sie da ist und einen Wert hat wäre interessant zu wissen.

    f868abbc-5bf9-4f58-a9b5-1535b37967bf-image.png

    Sehr gut - Du brauchst also weder Programmieren noch function nodes. 😉 - Du schaffst das ja. 😉

    Den Kontext findest Du im Menü

    4122fe8d-6455-4785-a97c-1ec3b9bde4f1-image.png

    Du musst aber immer selbst aktualisieren:
    6f8dc52d-482b-40f3-8bd9-fcd2f5d5862c-image.png

    Das aktualisiert sich nicht selbst.

    H Offline
    H Offline
    hotspot_2
    wrote on last edited by
    #404

    @mickym

    Passt. Danke!

    8e4a1147-bfa2-4582-977f-7369909e8ffa-image.png

    So, und die kann ich jetzt vergleichen und dann die Werte ändern (lux) und schauen ob das Licht angeht.

    mickymM 1 Reply Last reply
    0
    • H hotspot_2

      @mickym

      Passt. Danke!

      8e4a1147-bfa2-4582-977f-7369909e8ffa-image.png

      So, und die kann ich jetzt vergleichen und dann die Werte ändern (lux) und schauen ob das Licht angeht.

      mickymM Online
      mickymM Online
      mickym
      Most Active
      wrote on last edited by
      #405

      @hotspot_2 Ja und was vergleichst Du nun in der switch Node?

      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 Reply Last reply
      0
      • mickymM mickym

        @hotspot_2 Ja und was vergleichst Du nun in der switch Node?

        H Offline
        H Offline
        hotspot_2
        wrote on last edited by
        #406

        @mickym Stimmt, das haut auch noch nicht hin, glaub ich. Ich darf ja nicht die payload verändern die den Shelly dann aus oder an macht. Da muss ich dann vermutlich auch erst eine Flow Variable draus machen.

        mickymM 1 Reply Last reply
        0
        • H hotspot_2

          @mickym Stimmt, das haut auch noch nicht hin, glaub ich. Ich darf ja nicht die payload verändern die den Shelly dann aus oder an macht. Da muss ich dann vermutlich auch erst eine Flow Variable draus machen.

          mickymM Online
          mickymM Online
          mickym
          Most Active
          wrote on last edited by mickym
          #407

          @hotspot_2 Nein - lass mal - Du hast etwas nicht verstanden. Wenn Du in der getNode das attribut änderst - dann änderst Du nicht die payload - sondern eine msg. Eigenschaft.

          Das hier

          7ca79c99-18a4-4dc4-a3a0-f95f26719444-image.png

          ist also nicht payload.lux_wk, sondern msg.lux_wk

          Wie gesagt ich finde es doof, dass Du beides lux_wk nennst, denn das Eine ist die tatsächliche lux_wk und das andere ist das von Dir gesetzte limit_lux_wk. Das sind 2 Paar Stiefel.

          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 Reply Last reply
          0
          • mickymM mickym

            @hotspot_2 Nein - lass mal - Du hast etwas nicht verstanden. Wenn Du in der getNode das attribut änderst - dann änderst Du nicht die payload - sondern eine msg. Eigenschaft.

            Das hier

            7ca79c99-18a4-4dc4-a3a0-f95f26719444-image.png

            ist also nicht payload.lux_wk, sondern msg.lux_wk

            Wie gesagt ich finde es doof, dass Du beides lux_wk nennst, denn das Eine ist die tatsächliche lux_wk und das andere ist das von Dir gesetzte limit_lux_wk. Das sind 2 Paar Stiefel.

            H Offline
            H Offline
            hotspot_2
            wrote on last edited by
            #408

            @mickym Da hast Du völlig Recht!

            68b41446-658d-48a6-bf73-5b7dc4976037-image.png

            So klappt es. Ich teste mal ein paar Werte durch usw. Aber sieht sehr gut aus!

            mickymM 1 Reply Last reply
            0
            • H hotspot_2

              @mickym Da hast Du völlig Recht!

              68b41446-658d-48a6-bf73-5b7dc4976037-image.png

              So klappt es. Ich teste mal ein paar Werte durch usw. Aber sieht sehr gut aus!

              mickymM Online
              mickymM Online
              mickym
              Most Active
              wrote on last edited by
              #409

              @hotspot_2 Ok - nun scheinst Du es verstanden zu haben. 😉 - Auch wenn ich Dein Flow trotzdem komplex finde und ich ggf. den Waschküchen BWM komplett eigenständig behandelt hätte, so hast Du nun die Fehler im Flow selbst ausgebessert. Nur wenn Du halt behauptest, es hätte am Anfang alles funktioniert, dann war das sicher nicht richtig. 😉

              Aber ich denke, Du hast heute eine Menge gelernt.

              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 Reply Last reply
              0
              • mickymM mickym

                @hotspot_2 Ok - nun scheinst Du es verstanden zu haben. 😉 - Auch wenn ich Dein Flow trotzdem komplex finde und ich ggf. den Waschküchen BWM komplett eigenständig behandelt hätte, so hast Du nun die Fehler im Flow selbst ausgebessert. Nur wenn Du halt behauptest, es hätte am Anfang alles funktioniert, dann war das sicher nicht richtig. 😉

                Aber ich denke, Du hast heute eine Menge gelernt.

                H Offline
                H Offline
                hotspot_2
                wrote on last edited by
                #410

                @mickym Ja, auf jeden Fall. Die herangehensweise und wie man das simuliert und auch durchtestet. Das war für mich so nicht greifbar.

                Dankeschön!

                mickymM 1 Reply Last reply
                0
                • H hotspot_2

                  @mickym Ja, auf jeden Fall. Die herangehensweise und wie man das simuliert und auch durchtestet. Das war für mich so nicht greifbar.

                  Dankeschön!

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  wrote on last edited by mickym
                  #411

                  @hotspot_2 Ok - nun scheinst Du es verstanden zu haben. 😉 - Auch wenn ich Dein Flow trotzdem komplex finde und ich ggf. den Waschküchen BWM komplett eigenständig behandelt hätte, so hast Du nun die Fehler im Flow selbst ausgebessert. Nur wenn Du halt behauptest, es hätte am Anfang alles funktioniert, dann war das sicher nicht richtig. 😉

                  Aber ich denke, Du hast heute eine Menge gelernt.

                  UND function Nodes und JS Programmierung sind für Dich erst mal tabu. 😉 - Dann kannst Du ja gleich wieder Javascript im Javascript Adapter programmieren. 😉 - Du wirst sehen, dass Du sehr lange ohne function Nodes auskommst - und kopiere nicht Flows aus dem Netz. Die meisten nehmen function Nodes und fangen wieder das herkömmliche Programmieren an.

                  Wir können Deinen kompletten Flow in einer Function Node unterbringen. Willst Du das etwa????

                  Dann lernst Du lieber erst mal JSONATA und Du wirst sehen - wie mächtig das sein kann und wieviel Codeschreiberei Du Dir sparen kannst.

                  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.

                  D 1 Reply Last reply
                  0
                  • mickymM mickym

                    @hotspot_2 Ok - nun scheinst Du es verstanden zu haben. 😉 - Auch wenn ich Dein Flow trotzdem komplex finde und ich ggf. den Waschküchen BWM komplett eigenständig behandelt hätte, so hast Du nun die Fehler im Flow selbst ausgebessert. Nur wenn Du halt behauptest, es hätte am Anfang alles funktioniert, dann war das sicher nicht richtig. 😉

                    Aber ich denke, Du hast heute eine Menge gelernt.

                    UND function Nodes und JS Programmierung sind für Dich erst mal tabu. 😉 - Dann kannst Du ja gleich wieder Javascript im Javascript Adapter programmieren. 😉 - Du wirst sehen, dass Du sehr lange ohne function Nodes auskommst - und kopiere nicht Flows aus dem Netz. Die meisten nehmen function Nodes und fangen wieder das herkömmliche Programmieren an.

                    Wir können Deinen kompletten Flow in einer Function Node unterbringen. Willst Du das etwa????

                    Dann lernst Du lieber erst mal JSONATA und Du wirst sehen - wie mächtig das sein kann und wieviel Codeschreiberei Du Dir sparen kannst.

                    D Offline
                    D Offline
                    dos1973
                    wrote on last edited by
                    #412

                    @mickym

                    mein 2PM Plus als Schalter läuft. Danke Dir.

                    Bildschirmfoto 2023-04-11 um 22.19.11.png

                    mickymM 1 Reply Last reply
                    0
                    • D dos1973

                      @mickym

                      mein 2PM Plus als Schalter läuft. Danke Dir.

                      Bildschirmfoto 2023-04-11 um 22.19.11.png

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      wrote on last edited by mickym
                      #413

                      @dos1973 Das nur ACK=False kannst Du direkt in der iobroker-IN Node einstellen bzw. filtern. 😉

                      63656c83-7fbd-468a-a847-60fa1a53a7bb-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.

                      H 1 Reply Last reply
                      1
                      • mickymM mickym

                        @dos1973 Das nur ACK=False kannst Du direkt in der iobroker-IN Node einstellen bzw. filtern. 😉

                        63656c83-7fbd-468a-a847-60fa1a53a7bb-image.png

                        H Offline
                        H Offline
                        hotspot_2
                        wrote on last edited by
                        #414

                        @mickym Hallo mickym,

                        ich habe mal ne Frage zum Thema msg und flow Payload. Ich würde gerne den msg. Payload der von dem MQTT in kommt an mehreren Stellen im Flow auslesen bzw. verschiedene Items (alarm, mute usw.) prüfen. Am Ende muss aber ein msg Payload an eine Pushover Node gehen damit eine Nachricht verschickt wird.

                        Ich würde nun gerne die Payload für den Pushover in flow.* aufbauen und den msg.* Payload nicht verändern. Am Ende dann quasi die flow. zur msg. Payload machen kurz vor der Pushover Node. Geht das? Ist das ein guter Ansatz?

                        Oder besser mit Variablen arbeiten und am Ende die msg.payload zusammenbauen?

                        Ich hoffe Du kannst nachvollziehen was ich meine.

                        mickymM 1 Reply Last reply
                        0
                        • H hotspot_2

                          @mickym Hallo mickym,

                          ich habe mal ne Frage zum Thema msg und flow Payload. Ich würde gerne den msg. Payload der von dem MQTT in kommt an mehreren Stellen im Flow auslesen bzw. verschiedene Items (alarm, mute usw.) prüfen. Am Ende muss aber ein msg Payload an eine Pushover Node gehen damit eine Nachricht verschickt wird.

                          Ich würde nun gerne die Payload für den Pushover in flow.* aufbauen und den msg.* Payload nicht verändern. Am Ende dann quasi die flow. zur msg. Payload machen kurz vor der Pushover Node. Geht das? Ist das ein guter Ansatz?

                          Oder besser mit Variablen arbeiten und am Ende die msg.payload zusammenbauen?

                          Ich hoffe Du kannst nachvollziehen was ich meine.

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          wrote on last edited by mickym
                          #415

                          @hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:

                          Oder besser mit Variablen arbeiten und am Ende die msg.payload zusammenbauen?

                          Nun im flow Kontext ist das eine Variable - klar geht das. Ob den zusammengefassten Status in einem Datenpunkt sammelst oder im flow-Kontext ist letztlich nur davon abhängig, ob die Informationen einen Neustart von NodeRed überleben sollen oder nicht.

                          Ansonsten allgemein zur Überwachung - kannst Dir ja mal mein Post von hier anschauen: https://forum.iobroker.net/post/625108

                          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 Reply Last reply
                          0
                          • mickymM mickym

                            @hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:

                            Oder besser mit Variablen arbeiten und am Ende die msg.payload zusammenbauen?

                            Nun im flow Kontext ist das eine Variable - klar geht das. Ob den zusammengefassten Status in einem Datenpunkt sammelst oder im flow-Kontext ist letztlich nur davon abhängig, ob die Informationen einen Neustart von NodeRed überleben sollen oder nicht.

                            Ansonsten allgemein zur Überwachung - kannst Dir ja mal mein Post von hier anschauen: https://forum.iobroker.net/post/625108

                            H Offline
                            H Offline
                            hotspot_2
                            wrote on last edited by
                            #416

                            @mickym Habe noch ein anderes Problem entdeckt wo ich nicht wirklich eine Lösung finden kann.

                            Im MQTT Adapter habe ich folgenden Eintrag gefunden unter mqtt/0:

                            caea0529-b03e-4d46-8a59-af37a2e6b7e1-image.png

                            Die ID die hier sichtbar ist in diesem Objekt ist die 199:

                            7a2417a7-e53c-43c5-8f43-2caab16f8a9b-image.png

                            Die schreiben wir in einem Flow in Node RED:

                            42866ce2-74e4-43a8-bf44-452c4394680e-image.png

                            Ich habe, extra um dem auf die Schliche zu kommen woher das kommt, die IDs verändert.

                            5a3202b9-9e07-4485-84ec-7219f2f9bfd4-image.png

                            Muss das so sein? Oder habe ich da irgendwo einen Fehler drin?

                            mickymM 1 Reply Last reply
                            0
                            • H hotspot_2

                              @mickym Habe noch ein anderes Problem entdeckt wo ich nicht wirklich eine Lösung finden kann.

                              Im MQTT Adapter habe ich folgenden Eintrag gefunden unter mqtt/0:

                              caea0529-b03e-4d46-8a59-af37a2e6b7e1-image.png

                              Die ID die hier sichtbar ist in diesem Objekt ist die 199:

                              7a2417a7-e53c-43c5-8f43-2caab16f8a9b-image.png

                              Die schreiben wir in einem Flow in Node RED:

                              42866ce2-74e4-43a8-bf44-452c4394680e-image.png

                              Ich habe, extra um dem auf die Schliche zu kommen woher das kommt, die IDs verändert.

                              5a3202b9-9e07-4485-84ec-7219f2f9bfd4-image.png

                              Muss das so sein? Oder habe ich da irgendwo einen Fehler drin?

                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              wrote on last edited by mickym
                              #417

                              @hotspot_2 der rpc kanal hotspot2 enthält alle Antworten auf alle Deine Befehle - also die Quittung. Das ist also kein Fehler - Du siehst das Gerät in src und das Ergebnis Deines Befehls. Die Beschreibung der RPC Kanäle findest Du hier:
                              https://shelly-api-docs.shelly.cloud/gen2/General/RPCChannels

                              Ich habe auch mal für Dich die entsprechende Stelle rausgesucht:

                              9c7be75e-a518-47f2-88a3-1f012f67330c-image.png

                              Du kannst aber seit Version 14 auch direkt ohne den RPC Kanal schalten. Das habe ich gesehen und siehst an den Beispielen von @dos1973. Ich würde, wenn ich DU wäre das nun alles auf command/switch umstellen. Du musst halt nur true und false in on und off wandeln. In der Generation 1 war es ja auch on und off.

                              Wenn Du viel von unterschiedlichen Quellen schaltest mag zwar das RPC Protokoll ganz praktisch sein da Du siehst woher ein Befehl kam. Musst Du wissen - ich finde das normale Schalten über den command Ast einfacher.

                              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 Reply Last reply
                              0
                              • mickymM mickym

                                @hotspot_2 der rpc kanal hotspot2 enthält alle Antworten auf alle Deine Befehle - also die Quittung. Das ist also kein Fehler - Du siehst das Gerät in src und das Ergebnis Deines Befehls. Die Beschreibung der RPC Kanäle findest Du hier:
                                https://shelly-api-docs.shelly.cloud/gen2/General/RPCChannels

                                Ich habe auch mal für Dich die entsprechende Stelle rausgesucht:

                                9c7be75e-a518-47f2-88a3-1f012f67330c-image.png

                                Du kannst aber seit Version 14 auch direkt ohne den RPC Kanal schalten. Das habe ich gesehen und siehst an den Beispielen von @dos1973. Ich würde, wenn ich DU wäre das nun alles auf command/switch umstellen. Du musst halt nur true und false in on und off wandeln. In der Generation 1 war es ja auch on und off.

                                Wenn Du viel von unterschiedlichen Quellen schaltest mag zwar das RPC Protokoll ganz praktisch sein da Du siehst woher ein Befehl kam. Musst Du wissen - ich finde das normale Schalten über den command Ast einfacher.

                                H Offline
                                H Offline
                                hotspot_2
                                wrote on last edited by hotspot_2
                                #418

                                @mickym Ok, schaue ich mir an. Tendenziell sehe ich es auch so das schalten über command einfacher ist ;-).

                                3301bc20-bb11-47fe-8f05-2da04b835011-image.png

                                Macht richtig viel Spaß mit der Methode die JSONs zu analysieren, mit Injects und Debugs zu arbeiten. Man lernt einiges dabei. Baue mir gerade einen Flow für alle Alarme im Haus, Batteriemeldungen und sonstige Benachrichtigungen die über Pushover oder Email versendet werden.

                                Node Red ist einfach genial ;-).

                                mickymM 1 Reply Last reply
                                0
                                • H hotspot_2

                                  @mickym Ok, schaue ich mir an. Tendenziell sehe ich es auch so das schalten über command einfacher ist ;-).

                                  3301bc20-bb11-47fe-8f05-2da04b835011-image.png

                                  Macht richtig viel Spaß mit der Methode die JSONs zu analysieren, mit Injects und Debugs zu arbeiten. Man lernt einiges dabei. Baue mir gerade einen Flow für alle Alarme im Haus, Batteriemeldungen und sonstige Benachrichtigungen die über Pushover oder Email versendet werden.

                                  Node Red ist einfach genial ;-).

                                  mickymM Online
                                  mickymM Online
                                  mickym
                                  Most Active
                                  wrote on last edited by mickym
                                  #419

                                  @hotspot_2 Node Red ist einfach genial ;-). Na da rennst Du bei mir offene Türen ein. Leider beschäftigen sich die meisten erst gar nicht damit. Die, die auf den Geschmack gekommen sind, habe ich noch nie wieder auf Blockly zurück migrieren sehen.;)

                                  Was Du halt noch machen kannst, wenn Du willst, deswegen habe ich Dir den anderen Thread verlinkt, dass Du selbst Objekte baust und mit true und false arbeitest. Aber mach erst mal - zur Optimierung und weiteren Idee ist ja immer noch Zeit. 😉

                                  Und wie Du siehst, wenn man einmal gelernt hat, mit Objekten umzugehen, dann ist das eigentlich ganz easy und lernt die Vorteile von Objekten kennen.

                                  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 Reply Last reply
                                  0
                                  • mickymM mickym

                                    @hotspot_2 Node Red ist einfach genial ;-). Na da rennst Du bei mir offene Türen ein. Leider beschäftigen sich die meisten erst gar nicht damit. Die, die auf den Geschmack gekommen sind, habe ich noch nie wieder auf Blockly zurück migrieren sehen.;)

                                    Was Du halt noch machen kannst, wenn Du willst, deswegen habe ich Dir den anderen Thread verlinkt, dass Du selbst Objekte baust und mit true und false arbeitest. Aber mach erst mal - zur Optimierung und weiteren Idee ist ja immer noch Zeit. 😉

                                    Und wie Du siehst, wenn man einmal gelernt hat, mit Objekten umzugehen, dann ist das eigentlich ganz easy und lernt die Vorteile von Objekten kennen.

                                    H Offline
                                    H Offline
                                    hotspot_2
                                    wrote on last edited by hotspot_2
                                    #420

                                    @mickym Ich hätte noch mal eine Frage dazu wie Du sowas angehen würdest.

                                    Ich habe im Garten eine elektrische Klingel die ich über einen Shelly ansteuere. Klingelt jemand an der Haustüre dann mache ich seither über einen Blockly die Klingel zweimal an und wieder aus mit kurzen Pausen dazwischen.

                                    Wenn ich sowas jetzt in Node-Red machen möchte wie würde ich das angehen? Gibt es da sowas wie eine Schleife oder so?

                                    Trigger wäre ein Ansatz gewesen aber der macht halt nur einmal an und wieder aus.

                                    mickymM 1 Reply Last reply
                                    0
                                    • H hotspot_2

                                      @mickym Ich hätte noch mal eine Frage dazu wie Du sowas angehen würdest.

                                      Ich habe im Garten eine elektrische Klingel die ich über einen Shelly ansteuere. Klingelt jemand an der Haustüre dann mache ich seither über einen Blockly die Klingel zweimal an und wieder aus mit kurzen Pausen dazwischen.

                                      Wenn ich sowas jetzt in Node-Red machen möchte wie würde ich das angehen? Gibt es da sowas wie eine Schleife oder so?

                                      Trigger wäre ein Ansatz gewesen aber der macht halt nur einmal an und wieder aus.

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      wrote on last edited by mickym
                                      #421

                                      @hotspot_2 Nein die Trigger Node kann auch unendlich oft in bestimmten Abständen triggern. Aber natürlich kannst Du auch Schleifen bauen - du musst ja nun den Ausgang mit dem Eingang verbinden. 😉

                                      66f58976-5f96-44a9-8518-aad3c4164337-image.png

                                      Das macht sie solange, bis Du die Trigger Node zurücksetzt.

                                      Wenn die Klingel zwischendrin wieder ausschalten musst, dann kannst auch wie bisher den trigger nehmen und über den 2.Ausgang die Schleife antriggern.

                                      Du kannst dann über eine Flow-variable zählen oder in dem Fall auch über eine function-Node und JS - wenn Dir für einen stupiden Zähler die Variable im FlowKontext zu viel ist. 😉 Hier mal 2 Varianten.

                                      Hier mal eine Variante mit Flow-Kontext:

                                      4ee6f2f9-ae2f-42a1-80c6-23d25747c7e7-image.png

                                      [
                                         {
                                             "id": "0af2185be7349ad3",
                                             "type": "trigger",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "op1": "true",
                                             "op2": "false",
                                             "op1type": "bool",
                                             "op2type": "bool",
                                             "duration": "2",
                                             "extend": false,
                                             "overrideDelay": false,
                                             "units": "s",
                                             "reset": "0",
                                             "bytopic": "all",
                                             "topic": "topic",
                                             "outputs": 2,
                                             "x": 480,
                                             "y": 4460,
                                             "wires": [
                                                 [
                                                     "92d78df371e2dde2"
                                                 ],
                                                 [
                                                     "92d78df371e2dde2",
                                                     "3c4db8300739ee09"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "92d78df371e2dde2",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "Klingel",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 710,
                                             "y": 4440,
                                             "wires": []
                                         },
                                         {
                                             "id": "7a93f96057f10e61",
                                             "type": "inject",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "Es klingelt",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 },
                                                 {
                                                     "p": "topic",
                                                     "vt": "str"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "",
                                             "payload": "true",
                                             "payloadType": "bool",
                                             "x": 280,
                                             "y": 4460,
                                             "wires": [
                                                 [
                                                     "0af2185be7349ad3"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "3c4db8300739ee09",
                                             "type": "change",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "numKlingel",
                                                     "tot": "flow"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "payload ? payload : 0",
                                                     "tot": "jsonata"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "(payload + 1) % 2",
                                                     "tot": "jsonata"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "numKlingel",
                                                     "pt": "flow",
                                                     "to": "payload",
                                                     "tot": "msg"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 490,
                                             "y": 4540,
                                             "wires": [
                                                 [
                                                     "0af2185be7349ad3"
                                                 ]
                                             ]
                                         }
                                      ]
                                      

                                      Hier das gleiche mit einer function node und node context, falls Du lieber mit Javascript programmieren willst. 😉

                                      cc0c6bd9-510c-4959-bf2d-9f42cad4ad3d-image.png

                                      ![4025c15c-8035-4349-ba7d-81e6b3f4ebd2-image.png](/assets/uploads/files/1681413147135-4025c15c-8035-4349-ba7d-81e6b3f4ebd2-image-resized.png) code_text
                                      

                                      Falls nicht zwischen true und false gewechselt werden muss, kannst Du einfach eine function Node nehmen und eine Delay node:

                                      2caf75ee-c432-4356-9554-702f56d335d7-image.png

                                      [
                                          {
                                              "id": "92d78df371e2dde2",
                                              "type": "debug",
                                              "z": "2e7d4cac81c671e3",
                                              "name": "Klingel",
                                              "active": true,
                                              "tosidebar": true,
                                              "console": false,
                                              "tostatus": false,
                                              "complete": "payload",
                                              "targetType": "msg",
                                              "statusVal": "",
                                              "statusType": "auto",
                                              "x": 1070,
                                              "y": 4340,
                                              "wires": []
                                          },
                                          {
                                              "id": "7a93f96057f10e61",
                                              "type": "inject",
                                              "z": "2e7d4cac81c671e3",
                                              "name": "Es klingelt",
                                              "props": [
                                                  {
                                                      "p": "payload"
                                                  },
                                                  {
                                                      "p": "topic",
                                                      "vt": "str"
                                                  }
                                              ],
                                              "repeat": "",
                                              "crontab": "",
                                              "once": false,
                                              "onceDelay": 0.1,
                                              "topic": "",
                                              "payload": "true",
                                              "payloadType": "bool",
                                              "x": 660,
                                              "y": 4340,
                                              "wires": [
                                                  [
                                                      "e0509ab40a79eeb9"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "e0509ab40a79eeb9",
                                              "type": "function",
                                              "z": "2e7d4cac81c671e3",
                                              "name": "zähler bis 3",
                                              "func": "let counter = context.get(\"zähler\") || 0;\ncounter ++;\ncontext.set(\"zähler\",counter %4);\nif (counter %4 !== 0 ) return msg; ",
                                              "outputs": 1,
                                              "noerr": 0,
                                              "initialize": "",
                                              "finalize": "",
                                              "libs": [],
                                              "x": 850,
                                              "y": 4340,
                                              "wires": [
                                                  [
                                                      "92d78df371e2dde2",
                                                      "5ed1e1284f6ff64c"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "5ed1e1284f6ff64c",
                                              "type": "delay",
                                              "z": "2e7d4cac81c671e3",
                                              "name": "",
                                              "pauseType": "delay",
                                              "timeout": "5",
                                              "timeoutUnits": "seconds",
                                              "rate": "1",
                                              "nbRateUnits": "1",
                                              "rateUnits": "second",
                                              "randomFirst": "1",
                                              "randomLast": "5",
                                              "randomUnits": "seconds",
                                              "drop": false,
                                              "allowrate": false,
                                              "outputs": 1,
                                              "x": 840,
                                              "y": 4420,
                                              "wires": [
                                                  [
                                                      "e0509ab40a79eeb9"
                                                  ]
                                              ]
                                          }
                                      ]
                                      

                                      So und hier nochmal das Gleiche ohne Javascript Programmierung und nur mit Change Node und Flow Kontext.

                                      d322c1d3-a77a-4793-9519-525589d88a1b-image.png

                                      [
                                         {
                                             "id": "92d78df371e2dde2",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "Klingel",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 1070,
                                             "y": 4340,
                                             "wires": []
                                         },
                                         {
                                             "id": "7a93f96057f10e61",
                                             "type": "inject",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "Es klingelt",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 },
                                                 {
                                                     "p": "topic",
                                                     "vt": "str"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "",
                                             "payload": "true",
                                             "payloadType": "bool",
                                             "x": 660,
                                             "y": 4340,
                                             "wires": [
                                                 [
                                                     "3c4db8300739ee09"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "5ed1e1284f6ff64c",
                                             "type": "delay",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "pauseType": "delay",
                                             "timeout": "5",
                                             "timeoutUnits": "seconds",
                                             "rate": "1",
                                             "nbRateUnits": "1",
                                             "rateUnits": "second",
                                             "randomFirst": "1",
                                             "randomLast": "5",
                                             "randomUnits": "seconds",
                                             "drop": false,
                                             "allowrate": false,
                                             "outputs": 1,
                                             "x": 840,
                                             "y": 4420,
                                             "wires": [
                                                 [
                                                     "3c4db8300739ee09"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "3c4db8300739ee09",
                                             "type": "change",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "counter",
                                                     "pt": "msg",
                                                     "to": "numKlingel",
                                                     "tot": "flow"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "counter",
                                                     "pt": "msg",
                                                     "to": "counter? counter : 0",
                                                     "tot": "jsonata"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "counter",
                                                     "pt": "msg",
                                                     "to": "(counter + 1) % 3",
                                                     "tot": "jsonata"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "reset",
                                                     "pt": "msg",
                                                     "to": "counter = 0 ? true : undefined",
                                                     "tot": "jsonata"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "numKlingel",
                                                     "pt": "flow",
                                                     "to": "counter",
                                                     "tot": "msg"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 850,
                                             "y": 4340,
                                             "wires": [
                                                 [
                                                     "92d78df371e2dde2",
                                                     "5ed1e1284f6ff64c"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "e0509ab40a79eeb9",
                                             "type": "function",
                                             "z": "2e7d4cac81c671e3",
                                             "d": true,
                                             "name": "zähler bis 3",
                                             "func": "let counter = context.get(\"zähler\") || 0;\ncounter ++;\ncontext.set(\"zähler\",counter %4);\nif (counter %4 !== 0 ) return msg; ",
                                             "outputs": 1,
                                             "noerr": 0,
                                             "initialize": "",
                                             "finalize": "",
                                             "libs": [],
                                             "x": 850,
                                             "y": 4480,
                                             "wires": [
                                                 []
                                             ]
                                         }
                                      ]
                                      

                                      So keine Schleife - aber noch ein ganz anderer Lösungsansatz ist, Du machst Dir zum Beispiel ein Array mit Nachrichten die Du schicken möchtest und splittest die einfach auf . Später wirst Du die split Node mal kennenlernen, die eine Schleife der herkömmlichen Programmierung ersetzt.

                                      Nehmen wir mal Du möchstest verschiedene Nachrichten einfach mit einer delay Node verschicken, dann geht zum Beispiel auch so was. 😉

                                      8cf09a04-ed42-46f9-b3e7-625d132eec15-image.png

                                      Du siehst die Möglichkeiten sind vielfältig. 😉

                                      [
                                         {
                                             "id": "d74c9ca8835acb75",
                                             "type": "inject",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "",
                                             "payload": "[true,false, true,false,true,false]",
                                             "payloadType": "json",
                                             "x": 970,
                                             "y": 4440,
                                             "wires": [
                                                 [
                                                     "23f41eaa57ebf7c3",
                                                     "8b0a0ba6f8f58f1c"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "23f41eaa57ebf7c3",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "Array",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 1130,
                                             "y": 4400,
                                             "wires": []
                                         },
                                         {
                                             "id": "8b0a0ba6f8f58f1c",
                                             "type": "split",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "splt": "\\n",
                                             "spltType": "str",
                                             "arraySplt": 1,
                                             "arraySpltType": "len",
                                             "stream": false,
                                             "addname": "",
                                             "x": 1130,
                                             "y": 4440,
                                             "wires": [
                                                 [
                                                     "afe4291f50fdaa48",
                                                     "49df363c23a16584"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "afe4291f50fdaa48",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "aufgesplittetes Array",
                                             "active": false,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 1320,
                                             "y": 4500,
                                             "wires": []
                                         },
                                         {
                                             "id": "49df363c23a16584",
                                             "type": "delay",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "pauseType": "rate",
                                             "timeout": "5",
                                             "timeoutUnits": "seconds",
                                             "rate": "1",
                                             "nbRateUnits": "5",
                                             "rateUnits": "second",
                                             "randomFirst": "1",
                                             "randomLast": "5",
                                             "randomUnits": "seconds",
                                             "drop": false,
                                             "allowrate": false,
                                             "outputs": 1,
                                             "x": 1320,
                                             "y": 4440,
                                             "wires": [
                                                 [
                                                     "e48688c7ddd744a9"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "e48688c7ddd744a9",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "in dosierter Form",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 1570,
                                             "y": 4440,
                                             "wires": []
                                         }
                                      ]
                                      

                                      Und natürlich kannst Du auch alles in JS programmieren mit einer function Node. 😉 - falls Du einfach codieren willst.

                                      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.

                                      D 1 Reply Last reply
                                      0
                                      • mickymM mickym

                                        @hotspot_2 Nein die Trigger Node kann auch unendlich oft in bestimmten Abständen triggern. Aber natürlich kannst Du auch Schleifen bauen - du musst ja nun den Ausgang mit dem Eingang verbinden. 😉

                                        66f58976-5f96-44a9-8518-aad3c4164337-image.png

                                        Das macht sie solange, bis Du die Trigger Node zurücksetzt.

                                        Wenn die Klingel zwischendrin wieder ausschalten musst, dann kannst auch wie bisher den trigger nehmen und über den 2.Ausgang die Schleife antriggern.

                                        Du kannst dann über eine Flow-variable zählen oder in dem Fall auch über eine function-Node und JS - wenn Dir für einen stupiden Zähler die Variable im FlowKontext zu viel ist. 😉 Hier mal 2 Varianten.

                                        Hier mal eine Variante mit Flow-Kontext:

                                        4ee6f2f9-ae2f-42a1-80c6-23d25747c7e7-image.png

                                        [
                                           {
                                               "id": "0af2185be7349ad3",
                                               "type": "trigger",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "op1": "true",
                                               "op2": "false",
                                               "op1type": "bool",
                                               "op2type": "bool",
                                               "duration": "2",
                                               "extend": false,
                                               "overrideDelay": false,
                                               "units": "s",
                                               "reset": "0",
                                               "bytopic": "all",
                                               "topic": "topic",
                                               "outputs": 2,
                                               "x": 480,
                                               "y": 4460,
                                               "wires": [
                                                   [
                                                       "92d78df371e2dde2"
                                                   ],
                                                   [
                                                       "92d78df371e2dde2",
                                                       "3c4db8300739ee09"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "92d78df371e2dde2",
                                               "type": "debug",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "Klingel",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 710,
                                               "y": 4440,
                                               "wires": []
                                           },
                                           {
                                               "id": "7a93f96057f10e61",
                                               "type": "inject",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "Es klingelt",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "payload": "true",
                                               "payloadType": "bool",
                                               "x": 280,
                                               "y": 4460,
                                               "wires": [
                                                   [
                                                       "0af2185be7349ad3"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "3c4db8300739ee09",
                                               "type": "change",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "numKlingel",
                                                       "tot": "flow"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "payload ? payload : 0",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "(payload + 1) % 2",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "numKlingel",
                                                       "pt": "flow",
                                                       "to": "payload",
                                                       "tot": "msg"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 490,
                                               "y": 4540,
                                               "wires": [
                                                   [
                                                       "0af2185be7349ad3"
                                                   ]
                                               ]
                                           }
                                        ]
                                        

                                        Hier das gleiche mit einer function node und node context, falls Du lieber mit Javascript programmieren willst. 😉

                                        cc0c6bd9-510c-4959-bf2d-9f42cad4ad3d-image.png

                                        ![4025c15c-8035-4349-ba7d-81e6b3f4ebd2-image.png](/assets/uploads/files/1681413147135-4025c15c-8035-4349-ba7d-81e6b3f4ebd2-image-resized.png) code_text
                                        

                                        Falls nicht zwischen true und false gewechselt werden muss, kannst Du einfach eine function Node nehmen und eine Delay node:

                                        2caf75ee-c432-4356-9554-702f56d335d7-image.png

                                        [
                                            {
                                                "id": "92d78df371e2dde2",
                                                "type": "debug",
                                                "z": "2e7d4cac81c671e3",
                                                "name": "Klingel",
                                                "active": true,
                                                "tosidebar": true,
                                                "console": false,
                                                "tostatus": false,
                                                "complete": "payload",
                                                "targetType": "msg",
                                                "statusVal": "",
                                                "statusType": "auto",
                                                "x": 1070,
                                                "y": 4340,
                                                "wires": []
                                            },
                                            {
                                                "id": "7a93f96057f10e61",
                                                "type": "inject",
                                                "z": "2e7d4cac81c671e3",
                                                "name": "Es klingelt",
                                                "props": [
                                                    {
                                                        "p": "payload"
                                                    },
                                                    {
                                                        "p": "topic",
                                                        "vt": "str"
                                                    }
                                                ],
                                                "repeat": "",
                                                "crontab": "",
                                                "once": false,
                                                "onceDelay": 0.1,
                                                "topic": "",
                                                "payload": "true",
                                                "payloadType": "bool",
                                                "x": 660,
                                                "y": 4340,
                                                "wires": [
                                                    [
                                                        "e0509ab40a79eeb9"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "e0509ab40a79eeb9",
                                                "type": "function",
                                                "z": "2e7d4cac81c671e3",
                                                "name": "zähler bis 3",
                                                "func": "let counter = context.get(\"zähler\") || 0;\ncounter ++;\ncontext.set(\"zähler\",counter %4);\nif (counter %4 !== 0 ) return msg; ",
                                                "outputs": 1,
                                                "noerr": 0,
                                                "initialize": "",
                                                "finalize": "",
                                                "libs": [],
                                                "x": 850,
                                                "y": 4340,
                                                "wires": [
                                                    [
                                                        "92d78df371e2dde2",
                                                        "5ed1e1284f6ff64c"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "5ed1e1284f6ff64c",
                                                "type": "delay",
                                                "z": "2e7d4cac81c671e3",
                                                "name": "",
                                                "pauseType": "delay",
                                                "timeout": "5",
                                                "timeoutUnits": "seconds",
                                                "rate": "1",
                                                "nbRateUnits": "1",
                                                "rateUnits": "second",
                                                "randomFirst": "1",
                                                "randomLast": "5",
                                                "randomUnits": "seconds",
                                                "drop": false,
                                                "allowrate": false,
                                                "outputs": 1,
                                                "x": 840,
                                                "y": 4420,
                                                "wires": [
                                                    [
                                                        "e0509ab40a79eeb9"
                                                    ]
                                                ]
                                            }
                                        ]
                                        

                                        So und hier nochmal das Gleiche ohne Javascript Programmierung und nur mit Change Node und Flow Kontext.

                                        d322c1d3-a77a-4793-9519-525589d88a1b-image.png

                                        [
                                           {
                                               "id": "92d78df371e2dde2",
                                               "type": "debug",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "Klingel",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1070,
                                               "y": 4340,
                                               "wires": []
                                           },
                                           {
                                               "id": "7a93f96057f10e61",
                                               "type": "inject",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "Es klingelt",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "payload": "true",
                                               "payloadType": "bool",
                                               "x": 660,
                                               "y": 4340,
                                               "wires": [
                                                   [
                                                       "3c4db8300739ee09"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "5ed1e1284f6ff64c",
                                               "type": "delay",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "pauseType": "delay",
                                               "timeout": "5",
                                               "timeoutUnits": "seconds",
                                               "rate": "1",
                                               "nbRateUnits": "1",
                                               "rateUnits": "second",
                                               "randomFirst": "1",
                                               "randomLast": "5",
                                               "randomUnits": "seconds",
                                               "drop": false,
                                               "allowrate": false,
                                               "outputs": 1,
                                               "x": 840,
                                               "y": 4420,
                                               "wires": [
                                                   [
                                                       "3c4db8300739ee09"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "3c4db8300739ee09",
                                               "type": "change",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "counter",
                                                       "pt": "msg",
                                                       "to": "numKlingel",
                                                       "tot": "flow"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "counter",
                                                       "pt": "msg",
                                                       "to": "counter? counter : 0",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "counter",
                                                       "pt": "msg",
                                                       "to": "(counter + 1) % 3",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "reset",
                                                       "pt": "msg",
                                                       "to": "counter = 0 ? true : undefined",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "numKlingel",
                                                       "pt": "flow",
                                                       "to": "counter",
                                                       "tot": "msg"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 850,
                                               "y": 4340,
                                               "wires": [
                                                   [
                                                       "92d78df371e2dde2",
                                                       "5ed1e1284f6ff64c"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "e0509ab40a79eeb9",
                                               "type": "function",
                                               "z": "2e7d4cac81c671e3",
                                               "d": true,
                                               "name": "zähler bis 3",
                                               "func": "let counter = context.get(\"zähler\") || 0;\ncounter ++;\ncontext.set(\"zähler\",counter %4);\nif (counter %4 !== 0 ) return msg; ",
                                               "outputs": 1,
                                               "noerr": 0,
                                               "initialize": "",
                                               "finalize": "",
                                               "libs": [],
                                               "x": 850,
                                               "y": 4480,
                                               "wires": [
                                                   []
                                               ]
                                           }
                                        ]
                                        

                                        So keine Schleife - aber noch ein ganz anderer Lösungsansatz ist, Du machst Dir zum Beispiel ein Array mit Nachrichten die Du schicken möchtest und splittest die einfach auf . Später wirst Du die split Node mal kennenlernen, die eine Schleife der herkömmlichen Programmierung ersetzt.

                                        Nehmen wir mal Du möchstest verschiedene Nachrichten einfach mit einer delay Node verschicken, dann geht zum Beispiel auch so was. 😉

                                        8cf09a04-ed42-46f9-b3e7-625d132eec15-image.png

                                        Du siehst die Möglichkeiten sind vielfältig. 😉

                                        [
                                           {
                                               "id": "d74c9ca8835acb75",
                                               "type": "inject",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "payload": "[true,false, true,false,true,false]",
                                               "payloadType": "json",
                                               "x": 970,
                                               "y": 4440,
                                               "wires": [
                                                   [
                                                       "23f41eaa57ebf7c3",
                                                       "8b0a0ba6f8f58f1c"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "23f41eaa57ebf7c3",
                                               "type": "debug",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "Array",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1130,
                                               "y": 4400,
                                               "wires": []
                                           },
                                           {
                                               "id": "8b0a0ba6f8f58f1c",
                                               "type": "split",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "splt": "\\n",
                                               "spltType": "str",
                                               "arraySplt": 1,
                                               "arraySpltType": "len",
                                               "stream": false,
                                               "addname": "",
                                               "x": 1130,
                                               "y": 4440,
                                               "wires": [
                                                   [
                                                       "afe4291f50fdaa48",
                                                       "49df363c23a16584"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "afe4291f50fdaa48",
                                               "type": "debug",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "aufgesplittetes Array",
                                               "active": false,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1320,
                                               "y": 4500,
                                               "wires": []
                                           },
                                           {
                                               "id": "49df363c23a16584",
                                               "type": "delay",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "",
                                               "pauseType": "rate",
                                               "timeout": "5",
                                               "timeoutUnits": "seconds",
                                               "rate": "1",
                                               "nbRateUnits": "5",
                                               "rateUnits": "second",
                                               "randomFirst": "1",
                                               "randomLast": "5",
                                               "randomUnits": "seconds",
                                               "drop": false,
                                               "allowrate": false,
                                               "outputs": 1,
                                               "x": 1320,
                                               "y": 4440,
                                               "wires": [
                                                   [
                                                       "e48688c7ddd744a9"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "e48688c7ddd744a9",
                                               "type": "debug",
                                               "z": "2e7d4cac81c671e3",
                                               "name": "in dosierter Form",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1570,
                                               "y": 4440,
                                               "wires": []
                                           }
                                        ]
                                        

                                        Und natürlich kannst Du auch alles in JS programmieren mit einer function Node. 😉 - falls Du einfach codieren willst.

                                        D Offline
                                        D Offline
                                        dos1973
                                        wrote on last edited by
                                        #422

                                        @mickym

                                        Node Red ist schon cool - aber ich finde sauschwer, daran liegts vielleicht. blockly bist schnell drin und lässt sich irgendwie leichter lesen.

                                        mickymM 1 Reply Last reply
                                        0
                                        • D dos1973

                                          @mickym

                                          Node Red ist schon cool - aber ich finde sauschwer, daran liegts vielleicht. blockly bist schnell drin und lässt sich irgendwie leichter lesen.

                                          mickymM Online
                                          mickymM Online
                                          mickym
                                          Most Active
                                          wrote on last edited by
                                          #423

                                          @dos1973 Na ich finde es ganz und gar nicht schwer und eigentlich viel einfacher zu lesen, weil Du Dich nur an den Kabeln entlang hangeln musst. Blockly ist viel zu starr an die herkömmliche Programmierlogik angelehnt und du kannst keine Funktionsblöcke bilden.

                                          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.

                                          D 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          603

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe