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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

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

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

    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

    OliverIOO mickymM AsgothianA paul53P 4 Antworten Letzte Antwort
    0
    • 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

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #2

      @bynight

      also du schreibst komplexe logik in eine nodered node.
      das ist nicht ganz so sinnvoll, aber schon möglich. macht das aber alles unübersichtlich,
      da bei komplexeren abläufen du nicht mehr weißt wo welche prüfungen/entscheidungen erfolgen.

      in javascript gibt es kein goto. eigentlich nur noch in wenigen modernen programmiersprachen.
      wenn jede bedingung in sich abgeschlossen ist, benötigt man auch kein goto mehr,
      da sobald eine bedingung getroffen hat und der code darin abgearbeitet ist,
      kann bei den nachfolgenden if/else ja nix mehr treffen.
      d.h. du schreibst immer schön

      if(msg.payload >=0 && msg.payload <19){
        msg.payload = 0;
      }
      if(msg.payload >=20 && msg.payload <39){
        msg.payload = 20;
      }
      etc.
      

      aber wie gesagt komplexe logik sollte als javascript in nodered nicht vorkommen.

      im ersten beispiel hätte es gereicht die ersten beiden prüfungen von der reihenfolge umzudrehen, also erst >85, dann >90. in deiner reihenfolge treffen bei werten >90 beide bedingungen und du hast nicht das erhalten was du wolltest. aber wie gesagt. die bedingungen jeweils vollständig abgeschlossen aufzuzählen macht später bei komplexeren szenarien auch die fehlersuche einfacher

      um das selbe in nodered zu erreichen nimm die switch node. dort kannst die ganzen regeln erfassen und ein ergebnis erzeugen. der logikfluss kann dann verschiedene bahnen verfolgen.

      hier ist das besser erklärt
      https://techexplorations.com/guides/esp32/node-red-esp32-project/node-red-switch/

      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

        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

        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #3

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

        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

          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

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von
          #4

          @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

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

          mickymM B 2 Antworten Letzte Antwort
          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

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            gelöscht

            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.

            AsgothianA 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              gelöscht

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von Asgothian
              #6

              @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 :)

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

              mickymM 1 Antwort Letzte Antwort
              0
              • AsgothianA 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 :)

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #7

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

                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 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @bynight

                  also du schreibst komplexe logik in eine nodered node.
                  das ist nicht ganz so sinnvoll, aber schon möglich. macht das aber alles unübersichtlich,
                  da bei komplexeren abläufen du nicht mehr weißt wo welche prüfungen/entscheidungen erfolgen.

                  in javascript gibt es kein goto. eigentlich nur noch in wenigen modernen programmiersprachen.
                  wenn jede bedingung in sich abgeschlossen ist, benötigt man auch kein goto mehr,
                  da sobald eine bedingung getroffen hat und der code darin abgearbeitet ist,
                  kann bei den nachfolgenden if/else ja nix mehr treffen.
                  d.h. du schreibst immer schön

                  if(msg.payload >=0 && msg.payload <19){
                    msg.payload = 0;
                  }
                  if(msg.payload >=20 && msg.payload <39){
                    msg.payload = 20;
                  }
                  etc.
                  

                  aber wie gesagt komplexe logik sollte als javascript in nodered nicht vorkommen.

                  im ersten beispiel hätte es gereicht die ersten beiden prüfungen von der reihenfolge umzudrehen, also erst >85, dann >90. in deiner reihenfolge treffen bei werten >90 beide bedingungen und du hast nicht das erhalten was du wolltest. aber wie gesagt. die bedingungen jeweils vollständig abgeschlossen aufzuzählen macht später bei komplexeren szenarien auch die fehlersuche einfacher

                  um das selbe in nodered zu erreichen nimm die switch node. dort kannst die ganzen regeln erfassen und ein ergebnis erzeugen. der logikfluss kann dann verschiedene bahnen verfolgen.

                  hier ist das besser erklärt
                  https://techexplorations.com/guides/esp32/node-red-esp32-project/node-red-switch/

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

                  @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

                  mickymM OliverIOO 2 Antworten Letzte Antwort
                  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

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @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

                    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 Antwort Letzte Antwort
                    0
                    • 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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #14

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

                              Gruß,
                              Ronald

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

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

                                  Gruß,
                                  Ronald

                                  mickymM Offline
                                  mickymM Offline
                                  mickym
                                  Most Active
                                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von
                                        #19

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

                                        Gruß,
                                        Ronald

                                        1 Antwort Letzte Antwort
                                        0
                                        • mickymM mickym

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

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

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

                                          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

                                          317

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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