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 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
                            • B
                              bynight @Asgothian last edited by

                              @asgothian

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

                              Gruß,
                              Ronald

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

                                @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

                                1 Reply Last reply Reply Quote 1
                                • paul53
                                  paul53 @bynight last edited by

                                  @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 1 Reply Last reply Reply Quote 0
                                  • B
                                    bynight @paul53 last edited by

                                    @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

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

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

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

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

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

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

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

                                            @codierknecht
                                            na ich bin ja auch aus der Steinzeit, und ich werde mit 58 sicher kein Hochleistungsprogrammierer mehr. :-)) Da bremsen mich ein paar seltene Goto Sprünge nicht aus. Mit nem 3 Seiten Bauernhof hat man auch reichlich anderes zu tun... :-))

                                            Gruß,
                                            Ronald

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            77
                                            3496
                                            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