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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. shelly Status zur Fallunterscheidung nutzen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

shelly Status zur Fallunterscheidung nutzen

Scheduled Pinned Locked Moved Node-Red
38 Posts 2 Posters 1.7k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Rudi 3

    Hallo Micky,
    hier der Auszug vom Shelly:
    shelly.PNG

    Ich möchte den Status bei "ison..." nutzen. Ich habe diverse Versuche gemacht, aber ich hänge immer daran, das der Status nicht richtig in der function node ankommt. In der Tat war der flow mal übersichtlicher, ist allerdings durch die vielen versuche inzwischen ziemlich zerpflückt...

    mickymM Online
    mickymM Online
    mickym
    Most Active
    wrote on last edited by mickym
    #5

    @rudi-3

    @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

    Hallo Micky,
    hier der Auszug vom Shelly:
    shelly.PNG

    Ich möchte den Status bei "ison..." nutzen. Ich habe diverse Versuche gemacht, aber ich hänge immer daran, das der Status nicht richtig in der function node ankommt. In der Tat war der flow mal übersichtlicher, ist allerdings durch die vielen versuche inzwischen ziemlich zerpflückt...

    das bringt nichts - damit man es in eine Inject Node bringt musst Du den Wert aus dem Debug Fenster kopieren und hier in Code Tags einfügen.

    Sprich Du gehst im Debug Fenster auf die oberste Ebene der payload und kopierst das ganze Objekt in die Zwischenablage:

    240e804c-a49c-4edf-a3f6-8e1f71b39b84-image.png

    Dann fügst Du es hier in Code tags ein:

    {"emeters":[{"power":100},{"power":200},{"power":1300}]}
    

    Damit kann ich das über Select all in die Zwischenablage kopieren und in eine Inject Node transportieren, dann kann ich damit was anfangen. - Aber ich hab ja die Objekte oben zumindest emuliert (was ich aus Deinen function Nodes entnehmen konnte) und selbst ein Objekt erstellt.

    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.

    R 1 Reply Last reply
    0
    • mickymM mickym

      @rudi-3

      @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

      Hallo Micky,
      hier der Auszug vom Shelly:
      shelly.PNG

      Ich möchte den Status bei "ison..." nutzen. Ich habe diverse Versuche gemacht, aber ich hänge immer daran, das der Status nicht richtig in der function node ankommt. In der Tat war der flow mal übersichtlicher, ist allerdings durch die vielen versuche inzwischen ziemlich zerpflückt...

      das bringt nichts - damit man es in eine Inject Node bringt musst Du den Wert aus dem Debug Fenster kopieren und hier in Code Tags einfügen.

      Sprich Du gehst im Debug Fenster auf die oberste Ebene der payload und kopierst das ganze Objekt in die Zwischenablage:

      240e804c-a49c-4edf-a3f6-8e1f71b39b84-image.png

      Dann fügst Du es hier in Code tags ein:

      {"emeters":[{"power":100},{"power":200},{"power":1300}]}
      

      Damit kann ich das über Select all in die Zwischenablage kopieren und in eine Inject Node transportieren, dann kann ich damit was anfangen. - Aber ich hab ja die Objekte oben zumindest emuliert (was ich aus Deinen function Nodes entnehmen konnte) und selbst ein Objekt erstellt.

      R Offline
      R Offline
      Rudi 3
      wrote on last edited by
      #6

      Hier nochmal in Code-tags:

      {"status":{"wifi_sta":{"connected":true,"ssid":"Kellerfritz","ip":"192.168.2.196","rssi":-46},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"15:16","serial":1,"has_update":true,"mac":"10521C06EE47","relays":[{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true},{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true}],"rollers":[{"state":"stop","power":0,"is_valid":true,"safety_switch":false,"overtemperature":false,"stop_reason":"normal","last_direction":"stop","current_pos":101,"calibrating":false,"positioning":true}],"meters":[{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0},{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0}],"inputs":[{"input":0},{"input":0}],"temperature":56.18,"overtemperature":false,"tmp":{"tC":56.18,"tF":133.12,"is_valid":"true"},"update":{"status":"pending","has_update":true,"new_version":"20230503-095750/v1.13.0-g9aed950","old_version":"20191217-074901/1047-long-id-for-shelly-devices@ab2bdce7"},"ram_total":49480,"ram_free":37016,"fs_size":233681,"fs_free":157628,"voltage":235.06,"uptime":6684},"payload":{"relays":[{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true},{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true}],"rollers":[{"state":"stop","power":0,"is_valid":true,"safety_switch":false,"overtemperature":false,"stop_reason":"normal","last_direction":"stop","current_pos":101,"calibrating":false,"positioning":true}],"meters":[{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0},{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0}],"inputs":[{"input":0},{"input":0}],"tmp":{"tC":56.18,"tF":133.12,"is_valid":"true"}},"_msgid":"9bd7710f1fddad89"}
      
      mickymM 1 Reply Last reply
      0
      • R Rudi 3

        Hier nochmal in Code-tags:

        {"status":{"wifi_sta":{"connected":true,"ssid":"Kellerfritz","ip":"192.168.2.196","rssi":-46},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"15:16","serial":1,"has_update":true,"mac":"10521C06EE47","relays":[{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true},{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true}],"rollers":[{"state":"stop","power":0,"is_valid":true,"safety_switch":false,"overtemperature":false,"stop_reason":"normal","last_direction":"stop","current_pos":101,"calibrating":false,"positioning":true}],"meters":[{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0},{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0}],"inputs":[{"input":0},{"input":0}],"temperature":56.18,"overtemperature":false,"tmp":{"tC":56.18,"tF":133.12,"is_valid":"true"},"update":{"status":"pending","has_update":true,"new_version":"20230503-095750/v1.13.0-g9aed950","old_version":"20191217-074901/1047-long-id-for-shelly-devices@ab2bdce7"},"ram_total":49480,"ram_free":37016,"fs_size":233681,"fs_free":157628,"voltage":235.06,"uptime":6684},"payload":{"relays":[{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true},{"ison":false,"has_timer":false,"overpower":false,"overtemperature":false,"is_valid":true}],"rollers":[{"state":"stop","power":0,"is_valid":true,"safety_switch":false,"overtemperature":false,"stop_reason":"normal","last_direction":"stop","current_pos":101,"calibrating":false,"positioning":true}],"meters":[{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0},{"power":0,"is_valid":true,"timestamp":1689347786,"counters":[0,0,0],"total":0}],"inputs":[{"input":0},{"input":0}],"tmp":{"tC":56.18,"tF":133.12,"is_valid":"true"}},"_msgid":"9bd7710f1fddad89"}
        
        mickymM Online
        mickymM Online
        mickym
        Most Active
        wrote on last edited by mickym
        #7

        @rudi-3 Ok danke in Deiner function Node stand irgendwas von emeters - nun sind es aber nur meters - das deckt sich also NICHT.

        3cb35157-425e-4ea6-998a-51a93ff64243-image.png

        Musst Du dann halt ändern - aber das Prinzip für den oberen Flow solltest Du ja verstanden haben.

        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.

        R 1 Reply Last reply
        0
        • mickymM mickym

          @rudi-3 Ok danke in Deiner function Node stand irgendwas von emeters - nun sind es aber nur meters - das deckt sich also NICHT.

          3cb35157-425e-4ea6-998a-51a93ff64243-image.png

          Musst Du dann halt ändern - aber das Prinzip für den oberen Flow solltest Du ja verstanden haben.

          R Offline
          R Offline
          Rudi 3
          wrote on last edited by
          #8

          Hallo Micky, ich habe es gerade mal nachvollzogen und statt dem inject node das shelly 3EM angehängt. -funktioniert. Soweit ich es verstanden habe, setzt Du die payload mit: payload.emeters.power und das bringt dann alle drei Phasen in ein array? Dein Aufbau ist in der Tat wesentlich kompakter...

          mickymM 1 Reply Last reply
          0
          • R Rudi 3

            Hallo Micky, ich habe es gerade mal nachvollzogen und statt dem inject node das shelly 3EM angehängt. -funktioniert. Soweit ich es verstanden habe, setzt Du die payload mit: payload.emeters.power und das bringt dann alle drei Phasen in ein array? Dein Aufbau ist in der Tat wesentlich kompakter...

            mickymM Online
            mickymM Online
            mickym
            Most Active
            wrote on last edited by mickym
            #9

            @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

            Soweit ich es verstanden habe, setzt Du die payload mit: payload.emeters.power und das bringt dann alle drei Phasen in ein array?

            Ja - das ist der Riesenvorteil von JSONATA - da es einzelne Ergebnisse einzeln darstellt - mehrfache automatisch in ein Array verfrachtet.

            Das ganze geht dann noch kompakter wenn Du das als EINE Regel definierst in EINER Change Node machst:

            023d1524-cbc2-4caa-88e2-799c37d2f697-image.png

            Damit ist alles direkt abgefrühstückt und kannst in deinem Gauge ausgeben.

            In Summe schaut dass dann so aus:

            c71c8773-b453-42d9-bb1e-51e24d1ec626-image.png

            und das ohne irgendwelche Zusatznodes und Spirenzchen. ;)
            Hier nochmal zum Import:

            [
                {
                    "id": "17cb0b933b223630",
                    "type": "ui_text",
                    "z": "a3ff42d9e3f31af7",
                    "g": "1c8edee959741467",
                    "group": "504d6fd769a4772b",
                    "order": 3,
                    "width": 0,
                    "height": 0,
                    "name": "",
                    "label": "Phase3",
                    "format": "{{msg.payload.emeters[2].power}}",
                    "layout": "row-spread",
                    "className": "",
                    "style": false,
                    "font": "",
                    "fontSize": "",
                    "color": "#000000",
                    "x": 440,
                    "y": 460,
                    "wires": []
                },
                {
                    "id": "504d6fd769a4772b",
                    "type": "ui_group",
                    "name": "Phasen",
                    "tab": "942cb02b.fe603",
                    "order": 1,
                    "disp": true,
                    "width": "6",
                    "collapse": false,
                    "className": ""
                },
                {
                    "id": "942cb02b.fe603",
                    "type": "ui_tab",
                    "name": "Energiemanagement",
                    "icon": "home",
                    "order": 1,
                    "disabled": false,
                    "hidden": false
                }
            ]
            

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

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

              Als erstes nehme ich mal diese 3. Ausgabe aus - das soll wohl eine Anzeige sein, die ist aber nicht definiert und gesetzt:

              7f3902ca-6bee-4d12-b727-84930b05683e-image.png

              Ich geh mal davon aus, dass es LED2 heißen soll. Und hab die Ausgabe mal so geändert:

              return [msg.payload2,LED1,LED2];
              

              Ansonsten kann ich Deinen Fehler nachvollziehen:
              b9304c98-faa2-44c7-991e-5f8378fb41d7-image.png

              So UND nun komme ich zu dem Punkt - warum DU function Nodes VERMEIDEN sollst, wo es geht. Du kannst keine Debug NOdes ansetzen und musst nun im Code suchen. Schöner wäre es doch in einem Flow zu suchen. Wir sollten - ABER NUR WENN DU Lust hast - im letzten Schritt Deine function Node durch einen schönen Flow ersetzen, was meinst Du?

              Aber als erstes suchen wir wo der Fehler auftritt.

              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.

              R 2 Replies Last reply
              0
              • mickymM mickym

                Als erstes nehme ich mal diese 3. Ausgabe aus - das soll wohl eine Anzeige sein, die ist aber nicht definiert und gesetzt:

                7f3902ca-6bee-4d12-b727-84930b05683e-image.png

                Ich geh mal davon aus, dass es LED2 heißen soll. Und hab die Ausgabe mal so geändert:

                return [msg.payload2,LED1,LED2];
                

                Ansonsten kann ich Deinen Fehler nachvollziehen:
                b9304c98-faa2-44c7-991e-5f8378fb41d7-image.png

                So UND nun komme ich zu dem Punkt - warum DU function Nodes VERMEIDEN sollst, wo es geht. Du kannst keine Debug NOdes ansetzen und musst nun im Code suchen. Schöner wäre es doch in einem Flow zu suchen. Wir sollten - ABER NUR WENN DU Lust hast - im letzten Schritt Deine function Node durch einen schönen Flow ersetzen, was meinst Du?

                Aber als erstes suchen wir wo der Fehler auftritt.

                R Offline
                R Offline
                Rudi 3
                wrote on last edited by
                #11

                Stimmt, die Variable "statusrel0" war ein Debug-Versuch von mir, die hatte ich anstelle einer LED genutzt. Mir wäre es auch sehr lieb, wenn ich die Fallunterscheidungen ohne Programmcode machen könnte, schliesslich war es genau das was ich an Node-Red so gut finde. Die function node war dann eher ein Behelf, da ich keine Idee hat die Unterscheidung mit nodes zu machen. Man fällt irgendwie in die Programmierübungen aus der Schulzeit zurück ;-)

                mickymM 1 Reply Last reply
                0
                • R Rudi 3

                  Stimmt, die Variable "statusrel0" war ein Debug-Versuch von mir, die hatte ich anstelle einer LED genutzt. Mir wäre es auch sehr lieb, wenn ich die Fallunterscheidungen ohne Programmcode machen könnte, schliesslich war es genau das was ich an Node-Red so gut finde. Die function node war dann eher ein Behelf, da ich keine Idee hat die Unterscheidung mit nodes zu machen. Man fällt irgendwie in die Programmierübungen aus der Schulzeit zurück ;-)

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  wrote on last edited by
                  #12

                  @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

                  Stimmt, die Variable "statusrel0" war ein Debug-Versuch von mir, die hatte ich anstelle einer LED genutzt. Mir wäre es auch sehr lieb, wenn ich die Fallunterscheidungen ohne Programmcode machen könnte, schliesslich war es genau das was ich an Node-Red so gut finde. Die function node war dann eher ein Behelf, da ich keine Idee hat die Unterscheidung mit nodes zu machen. Man fällt irgendwie in die Programmierübungen aus der Schulzeit zurück ;-)

                  Na wenn das so ist, dann stecke ich in die function Node keine Energie mehr rein - wollen wir den unteren Teil dann gleich neu machen?

                  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.

                  R 1 Reply Last reply
                  0
                  • mickymM mickym

                    Als erstes nehme ich mal diese 3. Ausgabe aus - das soll wohl eine Anzeige sein, die ist aber nicht definiert und gesetzt:

                    7f3902ca-6bee-4d12-b727-84930b05683e-image.png

                    Ich geh mal davon aus, dass es LED2 heißen soll. Und hab die Ausgabe mal so geändert:

                    return [msg.payload2,LED1,LED2];
                    

                    Ansonsten kann ich Deinen Fehler nachvollziehen:
                    b9304c98-faa2-44c7-991e-5f8378fb41d7-image.png

                    So UND nun komme ich zu dem Punkt - warum DU function Nodes VERMEIDEN sollst, wo es geht. Du kannst keine Debug NOdes ansetzen und musst nun im Code suchen. Schöner wäre es doch in einem Flow zu suchen. Wir sollten - ABER NUR WENN DU Lust hast - im letzten Schritt Deine function Node durch einen schönen Flow ersetzen, was meinst Du?

                    Aber als erstes suchen wir wo der Fehler auftritt.

                    R Offline
                    R Offline
                    Rudi 3
                    wrote on last edited by
                    #13

                    Eine Verständnisfrage zwischendurch. Ich habe testweise nach Deinem Vorbild eine change-node genommen um aus der Payload vom shelly-relays einen Teil zu extrahieren. Dabei kam aber wieder das ganze Nachrichtenobjekt raus. Warum ist das so?
                    shelly2.PNG

                    mickymM 1 Reply Last reply
                    0
                    • mickymM mickym

                      @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

                      Stimmt, die Variable "statusrel0" war ein Debug-Versuch von mir, die hatte ich anstelle einer LED genutzt. Mir wäre es auch sehr lieb, wenn ich die Fallunterscheidungen ohne Programmcode machen könnte, schliesslich war es genau das was ich an Node-Red so gut finde. Die function node war dann eher ein Behelf, da ich keine Idee hat die Unterscheidung mit nodes zu machen. Man fällt irgendwie in die Programmierübungen aus der Schulzeit zurück ;-)

                      Na wenn das so ist, dann stecke ich in die function Node keine Energie mehr rein - wollen wir den unteren Teil dann gleich neu machen?

                      R Offline
                      R Offline
                      Rudi 3
                      wrote on last edited by
                      #14

                      Wenn's in der function node für mich was zu lernen gibt, wäre es zumindest interessant. Aber wenn ich nur mit nodes arbeiten kann, bin ich auch schon happy

                      1 Reply Last reply
                      0
                      • R Rudi 3

                        Eine Verständnisfrage zwischendurch. Ich habe testweise nach Deinem Vorbild eine change-node genommen um aus der Payload vom shelly-relays einen Teil zu extrahieren. Dabei kam aber wieder das ganze Nachrichtenobjekt raus. Warum ist das so?
                        shelly2.PNG

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        wrote on last edited by mickym
                        #15

                        @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

                        Eine Verständnisfrage zwischendurch. Ich habe testweise nach Deinem Vorbild eine change-node genommen um aus der Payload vom shelly-relays einen Teil zu extrahieren. Dabei kam aber wieder das ganze Nachrichtenobjekt raus. Warum ist das so?
                        shelly2.PNG

                        Vielleicht ein Syntax- Leerzeichen oder irgendwas - was ich so auch nicht sehe. Oder nicht ÜBERNEHMEN geklickt. ;) Keine Ahnung. Bei mir funktioniert es:
                        af04bef3-9d1d-488a-99e1-c238aa13e657-image.png

                        Hier der Import:

                        [
                           {
                               "id": "b540dd62c4b7bb4b",
                               "type": "inject",
                               "z": "a3ff42d9e3f31af7",
                               "name": "Shelly Input",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "{\"status\":{\"wifi_sta\":{\"connected\":true,\"ssid\":\"Kellerfritz\",\"ip\":\"192.168.2.196\",\"rssi\":-46},\"cloud\":{\"enabled\":false,\"connected\":false},\"mqtt\":{\"connected\":false},\"time\":\"15:16\",\"serial\":1,\"has_update\":true,\"mac\":\"10521C06EE47\",\"relays\":[{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true},{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true}],\"rollers\":[{\"state\":\"stop\",\"power\":0,\"is_valid\":true,\"safety_switch\":false,\"overtemperature\":false,\"stop_reason\":\"normal\",\"last_direction\":\"stop\",\"current_pos\":101,\"calibrating\":false,\"positioning\":true}],\"meters\":[{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0},{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0}],\"inputs\":[{\"input\":0},{\"input\":0}],\"temperature\":56.18,\"overtemperature\":false,\"tmp\":{\"tC\":56.18,\"tF\":133.12,\"is_valid\":\"true\"},\"update\":{\"status\":\"pending\",\"has_update\":true,\"new_version\":\"20230503-095750/v1.13.0-g9aed950\",\"old_version\":\"20191217-074901/1047-long-id-for-shelly-devices@ab2bdce7\"},\"ram_total\":49480,\"ram_free\":37016,\"fs_size\":233681,\"fs_free\":157628,\"voltage\":235.06,\"uptime\":6684},\"payload\":{\"relays\":[{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true},{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true}],\"rollers\":[{\"state\":\"stop\",\"power\":0,\"is_valid\":true,\"safety_switch\":false,\"overtemperature\":false,\"stop_reason\":\"normal\",\"last_direction\":\"stop\",\"current_pos\":101,\"calibrating\":false,\"positioning\":true}],\"meters\":[{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0},{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0}],\"inputs\":[{\"input\":0},{\"input\":0}],\"tmp\":{\"tC\":56.18,\"tF\":133.12,\"is_valid\":\"true\"}},\"_msgid\":\"9bd7710f1fddad89\"}",
                               "payloadType": "json",
                               "x": 210,
                               "y": 1040,
                               "wires": [
                                   [
                                       "326d78cdf99b0b69",
                                       "d5a4defd13b3e3cf"
                                   ]
                               ]
                           },
                           {
                               "id": "84167164063b10b2",
                               "type": "debug",
                               "z": "a3ff42d9e3f31af7",
                               "name": "ison?",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 590,
                               "y": 1040,
                               "wires": []
                           },
                           {
                               "id": "326d78cdf99b0b69",
                               "type": "change",
                               "z": "a3ff42d9e3f31af7",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "payload.payload.relays[0].ison",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 410,
                               "y": 1040,
                               "wires": [
                                   [
                                       "84167164063b10b2"
                                   ]
                               ]
                           },
                           {
                               "id": "d5a4defd13b3e3cf",
                               "type": "debug",
                               "z": "a3ff42d9e3f31af7",
                               "name": "Komplett",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 400,
                               "y": 980,
                               "wires": []
                           }
                        ]
                        

                        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.

                        R 1 Reply Last reply
                        0
                        • mickymM mickym

                          @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

                          Eine Verständnisfrage zwischendurch. Ich habe testweise nach Deinem Vorbild eine change-node genommen um aus der Payload vom shelly-relays einen Teil zu extrahieren. Dabei kam aber wieder das ganze Nachrichtenobjekt raus. Warum ist das so?
                          shelly2.PNG

                          Vielleicht ein Syntax- Leerzeichen oder irgendwas - was ich so auch nicht sehe. Oder nicht ÜBERNEHMEN geklickt. ;) Keine Ahnung. Bei mir funktioniert es:
                          af04bef3-9d1d-488a-99e1-c238aa13e657-image.png

                          Hier der Import:

                          [
                             {
                                 "id": "b540dd62c4b7bb4b",
                                 "type": "inject",
                                 "z": "a3ff42d9e3f31af7",
                                 "name": "Shelly Input",
                                 "props": [
                                     {
                                         "p": "payload"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": "{\"status\":{\"wifi_sta\":{\"connected\":true,\"ssid\":\"Kellerfritz\",\"ip\":\"192.168.2.196\",\"rssi\":-46},\"cloud\":{\"enabled\":false,\"connected\":false},\"mqtt\":{\"connected\":false},\"time\":\"15:16\",\"serial\":1,\"has_update\":true,\"mac\":\"10521C06EE47\",\"relays\":[{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true},{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true}],\"rollers\":[{\"state\":\"stop\",\"power\":0,\"is_valid\":true,\"safety_switch\":false,\"overtemperature\":false,\"stop_reason\":\"normal\",\"last_direction\":\"stop\",\"current_pos\":101,\"calibrating\":false,\"positioning\":true}],\"meters\":[{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0},{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0}],\"inputs\":[{\"input\":0},{\"input\":0}],\"temperature\":56.18,\"overtemperature\":false,\"tmp\":{\"tC\":56.18,\"tF\":133.12,\"is_valid\":\"true\"},\"update\":{\"status\":\"pending\",\"has_update\":true,\"new_version\":\"20230503-095750/v1.13.0-g9aed950\",\"old_version\":\"20191217-074901/1047-long-id-for-shelly-devices@ab2bdce7\"},\"ram_total\":49480,\"ram_free\":37016,\"fs_size\":233681,\"fs_free\":157628,\"voltage\":235.06,\"uptime\":6684},\"payload\":{\"relays\":[{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true},{\"ison\":false,\"has_timer\":false,\"overpower\":false,\"overtemperature\":false,\"is_valid\":true}],\"rollers\":[{\"state\":\"stop\",\"power\":0,\"is_valid\":true,\"safety_switch\":false,\"overtemperature\":false,\"stop_reason\":\"normal\",\"last_direction\":\"stop\",\"current_pos\":101,\"calibrating\":false,\"positioning\":true}],\"meters\":[{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0},{\"power\":0,\"is_valid\":true,\"timestamp\":1689347786,\"counters\":[0,0,0],\"total\":0}],\"inputs\":[{\"input\":0},{\"input\":0}],\"tmp\":{\"tC\":56.18,\"tF\":133.12,\"is_valid\":\"true\"}},\"_msgid\":\"9bd7710f1fddad89\"}",
                                 "payloadType": "json",
                                 "x": 210,
                                 "y": 1040,
                                 "wires": [
                                     [
                                         "326d78cdf99b0b69",
                                         "d5a4defd13b3e3cf"
                                     ]
                                 ]
                             },
                             {
                                 "id": "84167164063b10b2",
                                 "type": "debug",
                                 "z": "a3ff42d9e3f31af7",
                                 "name": "ison?",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "payload",
                                 "targetType": "msg",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 590,
                                 "y": 1040,
                                 "wires": []
                             },
                             {
                                 "id": "326d78cdf99b0b69",
                                 "type": "change",
                                 "z": "a3ff42d9e3f31af7",
                                 "name": "",
                                 "rules": [
                                     {
                                         "t": "set",
                                         "p": "payload",
                                         "pt": "msg",
                                         "to": "payload.payload.relays[0].ison",
                                         "tot": "jsonata"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 410,
                                 "y": 1040,
                                 "wires": [
                                     [
                                         "84167164063b10b2"
                                     ]
                                 ]
                             },
                             {
                                 "id": "d5a4defd13b3e3cf",
                                 "type": "debug",
                                 "z": "a3ff42d9e3f31af7",
                                 "name": "Komplett",
                                 "active": true,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "payload",
                                 "targetType": "msg",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 400,
                                 "y": 980,
                                 "wires": []
                             }
                          ]
                          

                          R Offline
                          R Offline
                          Rudi 3
                          wrote on last edited by
                          #16

                          Bei mir jetzt auch. Um meine Erkenntnis für die Nachwelt zu beschreiben: Ich hatte es erst im Originalflow versucht, da ging es nicht. Dann habe ich den neuen Teil in einen neuen Flow kopiert und jetzt geht's.

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

                            So ich kann Deinen Fehler nachvollziehen - hatte dann aber nur die Blocks etwas auseinandergezogen und da war der Fehler komischerweise kurz weg.

                            Also um es kurz zu machen, was definitiv falsch ist, sind Deine Ausgaben. Keine dieser 3 variablen sind definiert.

                            Alles was innerhalb von geschweiften Klammern definiert wird, hat auch nur Gültigkeit innerhalb dieser geschweiften Klammern. Und msg.payload2 ist ein Objekt das gar nicht definiert ist. Wenn Du das alles zum Schluss ausgeben willst, dann musst Du auch alles am Anfang definieren.

                            ed357b39-3773-407e-8dbc-9c2928c131a5-image.png

                            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.

                            R 1 Reply Last reply
                            0
                            • mickymM mickym

                              So ich kann Deinen Fehler nachvollziehen - hatte dann aber nur die Blocks etwas auseinandergezogen und da war der Fehler komischerweise kurz weg.

                              Also um es kurz zu machen, was definitiv falsch ist, sind Deine Ausgaben. Keine dieser 3 variablen sind definiert.

                              Alles was innerhalb von geschweiften Klammern definiert wird, hat auch nur Gültigkeit innerhalb dieser geschweiften Klammern. Und msg.payload2 ist ein Objekt das gar nicht definiert ist. Wenn Du das alles zum Schluss ausgeben willst, dann musst Du auch alles am Anfang definieren.

                              ed357b39-3773-407e-8dbc-9c2928c131a5-image.png

                              R Offline
                              R Offline
                              Rudi 3
                              wrote on last edited by
                              #18

                              Ich hätte also die Ausgaben direkt in die IF-Blöcke packen müssen / können? Heute habe ich eine steile Lernkurve ;-)

                              mickymM 1 Reply Last reply
                              0
                              • R Rudi 3

                                Ich hätte also die Ausgaben direkt in die IF-Blöcke packen müssen / können? Heute habe ich eine steile Lernkurve ;-)

                                mickymM Online
                                mickymM Online
                                mickym
                                Most Active
                                wrote on last edited by mickym
                                #19

                                @rudi-3 Nein die Variablen LED1 und LED2 vor den IF Abfragen definieren.

                                Dann machst Du Vergleiche - obwohl Dein Kontext gar nicht initialisiert ist, wenn Du das Dashboard nicht vorher betätigt hast:

                                f2b0f60f-0f0a-4e13-8884-f2103846da58-image.png

                                Prüfe also zu jeder Zeit - Deine Kontextdaten und initialisiere die Werte auch bevor Du irgendwas im Dashboard gesetzt hast.

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

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

                                  Desweiteren wenn Du schon function NOde nimmst, dann musst Du darauf achten, dass Du alle Fälle berücksichtigst:

                                  541b615d-da0d-4e97-8cf4-c598f741007e-image.png

                                  Mit so vielen unterschiedlichen Parametern, ein, aus, und Summe sind da glaub 12 Fälle. Was machst Du denn wenn summe < ein ist - dann passiert gar nichts.

                                  Mit node.warn kannst Du überprüfen, ob was gesetzt ist.

                                  cf6e881f-469d-4812-8596-a65d39e0bbca-image.png

                                  Du siehst es ist alles undefined - ja wenn kein Fall eintritt - ist es empty weil wir gesetzt haben oder undefined.

                                  Auch so was ist Käse:

                                  c3b8c98a-8b62-4fc2-bf28-e541a6fadfae-image.png

                                  1. Definierst Du ein Objekt im luftleeren Raum - wenn das ausgegeben werden soll, dann musst Du ein msg Objekt definieren.
                                    364a0ded-1136-4de7-9d7a-352ba7e420c0-image.png

                                  Dein Objekt kommt nie und nimmer an.

                                  1. Du musst doch IMMER - wenn Du alles AUSGIBST auch alle Ausgaben definieren oder Du setzt diese auf null. Korrigiere ich noch. Aber Du musst auch den 2. Ausgang definieren - entweder für alles oder in jedem Ast.

                                  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.

                                  R 2 Replies Last reply
                                  0
                                  • mickymM mickym

                                    Desweiteren wenn Du schon function NOde nimmst, dann musst Du darauf achten, dass Du alle Fälle berücksichtigst:

                                    541b615d-da0d-4e97-8cf4-c598f741007e-image.png

                                    Mit so vielen unterschiedlichen Parametern, ein, aus, und Summe sind da glaub 12 Fälle. Was machst Du denn wenn summe < ein ist - dann passiert gar nichts.

                                    Mit node.warn kannst Du überprüfen, ob was gesetzt ist.

                                    cf6e881f-469d-4812-8596-a65d39e0bbca-image.png

                                    Du siehst es ist alles undefined - ja wenn kein Fall eintritt - ist es empty weil wir gesetzt haben oder undefined.

                                    Auch so was ist Käse:

                                    c3b8c98a-8b62-4fc2-bf28-e541a6fadfae-image.png

                                    1. Definierst Du ein Objekt im luftleeren Raum - wenn das ausgegeben werden soll, dann musst Du ein msg Objekt definieren.
                                      364a0ded-1136-4de7-9d7a-352ba7e420c0-image.png

                                    Dein Objekt kommt nie und nimmer an.

                                    1. Du musst doch IMMER - wenn Du alles AUSGIBST auch alle Ausgaben definieren oder Du setzt diese auf null. Korrigiere ich noch. Aber Du musst auch den 2. Ausgang definieren - entweder für alles oder in jedem Ast.
                                    R Offline
                                    R Offline
                                    Rudi 3
                                    wrote on last edited by
                                    #21

                                    Node warn kannte ich noch nicht. Nützliches Ding. Bezüglich der Fälle kommen in der Praxis nicht so viele vor. Wichtig ist mir, das ich die Relais gestuft schalten kann. Etwas tricky ist, das sich der PV-Überschuss in dem Moment kleiner wird, in dem man den Heizstab zuschalten. Ich muss also später noch eine Hystere dazunehmen, sonst schwingt das ganze Werk wild.

                                    mickymM 2 Replies Last reply
                                    0
                                    • R Rudi 3

                                      Node warn kannte ich noch nicht. Nützliches Ding. Bezüglich der Fälle kommen in der Praxis nicht so viele vor. Wichtig ist mir, das ich die Relais gestuft schalten kann. Etwas tricky ist, das sich der PV-Überschuss in dem Moment kleiner wird, in dem man den Heizstab zuschalten. Ich muss also später noch eine Hystere dazunehmen, sonst schwingt das ganze Werk wild.

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      wrote on last edited by
                                      #22

                                      @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

                                      Node warn kannte ich noch nicht. Nützliches Ding. Bezüglich der Fälle kommen in der Praxis nicht so viele vor. Wichtig ist mir, das ich die Relais gestuft schalten kann. Etwas tricky ist, das sich der PV-Überschuss in dem Moment kleiner wird, in dem man den Heizstab zuschalten. Ich muss also später noch eine Hystere dazunehmen, sonst schwingt das ganze Werk wild.

                                      Gut - also eigentlich will ich nun nicht die ganze function Node umschreiben - es gäbe noch 1000 Dinge zu sagen - wollen wir ohne weiter machen?

                                      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.

                                      R 1 Reply Last reply
                                      0
                                      • mickymM mickym

                                        Desweiteren wenn Du schon function NOde nimmst, dann musst Du darauf achten, dass Du alle Fälle berücksichtigst:

                                        541b615d-da0d-4e97-8cf4-c598f741007e-image.png

                                        Mit so vielen unterschiedlichen Parametern, ein, aus, und Summe sind da glaub 12 Fälle. Was machst Du denn wenn summe < ein ist - dann passiert gar nichts.

                                        Mit node.warn kannst Du überprüfen, ob was gesetzt ist.

                                        cf6e881f-469d-4812-8596-a65d39e0bbca-image.png

                                        Du siehst es ist alles undefined - ja wenn kein Fall eintritt - ist es empty weil wir gesetzt haben oder undefined.

                                        Auch so was ist Käse:

                                        c3b8c98a-8b62-4fc2-bf28-e541a6fadfae-image.png

                                        1. Definierst Du ein Objekt im luftleeren Raum - wenn das ausgegeben werden soll, dann musst Du ein msg Objekt definieren.
                                          364a0ded-1136-4de7-9d7a-352ba7e420c0-image.png

                                        Dein Objekt kommt nie und nimmer an.

                                        1. Du musst doch IMMER - wenn Du alles AUSGIBST auch alle Ausgaben definieren oder Du setzt diese auf null. Korrigiere ich noch. Aber Du musst auch den 2. Ausgang definieren - entweder für alles oder in jedem Ast.
                                        R Offline
                                        R Offline
                                        Rudi 3
                                        wrote on last edited by
                                        #23

                                        Da kommt doch einiges zusammen, das ich erstmal durcharbeiten muss.... Da wird das Wochenende wohl etwas knapp.

                                        mickymM 1 Reply Last reply
                                        0
                                        • R Rudi 3

                                          Da kommt doch einiges zusammen, das ich erstmal durcharbeiten muss.... Da wird das Wochenende wohl etwas knapp.

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

                                          @rudi-3 sagte in shelly Status zur Fallunterscheidung nutzen:

                                          Da kommt doch einiges zusammen, das ich erstmal durcharbeiten muss.... Da wird das Wochenende wohl etwas knapp.

                                          Also ohne function 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.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          629

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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