Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    536

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

goto in node red

Geplant Angeheftet Gesperrt Verschoben Automatisierung
77 Beiträge 6 Kommentatoren 6.5k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • 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
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antworten Letzte Antwort
      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 Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @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 Offline
              B Offline
              bynight
              schrieb am zuletzt editiert von
              #30

              @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

              CodierknechtC 1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @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 Offline
                B Offline
                bynight
                schrieb am zuletzt editiert von
                #31

                @oliverio
                meine batch Dateien haben im Laufe der Jahre auch 300 bis 400 Zeilen gekriegt, bei 10 -15 goto Sprüngen, meist ans Ende oder zum Folgeabschnitt... aber noch nicht wild und nicht unübersichtlich... :-) Da habe ich mit komplexen Schleifen viel mehr Probleme...

                Gruß,
                Ronald

                1 Antwort Letzte Antwort
                0
                • mickymM 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 Offline
                  B Offline
                  bynight
                  schrieb am zuletzt editiert von
                  #32

                  @mickym

                  hab noch ne Frage... ist es möglich die Bezeichung der Nodes auf 2 oder 3 Zeilen umzubrechen, also untereinander zu schreiben?

                  Gruß,
                  Ronald

                  mickymM 1 Antwort Letzte Antwort
                  0
                  • B bynight

                    @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

                    CodierknechtC Online
                    CodierknechtC Online
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #33

                    @bynight sagte in goto in node red:

                    ich werde mit 58

                    Willkommen im Club :grinning:

                    "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

                    1 Antwort Letzte Antwort
                    0
                    • B bynight

                      @mickym

                      hab noch ne Frage... ist es möglich die Bezeichung der Nodes auf 2 oder 3 Zeilen umzubrechen, also untereinander zu schreiben?

                      Gruß,
                      Ronald

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #34

                      @bynight nein. Aber du kannst zu jeder Node eigene Texte verfassen und die kann man formatieren. Die stehen dann im info tab

                      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 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @bynight nein. Aber du kannst zu jeder Node eigene Texte verfassen und die kann man formatieren. Die stehen dann im info tab

                        B Offline
                        B Offline
                        bynight
                        schrieb am zuletzt editiert von
                        #35

                        @mickym das weiße comment?

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • B bynight

                          @mickym das weiße comment?

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von
                          #36

                          @bynight sagte in goto in node red:

                          @mickym das weiße comment?

                          Wenn ich daheim bin schicke ich dir ein Screenshot

                          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 Antwort Letzte Antwort
                          0
                          • mickymM mickym

                            @bynight sagte in goto in node red:

                            @mickym das weiße comment?

                            Wenn ich daheim bin schicke ich dir ein Screenshot

                            B Offline
                            B Offline
                            bynight
                            schrieb am zuletzt editiert von
                            #37

                            @mickym
                            Danke vielmals,

                            ich glaub für's erste hab ich's nun... :-))
                            node red Snap3.jpg

                            Gruß Ronald

                            mickymM 1 Antwort Letzte Antwort
                            0
                            • B bynight

                              @mickym
                              Danke vielmals,

                              ich glaub für's erste hab ich's nun... :-))
                              node red Snap3.jpg

                              Gruß Ronald

                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von
                              #38

                              @bynight

                              f8b03ea1-495f-47ac-942f-4aa7b60b23cc-image.png

                              Grundsätzlich kannst Du über die Beschreibung/Comment Schaltfläche Deinen eigenen Text schreiben und den siehst Du dann beim Anklicken in dem Info Tab rechts.

                              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 Antwort Letzte Antwort
                              0
                              • mickymM mickym

                                @bynight

                                f8b03ea1-495f-47ac-942f-4aa7b60b23cc-image.png

                                Grundsätzlich kannst Du über die Beschreibung/Comment Schaltfläche Deinen eigenen Text schreiben und den siehst Du dann beim Anklicken in dem Info Tab rechts.

                                B Offline
                                B Offline
                                bynight
                                schrieb am zuletzt editiert von
                                #39

                                @mickym
                                Ja, aber da sieht man eben auch immer nur den Node den man angeklickt hat... Aber Danke für die Info!

                                mickymM 1 Antwort Letzte Antwort
                                0
                                • B bynight

                                  @mickym
                                  Ja, aber da sieht man eben auch immer nur den Node den man angeklickt hat... Aber Danke für die Info!

                                  mickymM Online
                                  mickymM Online
                                  mickym
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #40

                                  @bynight Du kannst auch noch comment Nodes verwenden - oder Gruppen verwenden und diese beschriften.

                                  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 Antwort Letzte Antwort
                                  0
                                  • mickymM mickym

                                    @bynight Du kannst auch noch comment Nodes verwenden - oder Gruppen verwenden und diese beschriften.

                                    B Offline
                                    B Offline
                                    bynight
                                    schrieb am zuletzt editiert von
                                    #41

                                    @mickym noch eine Frage... wie macht man aus einem fortlaufenden Wert einen täglichen Wert, also aus total kWh daily kWh? Dafür gibt es doch bestimmt auch einen Node?

                                    mickymM 1 Antwort Letzte Antwort
                                    0
                                    • B bynight

                                      @mickym noch eine Frage... wie macht man aus einem fortlaufenden Wert einen täglichen Wert, also aus total kWh daily kWh? Dafür gibt es doch bestimmt auch einen Node?

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #42

                                      @bynight Na so einfach ist das nicht. Ich weiß auch nichts über Deine Daten. Ich habe mal einen Subflow gemacht, der prüft die Zählerstände (als Deinen totalen Wert) aber in Verbindung mit dem iobroker.

                                      Ich hab mal einen eigenen Subflow gemacht, https://forum.iobroker.net/post/1148029

                                      Da kannst ja schauen, ob der Dir was hilft.

                                      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 Antwort Letzte Antwort
                                      0
                                      • mickymM mickym

                                        @bynight Na so einfach ist das nicht. Ich weiß auch nichts über Deine Daten. Ich habe mal einen Subflow gemacht, der prüft die Zählerstände (als Deinen totalen Wert) aber in Verbindung mit dem iobroker.

                                        Ich hab mal einen eigenen Subflow gemacht, https://forum.iobroker.net/post/1148029

                                        Da kannst ja schauen, ob der Dir was hilft.

                                        B Offline
                                        B Offline
                                        bynight
                                        schrieb am zuletzt editiert von
                                        #43

                                        @mickym Danke! Das muß ich gleich mal schauen...
                                        In Homeassist gibt es unter Helfern eine Subroutine "Verbrauchszähler" Da läßt sich aus jedem Wert ein viertelstündlicher, täglicher, wöchentlicher, monatlicher... Wert kreieren. Den brauche ich ja z.B. bei allen Energiesteckdosen oder -schaltern die keinen täglichen Wert ausgeben, wie z.B. Shelly Geräte... Die Solarenergie messe ich z.B. mit einem Shelly 3EM vor dem Victron MPII. Die tägliche Anzeige sollte in dem Fall um Mitternacht wieder auf 0 springen...

                                        mickymM 1 Antwort Letzte Antwort
                                        0
                                        • B bynight

                                          @mickym Danke! Das muß ich gleich mal schauen...
                                          In Homeassist gibt es unter Helfern eine Subroutine "Verbrauchszähler" Da läßt sich aus jedem Wert ein viertelstündlicher, täglicher, wöchentlicher, monatlicher... Wert kreieren. Den brauche ich ja z.B. bei allen Energiesteckdosen oder -schaltern die keinen täglichen Wert ausgeben, wie z.B. Shelly Geräte... Die Solarenergie messe ich z.B. mit einem Shelly 3EM vor dem Victron MPII. Die tägliche Anzeige sollte in dem Fall um Mitternacht wieder auf 0 springen...

                                          mickymM Online
                                          mickymM Online
                                          mickym
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #44

                                          @bynight Ja dann musst Dir selber einen Flow basteln - ich würde Dir für die Zeiten die cronplus Node empfehlen, die ist am flexibelsten und am mächtigsten. Du musst halt die Daten irgendwo hinschreiben, wenn Du kein iobroker nutzt.

                                          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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          341

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe