Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Automatisierung
  5. goto in node red

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

goto in node red

Scheduled Pinned Locked Moved Automatisierung
77 Posts 6 Posters 6.5k Views 4 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

    @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 Offline
    B Offline
    bynight
    wrote on last edited by
    #10

    @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

    mickymM 1 Reply Last reply
    0
    • B bynight

      @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

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      wrote on last edited by
      #11

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

      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.

      B 1 Reply Last reply
      0
      • B bynight

        @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

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        wrote on last edited by
        #12

        @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

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        B 1 Reply Last reply
        0
        • AsgothianA Asgothian

          @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

          B Offline
          B Offline
          bynight
          wrote on last edited by
          #13

          @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

          AsgothianA 1 Reply Last reply
          0
          • mickymM mickym

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

            B Offline
            B Offline
            bynight
            wrote on last edited by
            #14

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

            Gruß,
            Ronald

            mickymM 1 Reply Last reply
            0
            • B bynight

              @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

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              wrote on last edited by Asgothian
              #15

              @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.

              ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
              "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

              B 1 Reply Last reply
              0
              • B bynight

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

                Gruß,
                Ronald

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                wrote on last edited by mickym
                #16

                @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.

                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.

                B 1 Reply Last reply
                0
                • OliverIOO OliverIO

                  @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 Offline
                  B Offline
                  bynight
                  wrote on last edited by
                  #17

                  @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

                  mickymM 1 Reply Last reply
                  0
                  • B bynight

                    @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

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    wrote on last edited by
                    #18

                    @bynight Ich habs Dir doch gezeigt. Mündet doch alles in einer Debug 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.

                    B 1 Reply Last reply
                    0
                    • mickymM 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 Offline
                      B Offline
                      bynight
                      wrote on last edited by
                      #19

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

                      Gruß,
                      Ronald

                      1 Reply Last reply
                      0
                      • mickymM mickym

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

                        B Offline
                        B Offline
                        bynight
                        wrote on last edited by
                        #20

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

                        1 Reply Last reply
                        0
                        • mickymM Offline
                          mickymM Offline
                          mickym
                          Most Active
                          wrote on last edited by
                          #21

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

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

                          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.

                          B 1 Reply Last reply
                          0
                          • mickymM mickym

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

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

                            B Offline
                            B Offline
                            bynight
                            wrote on last edited by
                            #22

                            @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

                            mickymM 1 Reply Last reply
                            0
                            • AsgothianA 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 Offline
                              B Offline
                              bynight
                              wrote on last edited by
                              #23

                              @asgothian

                              Danke für den Hinweis, daß bei return msg das Script beendet wird! :-)

                              Gruß,
                              Ronald

                              1 Reply Last reply
                              0
                              • B bynight

                                @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

                                mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                wrote on last edited by
                                #24

                                @bynight Ja dann viel Spaß- Ich kann Dir nur aus Erfahrung raten - vermeide Codieren in function Nodes soweit es geht. Es gibt nur wenige Fälle, wo es sinnvoll ist. Beschäftige Dich lieber mit Change Nodes und JSONATA.
                                https://docs.jsonata.org/overview

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                1 Reply Last reply
                                1
                                • B bynight

                                  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.
                                  Bisher sieht das im Funktionsmodul so aus und funktioniert auch:

                                  if(msg.payload >=90){
                                    msg.payload = 0;
                                    }
                                  else if (msg.payload >=85){
                                    msg.payload = 20;
                                    }
                                    else {
                                    msg.payload = 80;
                                    }
                                  return msg;
                                  

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

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

                                  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?

                                  MfG,
                                  Ronald

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  wrote on last edited by
                                  #25

                                  @bynight sagte: in etwa so:

                                  In "normalen" Programmiersprachen gibt es kein goto. Ich kenne es nur von Basic. Anstelle von

                                  goto end;
                                  

                                  schreibt man

                                  return msg;
                                  

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  B 1 Reply Last reply
                                  0
                                  • paul53P paul53

                                    @bynight sagte: in etwa so:

                                    In "normalen" Programmiersprachen gibt es kein goto. Ich kenne es nur von Basic. Anstelle von

                                    goto end;
                                    

                                    schreibt man

                                    return msg;
                                    
                                    B Offline
                                    B Offline
                                    bynight
                                    wrote on last edited by
                                    #26

                                    @paul53 hallo Paul,
                                    In Batch Dateien und Visual Basic, was ich am Meisten nutze, ist es gebräuchlich.
                                    Der Tip mit return msg statt exit oder break fehlte mir halt.

                                    Gruß Ronald

                                    mickymM OliverIOO CodierknechtC 3 Replies Last reply
                                    0
                                    • B bynight

                                      @paul53 hallo Paul,
                                      In Batch Dateien und Visual Basic, was ich am Meisten nutze, ist es gebräuchlich.
                                      Der Tip mit return msg statt exit oder break fehlte mir halt.

                                      Gruß Ronald

                                      mickymM Offline
                                      mickymM Offline
                                      mickym
                                      Most Active
                                      wrote on last edited by mickym
                                      #27

                                      @bynight Das mit dem return msg sieht hier nur als Abbruchbedingung aus. Das ist es aber nicht.
                                      Mit return mit msg gibst du nur die Kontrolle von der function Node wieder an den Flow zurück. Je nachdem was Du zurückgibst, also einfaches Objekt, Array von Objekten kannst Du ein oder mehrere Nachrichten an verschiedene Ausgänge des Flows zurückgeben.

                                      8977ec3f-291e-4011-89b3-899e1e980cd0-image.png

                                      Der Vorteil einer function Node ist auch, dass Du komplett neue Nachrichtenobjekte erzeugen kannst und Dich so einfach von den Eigenschaften des bisherigen Nachrichtenobjektes entledigen kannst.

                                      Aber wie gesagt meide function Nodes. Sie sind vor allem dann nützlich, wenn Du in einem NodeKontext Zustände speichern möchtest, um dann Berechnungen durchzuführen oder wenn Du andere NodeJS Module verwenden willst. Ansonsten schau Dir die Hilfe zu den Nodes an, auch zu der function Node:

                                      Neben return msg - kannst Du auch asynchron über node.send Nachrichten erzeugen. In der Hilfe ist außerdem ein Link zur Onlinedokumentation:
                                      15588c70-4d43-4b44-ae8f-3d428041ae85-image.png

                                      https://nodered.org/docs/user-guide/writing-functions

                                      Dort siehst Du wie Du über ein Array mehrere Ausgänge bedienen kannst

                                      2a99cecf-3448-41d5-b105-6e29cdd9ca96-image.png

                                      oder bei Arrays in Arrays mehrere Nachrichten aufeinmal an einen Ausgang schicken kannst.

                                      Im Übrigen ist es KEIN guter Stil mit return msg die function Node an unterschiedlichen Stellen abzubrechen, das macht das Debuggen unter Umständen schwierig und musst mit node.warn arbeiten. Aber das ist genau einer der Gründe warum man function NOdes meiden sollte.

                                      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.

                                      B 1 Reply Last reply
                                      0
                                      • B bynight

                                        @paul53 hallo Paul,
                                        In Batch Dateien und Visual Basic, was ich am Meisten nutze, ist es gebräuchlich.
                                        Der Tip mit return msg statt exit oder break fehlte mir halt.

                                        Gruß Ronald

                                        OliverIOO Offline
                                        OliverIOO Offline
                                        OliverIO
                                        wrote on last edited by
                                        #28

                                        @bynight sagte in goto in node red:

                                        In Batch Dateien und Visual Basic, was ich am Meisten nutze, ist es gebräuchlich.

                                        aber auch dort nicht gut. ist halt noch das erbe, das es in basic enthalten ist.
                                        auch dort kann man goto vermeiden (ausser bei der fehler behandlung on error goto)

                                        hier ein artikel, der versucht es verständlich zu machen.
                                        wen dein code nur 20/30 zeilen hat ok,

                                        nur der browseranteil für meine widgets zu rssfeed hat fast 900 zeilen.
                                        wenn da wild mit goto rumgesprungen wird bist du verloren.
                                        https://craftofcoding.wordpress.com/2022/03/28/ever-wondered-why-goto-is-considered-harmful/

                                        Meine Adapter und Widgets
                                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                        Links im Profil

                                        B 1 Reply Last reply
                                        0
                                        • B bynight

                                          @paul53 hallo Paul,
                                          In Batch Dateien und Visual Basic, was ich am Meisten nutze, ist es gebräuchlich.
                                          Der Tip mit return msg statt exit oder break fehlte mir halt.

                                          Gruß Ronald

                                          CodierknechtC Online
                                          CodierknechtC Online
                                          Codierknecht
                                          Developer Most Active
                                          wrote on last edited by
                                          #29

                                          @bynight sagte in goto in node red:

                                          In Batch Dateien und Visual Basic, was ich am Meisten nutze, ist es gebräuchlich.

                                          ... weil das Technik aus der Steinzeit ist.

                                          https://de.wikipedia.org/wiki/Spaghetticode

                                          Auch VB schreibt man heute komplett ohne GoTo. Außer - wie @OliverIO schon schrieb - beim "On Error Goto ...".

                                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                          HmIP|ZigBee|Tasmota|Unifi
                                          Zabbix Certified Specialist
                                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                          B 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

                                          582

                                          Online

                                          32.5k

                                          Users

                                          81.7k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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