Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Automatisierung
    5. goto in node red

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    goto in node red

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @bynight last edited by

      @bynight Wenn Du lieber in Javascript programmierst anstelle die Vorteile der grafischen Logik zu verwenden. Du kannst zwar alles in Jacascript machen - aber damit nutzt du die Fähigkeiten überhaupt nicht. Ich würde mir das gar nicht erst angewöhnen.

      Du kannst ganze Flows in JS schreiben, aber dann geht der Sinn verloren.

      Hier beide Möglichkeiten:

      1a0d7d93-2b0c-428b-8b1f-bf4ba025007e-image.png

      [{"id":"cb15633014ceaf00","type":"function","z":"517cd16e4d7e6ae4","name":"Switch","func":"switch (true)\n{\n    case msg.payload >=90:\n        msg.payload = 0;\n        break;\n    case msg.payload >= 80:\n        msg.payload = 20;\n        break;   \n    case msg.payload >= 70:\n        msg.payload = 40;\n        break;\n    case msg.payload >= 60:\n        msg.payload = 80;\n        break;\n\n}\n\n\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":5900,"wires":[["418eec8cde31dae0"]]},{"id":"65b9d73084cd0396","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"95","payloadType":"num","x":370,"y":5840,"wires":[["cb15633014ceaf00"]]},{"id":"ea1ec150c5e10748","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"85","payloadType":"num","x":370,"y":5880,"wires":[["cb15633014ceaf00"]]},{"id":"c67cd54d750b7b3e","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"75","payloadType":"num","x":370,"y":5920,"wires":[["cb15633014ceaf00"]]},{"id":"1988ed7a307a4c32","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"65","payloadType":"num","x":370,"y":5960,"wires":[["cb15633014ceaf00"]]},{"id":"418eec8cde31dae0","type":"debug","z":"517cd16e4d7e6ae4","name":"Ergebnis Codiererei","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":720,"y":5900,"wires":[]},{"id":"6653f1fd0f902177","type":"switch","z":"517cd16e4d7e6ae4","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gte","v":"90","vt":"num"},{"t":"gte","v":"80","vt":"num"},{"t":"gte","v":"70","vt":"num"},{"t":"gte","v":"60","vt":"num"}],"checkall":"false","repair":false,"outputs":4,"x":530,"y":6120,"wires":[["08f09e9586b0d82f"],["cfae279c1400d125"],["085b219bcfc4067b"],["c6f93160fe108127"]]},{"id":"6c70d250e591dceb","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"95","payloadType":"num","x":370,"y":6060,"wires":[["6653f1fd0f902177"]]},{"id":"e4bb43106ca37c61","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"85","payloadType":"num","x":370,"y":6100,"wires":[["6653f1fd0f902177"]]},{"id":"2bed4f883e799d37","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"75","payloadType":"num","x":370,"y":6140,"wires":[["6653f1fd0f902177"]]},{"id":"692ce0ddf8f1e81f","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"65","payloadType":"num","x":370,"y":6180,"wires":[["6653f1fd0f902177"]]},{"id":"08f09e9586b0d82f","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":6060,"wires":[["e690cf951f307176"]]},{"id":"cfae279c1400d125","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"20","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":6100,"wires":[["e690cf951f307176"]]},{"id":"085b219bcfc4067b","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"40","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":6140,"wires":[["e690cf951f307176"]]},{"id":"c6f93160fe108127","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"80","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":6180,"wires":[["e690cf951f307176"]]},{"id":"e690cf951f307176","type":"debug","z":"517cd16e4d7e6ae4","name":"so ist es richtig","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":940,"y":6120,"wires":[]}]
      

      Für den reinen JS - nimmst Du halt switch case.

      switch (true)
      {
          case msg.payload >=90:
              msg.payload = 0;
              break;
          case msg.payload >= 80:
              msg.payload = 20;
              break;   
          case msg.payload >= 70:
              msg.payload = 40;
              break;
          case msg.payload >= 60:
              msg.payload = 80;
              break;
      
      }
      
      
      
      return msg;
      
      B 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @bynight last edited by

        @bynight sagte in goto in node red:

        Hallo,

        bin bei Node red und java völlig neu. In Node Red gibt es wohl keine Sprungbefehle. Ich möchte gern verschidenen SOC zuständen verschiedene Ladeströme zuweisen.

        ich hätte es gern etwas strukturierter und flexibler in der Abstufung, in etwa so:

        wie schreibt man das in in Java bzw. Node.js ohne goto?
        Und wie würde man das ohne Funktionsbaustein mit den vorhandenen Bausteinen realisieren?

        Einmal vorweg:

        • Die Sprache heisst Javascript, nicht Java.
        • Node Red ist eine Logikmaschine die auf NodeJS aufsetzt.
        • goto ist (in meinen Augen) eher etwas was alles unübersichtlich macht, nicht strukturierter.

        Die einfachste Methode ist direkt nach dem setzen der msg.payload das return zu setzen.

         if(msg.payload >=90){
           msg.payload = 0;
           return msg;
        }
         if(msg.payload >=80){
           msg.payload = 20;
          return msg;
        }
         if{msg.payload >= 70{
          msg.payload = 40;
          return msg;
        }
         if{msg.payload >= 60{
          msg.payload = 80;
          return msg;
        }
        return msg;
        

        Und wie würde man das ohne Funktionsbaustein mit den vorhandenen Bausteinen realisieren?

        Welche Bausteine meinst du ?

        MfG,
        Ronald

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

          gelöscht

          Asgothian 1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @mickym last edited by Asgothian

            @mickym sagte in goto in node red:

            @asgothian sagte in goto in node red:

            Die einfachste Methode ist direkt nach dem setzen der msg.payload das return zu setzen.

            Oder meine switch case Lösung. 😉

            Kürzer ist sie.
            Besser lesbar - na ja.
            In der Logik aber eher schwierig - die meisten kennen switch - case nur mit expliziten Werten, nicht mit >= vergleichen.

            A.
            Nachtrag - elegant ist die Lösung allerdings 🙂

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

              @asgothian Ich hab mein Post doch schon gelöscht. 😉

              1 Reply Last reply Reply Quote 0
              • B
                bynight @OliverIO last edited by

                @oliverio
                Danke vielmals! Das Function Node Beispiel sieht erst mal gut aus. 🙂
                Deinen Einwand zum 2. Beispiel verstehe ich nicht. Das funktioniert ja wie gewünscht. Wenn Werte >90 auftreten wird nur das erste if ausgeführt und damit ist die Abfrage beendet. Passt.

                Wenn ich Deiner Empfehlung folgen und die 85 nach oben nehmen würde, würden Werte >90 ja schon bei der ü85 Abfrage zutreffen und die Abfrage wäre beendet. >90 würde dann gar nicht mehr erreicht.

                Mit dem dem Switch Node habe ich es auch schon versucht, bin da aber nicht weiter gekommen. Je mehr Abfragen ich anlege, desto mehr Ausgänge erhalte ich. Ich will ja aber verschiedene Werte an EINEM Ausgang bekommen. Hab das dann verworfen...

                Gruß,
                Ronald

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

                  @bynight sagte in goto in node red:

                  Mit dem dem Switch Node habe ich es auch schon versucht, bin da aber nicht weiter gekommen. Je mehr Abfragen ich anlege, desto mehr Ausgänge erhalte ich. Ich will ja aber verschiedene Werte an EINEM Ausgang bekommen. Hab das dann verworfen...

                  Das ist ja Sinn der Sache - man führt dann ja den Flow wieder zusammen, siehst ja am Beispiel

                  1 Reply Last reply Reply Quote 0
                  • B
                    bynight @mickym last edited by

                    @mickym
                    Danke vielmals!
                    Nein, möchte ich nicht. Da das alles neu ist will ich sehen was für mich übersichtlicher und auch im Nachhinein besser zu verstehen ist. Deshalb wollte ich gern eine Lösung für beide Möglichkeiten haben.
                    Break hatte ich auch schon erwogen aber da wäre ich ja vermutlich nur aus einer if Abfrage rausgekommen. Ich wollte aber alle verlassen. Die case Lösung scheint dafür perfekt! Gefällt mir sehr gut. Sowas habe ich gesucht. 🙂

                    Danke auch für die grafische Lösung! Das werde ich mir dann auch anschauen... 🙂

                    Gruß,
                    Ronald

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

                      @bynight Wie gesagt importiere einfach meinen Flow - dann hast Du beide Möglichkeiten. Du weißt wie Du importierst?

                      B 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @bynight last edited by

                        @bynight sagte in goto in node red:

                        Je mehr Abfragen ich anlege, desto mehr Ausgänge erhalte ich. Ich will ja aber verschiedene Werte an EINEM Ausgang bekommen.

                        du kannst durchaus die ganzen ausgänge auch nur mit einer nachfolge node verbinden.
                        dann hast du die Unterscheidung ja immer noch in den daten, anhand du dann danach entscheiden kannst was passiert

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          bynight @Asgothian last edited by

                          @asgothian
                          Danke vielmals!
                          Ich bin auch kein goto Fan, aber mir fiel hier nichts anderes ein um ans Ende zu gelangen, da ich ich nicht wußte inwieweit in JAVASCRIPT do while for schleifen funktionieren, die man dann mit break verlassen kann. Bin auch kein Programmierer.

                          Deine Lösung mit dem Return hatte ich auch erst erwogen, bin aber davon ausgegeangen daß dann bei einem Wert von 95 jedes if mitgenommen und ausgeführt wird.
                          Ist das nicht so? Bedeutet return msg daß an der Stelle die Bearbeitung des Scriptes abgebrochen wird??

                          Ich meine mit Bausteinen die Nodes wie Switch z.B....

                          Gruß,
                          Ronald

                          Asgothian 1 Reply Last reply Reply Quote 0
                          • B
                            bynight @mickym last edited by

                            @mickym
                            Nein, weiß ich nicht. Importieren wäre natürlich genial... 🙂

                            Gruß,
                            Ronald

                            mickym 1 Reply Last reply Reply Quote 0
                            • Asgothian
                              Asgothian Developer @bynight last edited by Asgothian

                              @bynight sagte in goto in node red:

                              Deine Lösung mit dem Return hatte ich auch erst erwogen, bin aber davon ausgegeangen daß dann bei einem Wert von 95 jedes if mitgenommen und ausgeführt wird.
                              Ist das nicht so? Bedeutet return msg daß an der Stelle die Bearbeitung des Scriptes abgebrochen wird??

                              Ja. Intern (sprich in dem code der aus der grafischen Struktur gemacht wird) ist es eine Funktion, return beendet die Funktion und liefert den Wert zurück.

                              A.

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

                                @bynight sagte in goto in node red:

                                @mickym
                                Nein, weiß ich nicht. Importieren wäre natürlich genial... 🙂

                                Gruß,
                                Ronald

                                Du machst den Spoiler auf und kopierst den Inhalt

                                5fb783dd-a2fb-4ba9-a4cd-956327ff86cf-image.png

                                mit der Schaltfläche Copy to Clipboard in die Zwischenablage.

                                In Node-Red gehst du über das Hamburger Menü und wählst Import:

                                3687f372-460c-4350-8dd1-6f81235d961e-image.png

                                In das rosa Fenster kopierst Du den Inhalt der Zwischenablage

                                93ee0d48-9590-4d69-a95e-be8db3fdf470-image.png

                                und klickst dann auf Import.

                                B 1 Reply Last reply Reply Quote 0
                                • B
                                  bynight @OliverIO last edited by

                                  @oliverio
                                  puh... das ist mir noch nicht so recht klar...
                                  Also

                                  90 Ausgang 1
                                  80 Ausgang 2
                                  70 Ausgang 3
                                  Dann alles wieder zusammen auf einen Nachfolgenode. Aber wie macht der dann daraus msg.payload 0, 20 und 40?

                                  Gruß,
                                  Ronald

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

                                    @bynight Ich habs Dir doch gezeigt. Mündet doch alles in einer Debug Node.

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      bynight @mickym last edited by

                                      @mickym
                                      genial!!!
                                      Nun sehe ich auch wie die Zusammenführung funktioniert :-)))))))))

                                      Gruß,
                                      Ronald

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        bynight @mickym last edited by

                                        @mickym
                                        Sorry, ich muß die Antworten aber auch bissel der Reihe nach beantworten... ;-))

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

                                          724c7a2b-8c92-4319-b010-089491d52af7-image.png

                                          Die Debug Ausgabe findest Du unter dem Bug - also der Wanze.

                                          B 1 Reply Last reply Reply Quote 0
                                          • B
                                            bynight @mickym last edited by

                                            @mickym
                                            ja, die Wanze habe ich schon verwendet. 😉
                                            Danke vielmals an alle für die schnelle und ausführliche Hilfe!
                                            Nun habe ich erst mal etwas Stoff zum Probieren für die nächsten Tage! :-))))

                                            Gruß,
                                            Ronald

                                            mickym 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            964
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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