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. Skripten / Logik
  4. Node-Red
  5. shelly Status zur Fallunterscheidung nutzen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.6k

shelly Status zur Fallunterscheidung nutzen

Geplant Angeheftet Gesperrt Verschoben Node-Red
38 Beiträge 2 Kommentatoren 1.7k Aufrufe 2 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.
  • R Offline
    R Offline
    Rudi 3
    schrieb am zuletzt editiert von Rudi 3
    #1

    Hallo zusammen, ich versuche mich an einer PV Eigenverbrauchsoptimierung indem ich den Überschuss zur Brauchwassererwärmung nutzen. Dabei wird ein Heizstab über einen Shelly in Abhängigkeit vom Überschuss zweistufig geschaltet. Beispielsweise soll die zweite Stufe soll nur geschaltet werden, wenn die erste bereits an ist. Dazu möchte ich den Status des Shellys als "Merker" für die Fallunterscheidung nutzen. Das Auslesen und anzeigen des Verbrauchs habe ich hinbekommen. Mein Problem besteht darin, das ich es nicht schaffe, die Statusinformation vom Shelly bekommen. die dazu verwendete function-node meldet den Fehler: "TypeError: Cannot read properties of undefined (reading '1')" . Ich bin Neuling bzw. im Bereich Node-red und Javascript und vermute, das es nur eine Kleinigkeit ist. Vielleicht kann mir hier im Forum jemand helfen.
    Vielen Dank vorab.
    Rudi

    [
        {
            "id": "a3ff42d9e3f31af7",
            "type": "tab",
            "label": "Energiemanagement",
            "disabled": false,
            "info": "",
            "env": []
        },
        {
            "id": "6cf2110409afa1be",
            "type": "function",
            "z": "a3ff42d9e3f31af7",
            "name": "function 1",
            "func": "return { payload: msg.payload.emeters[0].power +500}\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 280,
            "y": 320,
            "wires": [
                [
                    "6aa96b39d39f2076",
                    "a0e410fa3d59fab8"
                ]
            ]
        },
        {
            "id": "e3a7c7bd0ed4e076",
            "type": "function",
            "z": "a3ff42d9e3f31af7",
            "name": "function 2",
            "func": "return { payload: msg.payload.emeters[1].power}\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 280,
            "y": 380,
            "wires": [
                [
                    "ae413695a495807c",
                    "a0e410fa3d59fab8"
                ]
            ]
        },
        {
            "id": "f234ab6870cc2e96",
            "type": "function",
            "z": "a3ff42d9e3f31af7",
            "name": "function 3",
            "func": "return { payload: msg.payload.emeters[2].power}\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 280,
            "y": 440,
            "wires": [
                [
                    "17cb0b933b223630",
                    "a0e410fa3d59fab8"
                ]
            ]
        },
        {
            "id": "a0e410fa3d59fab8",
            "type": "join",
            "z": "a3ff42d9e3f31af7",
            "name": "",
            "mode": "custom",
            "build": "array",
            "property": "payload",
            "propertyType": "msg",
            "key": "topic",
            "joiner": "\\n",
            "joinerType": "str",
            "accumulate": false,
            "timeout": "",
            "count": "3",
            "reduceRight": false,
            "reduceExp": "",
            "reduceInit": "",
            "reduceInitType": "",
            "reduceFixup": "",
            "x": 590,
            "y": 340,
            "wires": [
                [
                    "0042dc649419e134"
                ]
            ]
        },
        {
            "id": "52c10d237be5413e",
            "type": "change",
            "z": "a3ff42d9e3f31af7",
            "name": "",
            "rules": [
                {
                    "t": "set",
                    "p": "topic",
                    "pt": "msg",
                    "to": "summe",
                    "tot": "str"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 720,
            "y": 440,
            "wires": [
                []
            ]
        },
        {
            "id": "fd2dc2164cabf4ee",
            "type": "ui_slider",
            "z": "a3ff42d9e3f31af7",
            "name": "Summe",
            "label": "slider",
            "tooltip": "",
            "group": "504d6fd769a4772b",
            "order": 4,
            "width": 0,
            "height": 0,
            "passthru": true,
            "outs": "all",
            "topic": "summe",
            "topicType": "str",
            "min": "-200",
            "max": "1000",
            "step": 1,
            "className": "",
            "x": 480,
            "y": 540,
            "wires": [
                [
                    "2e7791d4942bbd35",
                    "e243c5de130f75ee",
                    "d058148d96a1fa4c"
                ]
            ]
        },
        {
            "id": "b438f132f71d52f0",
            "type": "ui_numeric",
            "z": "a3ff42d9e3f31af7",
            "name": "",
            "label": "Einschwelle1",
            "tooltip": "",
            "group": "c1d725fb472520a3",
            "order": 1,
            "width": 0,
            "height": 0,
            "wrap": false,
            "passthru": true,
            "topic": "einschwelle1",
            "topicType": "str",
            "format": "{{W}}",
            "min": 0,
            "max": "1000",
            "step": "100",
            "className": "",
            "x": 130,
            "y": 600,
            "wires": [
                [
                    "e243c5de130f75ee"
                ]
            ]
        },
        {
            "id": "8721078be8b846a9",
            "type": "ui_numeric",
            "z": "a3ff42d9e3f31af7",
            "name": "",
            "label": "Ausschwelle1",
            "tooltip": "",
            "group": "c1d725fb472520a3",
            "order": 2,
            "width": 0,
            "height": 0,
            "wrap": false,
            "passthru": true,
            "topic": "ausschwelle1",
            "topicType": "str",
            "format": "{{value}}",
            "min": 0,
            "max": "1000",
            "step": "100",
            "className": "",
            "x": 140,
            "y": 660,
            "wires": [
                [
                    "e243c5de130f75ee"
                ]
            ]
        },
        {
            "id": "6aa96b39d39f2076",
            "type": "ui_text",
            "z": "a3ff42d9e3f31af7",
            "group": "504d6fd769a4772b",
            "order": 1,
            "width": 0,
            "height": 0,
            "name": "",
            "label": "Phase1",
            "format": "{{msg.payload}}",
            "layout": "row-spread",
            "className": "",
            "x": 460,
            "y": 320,
            "wires": []
        },
        {
            "id": "ae413695a495807c",
            "type": "ui_text",
            "z": "a3ff42d9e3f31af7",
            "group": "504d6fd769a4772b",
            "order": 2,
            "width": 0,
            "height": 0,
            "name": "",
            "label": "Phase2",
            "format": "{{msg.payload}}",
            "layout": "row-spread",
            "className": "",
            "x": 460,
            "y": 380,
            "wires": []
        },
        {
            "id": "17cb0b933b223630",
            "type": "ui_text",
            "z": "a3ff42d9e3f31af7",
            "group": "504d6fd769a4772b",
            "order": 3,
            "width": 0,
            "height": 0,
            "name": "",
            "label": "Phase3",
            "format": "{{msg.payload}}",
            "layout": "row-spread",
            "className": "",
            "x": 460,
            "y": 440,
            "wires": []
        },
        {
            "id": "22e82a1d9e356647",
            "type": "ui_text",
            "z": "a3ff42d9e3f31af7",
            "group": "f93a2996f2440aa4",
            "order": 1,
            "width": 0,
            "height": 0,
            "name": "",
            "label": "Gesamtleistung",
            "format": "{{msg.payload}}",
            "layout": "row-spread",
            "className": "",
            "x": 1000,
            "y": 320,
            "wires": []
        },
        {
            "id": "d0b34ae280d78032",
            "type": "ui_gauge",
            "z": "a3ff42d9e3f31af7",
            "name": "Einspeisung     Verbrauch",
            "group": "f93a2996f2440aa4",
            "order": 1,
            "width": 0,
            "height": 0,
            "gtype": "gage",
            "title": "Einspeisung____V_____Verbrauch",
            "label": "units",
            "format": "{{value}}",
            "min": "-5000",
            "max": "5000",
            "colors": [
                "#b30024",
                "#0f00e6",
                "#4acb3a"
            ],
            "seg1": "0",
            "seg2": "0",
            "diff": false,
            "className": "",
            "x": 1030,
            "y": 280,
            "wires": []
        },
        {
            "id": "2e7791d4942bbd35",
            "type": "ui_gauge",
            "z": "a3ff42d9e3f31af7",
            "name": "",
            "group": "504d6fd769a4772b",
            "order": 5,
            "width": 0,
            "height": 0,
            "gtype": "gage",
            "title": "gauge",
            "label": "units",
            "format": "{{value}}",
            "min": 0,
            "max": "1000",
            "colors": [
                "#00b500",
                "#e6e600",
                "#ca3838"
            ],
            "seg1": "",
            "seg2": "",
            "diff": false,
            "className": "",
            "x": 670,
            "y": 540,
            "wires": []
        },
        {
            "id": "3e6039863725878f",
            "type": "shelly-gen1",
            "z": "a3ff42d9e3f31af7",
            "hostname": "192.168.2.195",
            "description": "Mess",
            "mode": "polling",
            "server": "033a6e9acf499057",
            "outputmode": "event",
            "uploadretryinterval": 5000,
            "pollinginterval": 5000,
            "pollstatus": false,
            "getstatusoncommand": false,
            "devicetype": "Measure",
            "outputs": 2,
            "x": 110,
            "y": 320,
            "wires": [
                [
                    "6cf2110409afa1be",
                    "e3a7c7bd0ed4e076",
                    "f234ab6870cc2e96"
                ],
                []
            ]
        },
        {
            "id": "0042dc649419e134",
            "type": "calculator",
            "z": "a3ff42d9e3f31af7",
            "name": "",
            "inputMsgField": "payload",
            "outputMsgField": "payload",
            "operation": "sum",
            "constant": "",
            "round": false,
            "decimals": 0,
            "x": 770,
            "y": 340,
            "wires": [
                [
                    "22e82a1d9e356647",
                    "d0b34ae280d78032",
                    "52c10d237be5413e"
                ]
            ]
        },
        {
            "id": "8db789103d983175",
            "type": "shelly-gen1",
            "z": "a3ff42d9e3f31af7",
            "hostname": "192.168.2.196",
            "description": "",
            "mode": "polling",
            "server": "",
            "outputmode": "event",
            "uploadretryinterval": 5000,
            "pollinginterval": 5000,
            "pollstatus": false,
            "getstatusoncommand": false,
            "devicetype": "Relay",
            "outputs": 1,
            "x": 720,
            "y": 680,
            "wires": [
                [
                    "77faf2a70cce9141"
                ]
            ]
        },
        {
            "id": "e243c5de130f75ee",
            "type": "function",
            "z": "a3ff42d9e3f31af7",
            "name": "dritterversuch",
            "func": "\nif (msg.topic === \"einschwelle1\"){ context.set('einschwelle1', msg.payload) }; // einschwelle in Kontextvariable\nif (msg.topic === \"ausschwelle1\"){ context.set('ausschwelle1', msg.payload) }; // ausschwelle in Kontextvariable\nif (msg.topic === \"summe\"){ context.set('summe', msg.payload) };               // Summe in Kontextvariable\nvar ein1 = context.get('einschwelle1');                                        // Kontextvariablen in normale variablen umwandeln\nvar aus1 = context.get('ausschwelle1');\nvar summe = context.get('summe');\nif ((summe > ein1) && (msg.payload.relays[0].ison == true)) { // relais1 einschalten wenn einschwelle  überschritten und relais 1 aus ist\n    msg.payload2 = { \"relay\": 0, \"on\": true };\n    var LED1 = { payload: true }; \n}\nif ((summe < aus1) && (msg.payload.relays[1].ison == false)) { // relais1 ausschalten wenn ausschwelle unterschritten und relais 2 aus ist \n    msg.payload2 = { \"relay\": 0, \"on\": false };\n    var LED1 = { payload: false }; \n}\nif ((summe > ein1) && (msg.payload.relays[0].ison == true)) { // relais2 einschalten wenn einschwelle überschritten und relais 1 schon an ist\n   msg.payload2 = { \"relay\": 1, \"on\": true };\n   var LED2 = { payload: true }; \n}\nif ((summe < aus1) && (msg.payload.relays[0].ison == false)) { // relais2 auschalten wenn ausschwelle  unterschritten ist und Relais1 bereits an ist\n   msg.payload2 = { \"relay\": 1, \"on\": false };\n   var LED2 = { payload: false }; \n}\nreturn [msg.payload2,LED1,statusrelA];\n\n",
            "outputs": 3,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 440,
            "y": 700,
            "wires": [
                [
                    "8db789103d983175"
                ],
                [
                    "913e15735b183514"
                ],
                [
                    "c42d8cbafad00527",
                    "cff3926f52252bc5"
                ]
            ]
        },
        {
            "id": "913e15735b183514",
            "type": "ui_led",
            "z": "a3ff42d9e3f31af7",
            "order": 5,
            "group": "c1d725fb472520a3",
            "width": "4",
            "height": "1",
            "label": "Relais1",
            "labelPlacement": "left",
            "labelAlignment": "left",
            "colorForValue": [
                {
                    "color": "#ff0000",
                    "value": "true",
                    "valueType": "json"
                },
                {
                    "color": "#008000",
                    "value": "false",
                    "valueType": "json"
                }
            ],
            "allowColorForValueInMessage": false,
            "shape": "circle",
            "showGlow": true,
            "name": "heiz1",
            "x": 610,
            "y": 760,
            "wires": []
        },
        {
            "id": "c42d8cbafad00527",
            "type": "ui_led",
            "z": "a3ff42d9e3f31af7",
            "order": 6,
            "group": "c1d725fb472520a3",
            "width": "4",
            "height": "1",
            "label": "Relais2",
            "labelPlacement": "left",
            "labelAlignment": "left",
            "colorForValue": [
                {
                    "color": "#ff0000",
                    "value": "true",
                    "valueType": "json"
                },
                {
                    "color": "#008000",
                    "value": "false",
                    "valueType": "json"
                }
            ],
            "allowColorForValueInMessage": false,
            "shape": "circle",
            "showGlow": true,
            "name": "heiz2",
            "x": 610,
            "y": 800,
            "wires": []
        },
        {
            "id": "a393aa8f30a5495d",
            "type": "debug",
            "z": "a3ff42d9e3f31af7",
            "name": "debug 25",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "true",
            "targetType": "full",
            "statusVal": "",
            "statusType": "auto",
            "x": 1120,
            "y": 620,
            "wires": []
        },
        {
            "id": "cff3926f52252bc5",
            "type": "debug",
            "z": "a3ff42d9e3f31af7",
            "name": "debug 26",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "payload",
            "targetType": "msg",
            "statusVal": "",
            "statusType": "auto",
            "x": 620,
            "y": 840,
            "wires": []
        },
        {
            "id": "77faf2a70cce9141",
            "type": "function",
            "z": "a3ff42d9e3f31af7",
            "name": "Status relays 0",
            "func": "//var statusrel0 = flow.get(msg.payload.relays[0].ison);\n//flow.set (statusrel0);\n//msg.payload = statusrel0;\nreturn msg;\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 940,
            "y": 620,
            "wires": [
                [
                    "a393aa8f30a5495d",
                    "e243c5de130f75ee"
                ]
            ]
        },
        {
            "id": "d058148d96a1fa4c",
            "type": "debug",
            "z": "a3ff42d9e3f31af7",
            "name": "debug 27",
            "active": false,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "true",
            "targetType": "full",
            "statusVal": "",
            "statusType": "auto",
            "x": 680,
            "y": 580,
            "wires": []
        },
        {
            "id": "ba93bd7d36931482",
            "type": "ui_spacer",
            "z": "a3ff42d9e3f31af7",
            "name": "spacer",
            "group": "504d6fd769a4772b",
            "order": 1,
            "width": 1,
            "height": 1
        },
        {
            "id": "98174ae5e3084e5f",
            "type": "ui_spacer",
            "z": "a3ff42d9e3f31af7",
            "name": "spacer",
            "group": "f93a2996f2440aa4",
            "order": 2,
            "width": 1,
            "height": 1
        },
        {
            "id": "504d6fd769a4772b",
            "type": "ui_group",
            "name": "Phasen",
            "tab": "942cb02b.fe603",
            "order": 1,
            "disp": true,
            "width": "6",
            "collapse": false,
            "className": ""
        },
        {
            "id": "c1d725fb472520a3",
            "type": "ui_group",
            "name": "Heizstabsteuerung",
            "tab": "942cb02b.fe603",
            "order": 4,
            "disp": true,
            "width": "6",
            "collapse": false,
            "className": ""
        },
        {
            "id": "f93a2996f2440aa4",
            "type": "ui_group",
            "name": "Gesamtleistung",
            "tab": "942cb02b.fe603",
            "order": 2,
            "disp": true,
            "width": "6",
            "collapse": false,
            "className": ""
        },
        {
            "id": "033a6e9acf499057",
            "type": "shelly-gen1-server",
            "port": "20001",
            "hostname": ""
        },
        {
            "id": "942cb02b.fe603",
            "type": "ui_tab",
            "name": "Energiemanagement",
            "icon": "home",
            "order": 1,
            "disabled": false,
            "hidden": false
        }
    ]
    
    mickymM 1 Antwort Letzte Antwort
    0
    • R Rudi 3

      Hallo zusammen, ich versuche mich an einer PV Eigenverbrauchsoptimierung indem ich den Überschuss zur Brauchwassererwärmung nutzen. Dabei wird ein Heizstab über einen Shelly in Abhängigkeit vom Überschuss zweistufig geschaltet. Beispielsweise soll die zweite Stufe soll nur geschaltet werden, wenn die erste bereits an ist. Dazu möchte ich den Status des Shellys als "Merker" für die Fallunterscheidung nutzen. Das Auslesen und anzeigen des Verbrauchs habe ich hinbekommen. Mein Problem besteht darin, das ich es nicht schaffe, die Statusinformation vom Shelly bekommen. die dazu verwendete function-node meldet den Fehler: "TypeError: Cannot read properties of undefined (reading '1')" . Ich bin Neuling bzw. im Bereich Node-red und Javascript und vermute, das es nur eine Kleinigkeit ist. Vielleicht kann mir hier im Forum jemand helfen.
      Vielen Dank vorab.
      Rudi

      [
          {
              "id": "a3ff42d9e3f31af7",
              "type": "tab",
              "label": "Energiemanagement",
              "disabled": false,
              "info": "",
              "env": []
          },
          {
              "id": "6cf2110409afa1be",
              "type": "function",
              "z": "a3ff42d9e3f31af7",
              "name": "function 1",
              "func": "return { payload: msg.payload.emeters[0].power +500}\n",
              "outputs": 1,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 280,
              "y": 320,
              "wires": [
                  [
                      "6aa96b39d39f2076",
                      "a0e410fa3d59fab8"
                  ]
              ]
          },
          {
              "id": "e3a7c7bd0ed4e076",
              "type": "function",
              "z": "a3ff42d9e3f31af7",
              "name": "function 2",
              "func": "return { payload: msg.payload.emeters[1].power}\n",
              "outputs": 1,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 280,
              "y": 380,
              "wires": [
                  [
                      "ae413695a495807c",
                      "a0e410fa3d59fab8"
                  ]
              ]
          },
          {
              "id": "f234ab6870cc2e96",
              "type": "function",
              "z": "a3ff42d9e3f31af7",
              "name": "function 3",
              "func": "return { payload: msg.payload.emeters[2].power}\n",
              "outputs": 1,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 280,
              "y": 440,
              "wires": [
                  [
                      "17cb0b933b223630",
                      "a0e410fa3d59fab8"
                  ]
              ]
          },
          {
              "id": "a0e410fa3d59fab8",
              "type": "join",
              "z": "a3ff42d9e3f31af7",
              "name": "",
              "mode": "custom",
              "build": "array",
              "property": "payload",
              "propertyType": "msg",
              "key": "topic",
              "joiner": "\\n",
              "joinerType": "str",
              "accumulate": false,
              "timeout": "",
              "count": "3",
              "reduceRight": false,
              "reduceExp": "",
              "reduceInit": "",
              "reduceInitType": "",
              "reduceFixup": "",
              "x": 590,
              "y": 340,
              "wires": [
                  [
                      "0042dc649419e134"
                  ]
              ]
          },
          {
              "id": "52c10d237be5413e",
              "type": "change",
              "z": "a3ff42d9e3f31af7",
              "name": "",
              "rules": [
                  {
                      "t": "set",
                      "p": "topic",
                      "pt": "msg",
                      "to": "summe",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 720,
              "y": 440,
              "wires": [
                  []
              ]
          },
          {
              "id": "fd2dc2164cabf4ee",
              "type": "ui_slider",
              "z": "a3ff42d9e3f31af7",
              "name": "Summe",
              "label": "slider",
              "tooltip": "",
              "group": "504d6fd769a4772b",
              "order": 4,
              "width": 0,
              "height": 0,
              "passthru": true,
              "outs": "all",
              "topic": "summe",
              "topicType": "str",
              "min": "-200",
              "max": "1000",
              "step": 1,
              "className": "",
              "x": 480,
              "y": 540,
              "wires": [
                  [
                      "2e7791d4942bbd35",
                      "e243c5de130f75ee",
                      "d058148d96a1fa4c"
                  ]
              ]
          },
          {
              "id": "b438f132f71d52f0",
              "type": "ui_numeric",
              "z": "a3ff42d9e3f31af7",
              "name": "",
              "label": "Einschwelle1",
              "tooltip": "",
              "group": "c1d725fb472520a3",
              "order": 1,
              "width": 0,
              "height": 0,
              "wrap": false,
              "passthru": true,
              "topic": "einschwelle1",
              "topicType": "str",
              "format": "{{W}}",
              "min": 0,
              "max": "1000",
              "step": "100",
              "className": "",
              "x": 130,
              "y": 600,
              "wires": [
                  [
                      "e243c5de130f75ee"
                  ]
              ]
          },
          {
              "id": "8721078be8b846a9",
              "type": "ui_numeric",
              "z": "a3ff42d9e3f31af7",
              "name": "",
              "label": "Ausschwelle1",
              "tooltip": "",
              "group": "c1d725fb472520a3",
              "order": 2,
              "width": 0,
              "height": 0,
              "wrap": false,
              "passthru": true,
              "topic": "ausschwelle1",
              "topicType": "str",
              "format": "{{value}}",
              "min": 0,
              "max": "1000",
              "step": "100",
              "className": "",
              "x": 140,
              "y": 660,
              "wires": [
                  [
                      "e243c5de130f75ee"
                  ]
              ]
          },
          {
              "id": "6aa96b39d39f2076",
              "type": "ui_text",
              "z": "a3ff42d9e3f31af7",
              "group": "504d6fd769a4772b",
              "order": 1,
              "width": 0,
              "height": 0,
              "name": "",
              "label": "Phase1",
              "format": "{{msg.payload}}",
              "layout": "row-spread",
              "className": "",
              "x": 460,
              "y": 320,
              "wires": []
          },
          {
              "id": "ae413695a495807c",
              "type": "ui_text",
              "z": "a3ff42d9e3f31af7",
              "group": "504d6fd769a4772b",
              "order": 2,
              "width": 0,
              "height": 0,
              "name": "",
              "label": "Phase2",
              "format": "{{msg.payload}}",
              "layout": "row-spread",
              "className": "",
              "x": 460,
              "y": 380,
              "wires": []
          },
          {
              "id": "17cb0b933b223630",
              "type": "ui_text",
              "z": "a3ff42d9e3f31af7",
              "group": "504d6fd769a4772b",
              "order": 3,
              "width": 0,
              "height": 0,
              "name": "",
              "label": "Phase3",
              "format": "{{msg.payload}}",
              "layout": "row-spread",
              "className": "",
              "x": 460,
              "y": 440,
              "wires": []
          },
          {
              "id": "22e82a1d9e356647",
              "type": "ui_text",
              "z": "a3ff42d9e3f31af7",
              "group": "f93a2996f2440aa4",
              "order": 1,
              "width": 0,
              "height": 0,
              "name": "",
              "label": "Gesamtleistung",
              "format": "{{msg.payload}}",
              "layout": "row-spread",
              "className": "",
              "x": 1000,
              "y": 320,
              "wires": []
          },
          {
              "id": "d0b34ae280d78032",
              "type": "ui_gauge",
              "z": "a3ff42d9e3f31af7",
              "name": "Einspeisung     Verbrauch",
              "group": "f93a2996f2440aa4",
              "order": 1,
              "width": 0,
              "height": 0,
              "gtype": "gage",
              "title": "Einspeisung____V_____Verbrauch",
              "label": "units",
              "format": "{{value}}",
              "min": "-5000",
              "max": "5000",
              "colors": [
                  "#b30024",
                  "#0f00e6",
                  "#4acb3a"
              ],
              "seg1": "0",
              "seg2": "0",
              "diff": false,
              "className": "",
              "x": 1030,
              "y": 280,
              "wires": []
          },
          {
              "id": "2e7791d4942bbd35",
              "type": "ui_gauge",
              "z": "a3ff42d9e3f31af7",
              "name": "",
              "group": "504d6fd769a4772b",
              "order": 5,
              "width": 0,
              "height": 0,
              "gtype": "gage",
              "title": "gauge",
              "label": "units",
              "format": "{{value}}",
              "min": 0,
              "max": "1000",
              "colors": [
                  "#00b500",
                  "#e6e600",
                  "#ca3838"
              ],
              "seg1": "",
              "seg2": "",
              "diff": false,
              "className": "",
              "x": 670,
              "y": 540,
              "wires": []
          },
          {
              "id": "3e6039863725878f",
              "type": "shelly-gen1",
              "z": "a3ff42d9e3f31af7",
              "hostname": "192.168.2.195",
              "description": "Mess",
              "mode": "polling",
              "server": "033a6e9acf499057",
              "outputmode": "event",
              "uploadretryinterval": 5000,
              "pollinginterval": 5000,
              "pollstatus": false,
              "getstatusoncommand": false,
              "devicetype": "Measure",
              "outputs": 2,
              "x": 110,
              "y": 320,
              "wires": [
                  [
                      "6cf2110409afa1be",
                      "e3a7c7bd0ed4e076",
                      "f234ab6870cc2e96"
                  ],
                  []
              ]
          },
          {
              "id": "0042dc649419e134",
              "type": "calculator",
              "z": "a3ff42d9e3f31af7",
              "name": "",
              "inputMsgField": "payload",
              "outputMsgField": "payload",
              "operation": "sum",
              "constant": "",
              "round": false,
              "decimals": 0,
              "x": 770,
              "y": 340,
              "wires": [
                  [
                      "22e82a1d9e356647",
                      "d0b34ae280d78032",
                      "52c10d237be5413e"
                  ]
              ]
          },
          {
              "id": "8db789103d983175",
              "type": "shelly-gen1",
              "z": "a3ff42d9e3f31af7",
              "hostname": "192.168.2.196",
              "description": "",
              "mode": "polling",
              "server": "",
              "outputmode": "event",
              "uploadretryinterval": 5000,
              "pollinginterval": 5000,
              "pollstatus": false,
              "getstatusoncommand": false,
              "devicetype": "Relay",
              "outputs": 1,
              "x": 720,
              "y": 680,
              "wires": [
                  [
                      "77faf2a70cce9141"
                  ]
              ]
          },
          {
              "id": "e243c5de130f75ee",
              "type": "function",
              "z": "a3ff42d9e3f31af7",
              "name": "dritterversuch",
              "func": "\nif (msg.topic === \"einschwelle1\"){ context.set('einschwelle1', msg.payload) }; // einschwelle in Kontextvariable\nif (msg.topic === \"ausschwelle1\"){ context.set('ausschwelle1', msg.payload) }; // ausschwelle in Kontextvariable\nif (msg.topic === \"summe\"){ context.set('summe', msg.payload) };               // Summe in Kontextvariable\nvar ein1 = context.get('einschwelle1');                                        // Kontextvariablen in normale variablen umwandeln\nvar aus1 = context.get('ausschwelle1');\nvar summe = context.get('summe');\nif ((summe > ein1) && (msg.payload.relays[0].ison == true)) { // relais1 einschalten wenn einschwelle  überschritten und relais 1 aus ist\n    msg.payload2 = { \"relay\": 0, \"on\": true };\n    var LED1 = { payload: true }; \n}\nif ((summe < aus1) && (msg.payload.relays[1].ison == false)) { // relais1 ausschalten wenn ausschwelle unterschritten und relais 2 aus ist \n    msg.payload2 = { \"relay\": 0, \"on\": false };\n    var LED1 = { payload: false }; \n}\nif ((summe > ein1) && (msg.payload.relays[0].ison == true)) { // relais2 einschalten wenn einschwelle überschritten und relais 1 schon an ist\n   msg.payload2 = { \"relay\": 1, \"on\": true };\n   var LED2 = { payload: true }; \n}\nif ((summe < aus1) && (msg.payload.relays[0].ison == false)) { // relais2 auschalten wenn ausschwelle  unterschritten ist und Relais1 bereits an ist\n   msg.payload2 = { \"relay\": 1, \"on\": false };\n   var LED2 = { payload: false }; \n}\nreturn [msg.payload2,LED1,statusrelA];\n\n",
              "outputs": 3,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 440,
              "y": 700,
              "wires": [
                  [
                      "8db789103d983175"
                  ],
                  [
                      "913e15735b183514"
                  ],
                  [
                      "c42d8cbafad00527",
                      "cff3926f52252bc5"
                  ]
              ]
          },
          {
              "id": "913e15735b183514",
              "type": "ui_led",
              "z": "a3ff42d9e3f31af7",
              "order": 5,
              "group": "c1d725fb472520a3",
              "width": "4",
              "height": "1",
              "label": "Relais1",
              "labelPlacement": "left",
              "labelAlignment": "left",
              "colorForValue": [
                  {
                      "color": "#ff0000",
                      "value": "true",
                      "valueType": "json"
                  },
                  {
                      "color": "#008000",
                      "value": "false",
                      "valueType": "json"
                  }
              ],
              "allowColorForValueInMessage": false,
              "shape": "circle",
              "showGlow": true,
              "name": "heiz1",
              "x": 610,
              "y": 760,
              "wires": []
          },
          {
              "id": "c42d8cbafad00527",
              "type": "ui_led",
              "z": "a3ff42d9e3f31af7",
              "order": 6,
              "group": "c1d725fb472520a3",
              "width": "4",
              "height": "1",
              "label": "Relais2",
              "labelPlacement": "left",
              "labelAlignment": "left",
              "colorForValue": [
                  {
                      "color": "#ff0000",
                      "value": "true",
                      "valueType": "json"
                  },
                  {
                      "color": "#008000",
                      "value": "false",
                      "valueType": "json"
                  }
              ],
              "allowColorForValueInMessage": false,
              "shape": "circle",
              "showGlow": true,
              "name": "heiz2",
              "x": 610,
              "y": 800,
              "wires": []
          },
          {
              "id": "a393aa8f30a5495d",
              "type": "debug",
              "z": "a3ff42d9e3f31af7",
              "name": "debug 25",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 1120,
              "y": 620,
              "wires": []
          },
          {
              "id": "cff3926f52252bc5",
              "type": "debug",
              "z": "a3ff42d9e3f31af7",
              "name": "debug 26",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "payload",
              "targetType": "msg",
              "statusVal": "",
              "statusType": "auto",
              "x": 620,
              "y": 840,
              "wires": []
          },
          {
              "id": "77faf2a70cce9141",
              "type": "function",
              "z": "a3ff42d9e3f31af7",
              "name": "Status relays 0",
              "func": "//var statusrel0 = flow.get(msg.payload.relays[0].ison);\n//flow.set (statusrel0);\n//msg.payload = statusrel0;\nreturn msg;\n",
              "outputs": 1,
              "noerr": 0,
              "initialize": "",
              "finalize": "",
              "libs": [],
              "x": 940,
              "y": 620,
              "wires": [
                  [
                      "a393aa8f30a5495d",
                      "e243c5de130f75ee"
                  ]
              ]
          },
          {
              "id": "d058148d96a1fa4c",
              "type": "debug",
              "z": "a3ff42d9e3f31af7",
              "name": "debug 27",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "targetType": "full",
              "statusVal": "",
              "statusType": "auto",
              "x": 680,
              "y": 580,
              "wires": []
          },
          {
              "id": "ba93bd7d36931482",
              "type": "ui_spacer",
              "z": "a3ff42d9e3f31af7",
              "name": "spacer",
              "group": "504d6fd769a4772b",
              "order": 1,
              "width": 1,
              "height": 1
          },
          {
              "id": "98174ae5e3084e5f",
              "type": "ui_spacer",
              "z": "a3ff42d9e3f31af7",
              "name": "spacer",
              "group": "f93a2996f2440aa4",
              "order": 2,
              "width": 1,
              "height": 1
          },
          {
              "id": "504d6fd769a4772b",
              "type": "ui_group",
              "name": "Phasen",
              "tab": "942cb02b.fe603",
              "order": 1,
              "disp": true,
              "width": "6",
              "collapse": false,
              "className": ""
          },
          {
              "id": "c1d725fb472520a3",
              "type": "ui_group",
              "name": "Heizstabsteuerung",
              "tab": "942cb02b.fe603",
              "order": 4,
              "disp": true,
              "width": "6",
              "collapse": false,
              "className": ""
          },
          {
              "id": "f93a2996f2440aa4",
              "type": "ui_group",
              "name": "Gesamtleistung",
              "tab": "942cb02b.fe603",
              "order": 2,
              "disp": true,
              "width": "6",
              "collapse": false,
              "className": ""
          },
          {
              "id": "033a6e9acf499057",
              "type": "shelly-gen1-server",
              "port": "20001",
              "hostname": ""
          },
          {
              "id": "942cb02b.fe603",
              "type": "ui_tab",
              "name": "Energiemanagement",
              "icon": "home",
              "order": 1,
              "disabled": false,
              "hidden": false
          }
      ]
      
      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #2

      @rudi-3 Na - ich finde den Flow alles andere als übersichtlich und ich frage mich immer, warum man als Neuling - gerade wenn man von Javascript-Programmierung noch nicht viel Ahnung hat, hier alles mit function Node macht, damit machst Du Dir doch eine Menge von der grafischen Darstellung des Ablaufs kaputt.

      Den Flow kann man auch schlecht nachvollziehen, da man viele Deiner Nodes nicht hat und deswegen nicht nachvollziehen kann.

      dd30b474-eaad-41de-82cb-e843e7e6a7c9-image.png

      Wenn Du alles willst, dass man das nachvollzieht, dann mach ein Debug Fenster an die shelly-gen1 Node dran und poste das gesamte Datenobjekt in code-tags hier in den Thread, dann kann man das mit einer Inject Node simulieren.

      So nachdem man dann versucht hat aus Deinem Code original daten zu schließen und die unbekannten Nodes eliminiert hat, sieht das so aus:

      ade1d6db-5d29-4599-9980-49e02d318044-image.png

      So nun kann man mal grundsätzlich optimieren, wobei ICH diese function Nodes größtenteils überflüssig finde und auch Du Dir angewöhnen solltest, diese wenn möglich zu vermeiden.

      Weiter Optimierungen folgen in den nächsten Postings.

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

        @rudi-3 Na - ich finde den Flow alles andere als übersichtlich und ich frage mich immer, warum man als Neuling - gerade wenn man von Javascript-Programmierung noch nicht viel Ahnung hat, hier alles mit function Node macht, damit machst Du Dir doch eine Menge von der grafischen Darstellung des Ablaufs kaputt.

        Den Flow kann man auch schlecht nachvollziehen, da man viele Deiner Nodes nicht hat und deswegen nicht nachvollziehen kann.

        dd30b474-eaad-41de-82cb-e843e7e6a7c9-image.png

        Wenn Du alles willst, dass man das nachvollzieht, dann mach ein Debug Fenster an die shelly-gen1 Node dran und poste das gesamte Datenobjekt in code-tags hier in den Thread, dann kann man das mit einer Inject Node simulieren.

        So nachdem man dann versucht hat aus Deinem Code original daten zu schließen und die unbekannten Nodes eliminiert hat, sieht das so aus:

        ade1d6db-5d29-4599-9980-49e02d318044-image.png

        So nun kann man mal grundsätzlich optimieren, wobei ICH diese function Nodes größtenteils überflüssig finde und auch Du Dir angewöhnen solltest, diese wenn möglich zu vermeiden.

        Weiter Optimierungen folgen in den nächsten Postings.

        R Offline
        R Offline
        Rudi 3
        schrieb am zuletzt editiert von
        #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 1 Antwort Letzte Antwort
        0
        • mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

          Dann fangen wir mal oben an.

          Die function Nodes sind schon mal VÖLLIG überflüssig und machen das ganze intransparent.
          Dann reißt du das Objekt auseinander, um es dann mit einer JOIN Node wieder zusammenzufügen.

          Beschäftige Dich lieber mit JSONATA - das ist eine eingebaute geniale Bibliothek, bevor Du mit JS Code rumhantierst. Calculator Node und solche Dinge BRAUCHT MAN NICHT - das macht man mit Boardmitteln. ;)

          c7809895-c73c-401e-9dcd-2f5478bc69fa-image.png

          So hier mal der obere Teil in schön.

          0f06bcd0-c235-4aab-a947-f9a7e5d42919-image.png

          Und hier zum Import:

          [
              {
                  "id": "1c8edee959741467",
                  "type": "group",
                  "z": "a3ff42d9e3f31af7",
                  "style": {
                      "stroke": "#999999",
                      "stroke-opacity": "1",
                      "fill": "none",
                      "fill-opacity": "1",
                      "label": true,
                      "label-position": "nw",
                      "color": "#a4a4a4"
                  },
                  "nodes": [
                      "6aa96b39d39f2076",
                      "ae413695a495807c",
                      "17cb0b933b223630",
                      "22e82a1d9e356647",
                      "d0b34ae280d78032",
                      "980e2a2b7f91ba80",
                      "92670f3435f2b733",
                      "27910b76f0102247",
                      "a992d95bd875d723",
                      "4aec05d081a3f4e2",
                      "cacb5c6e5bf10f56",
                      "98395e8f45a27980"
                  ],
                  "x": 34,
                  "y": 159,
                  "w": 1172,
                  "h": 342
              },
              {
                  "id": "6aa96b39d39f2076",
                  "type": "ui_text",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "group": "504d6fd769a4772b",
                  "order": 1,
                  "width": 0,
                  "height": 0,
                  "name": "",
                  "label": "Phase1",
                  "format": "{{msg.payload.emeters[0].power + 500}}",
                  "layout": "row-spread",
                  "className": "",
                  "style": false,
                  "font": "",
                  "fontSize": "",
                  "color": "#000000",
                  "x": 440,
                  "y": 340,
                  "wires": []
              },
              {
                  "id": "ae413695a495807c",
                  "type": "ui_text",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "group": "504d6fd769a4772b",
                  "order": 2,
                  "width": 0,
                  "height": 0,
                  "name": "",
                  "label": "Phase2",
                  "format": "{{msg.payload.emeters[1].power}}",
                  "layout": "row-spread",
                  "className": "",
                  "style": false,
                  "font": "",
                  "fontSize": "",
                  "color": "#000000",
                  "x": 440,
                  "y": 400,
                  "wires": []
              },
              {
                  "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": "22e82a1d9e356647",
                  "type": "ui_text",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "group": "f93a2996f2440aa4",
                  "order": 1,
                  "width": 0,
                  "height": 0,
                  "name": "",
                  "label": "Gesamtleistung",
                  "format": "{{msg.payload}}",
                  "layout": "row-spread",
                  "className": "",
                  "x": 1040,
                  "y": 320,
                  "wires": []
              },
              {
                  "id": "d0b34ae280d78032",
                  "type": "ui_gauge",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "Einspeisung     Verbrauch",
                  "group": "f93a2996f2440aa4",
                  "order": 1,
                  "width": 0,
                  "height": 0,
                  "gtype": "gage",
                  "title": "Einspeisung____V_____Verbrauch",
                  "label": "units",
                  "format": "{{value}}",
                  "min": "-5000",
                  "max": "5000",
                  "colors": [
                      "#b30024",
                      "#0f00e6",
                      "#4acb3a"
                  ],
                  "seg1": "0",
                  "seg2": "0",
                  "diff": false,
                  "className": "",
                  "x": 1070,
                  "y": 280,
                  "wires": []
              },
              {
                  "id": "980e2a2b7f91ba80",
                  "type": "inject",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "Shelly Gen1 power",
                  "props": [
                      {
                          "p": "payload"
                      }
                  ],
                  "repeat": "",
                  "crontab": "",
                  "once": false,
                  "onceDelay": 0.1,
                  "topic": "",
                  "payload": "{\"emeters\":[{\"power\":100},{\"power\":200},{\"power\":1300}]}",
                  "payloadType": "json",
                  "x": 170,
                  "y": 280,
                  "wires": [
                      [
                          "92670f3435f2b733",
                          "98395e8f45a27980",
                          "27910b76f0102247"
                      ]
                  ]
              },
              {
                  "id": "92670f3435f2b733",
                  "type": "debug",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "Shelly Power",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 410,
                  "y": 200,
                  "wires": []
              },
              {
                  "id": "27910b76f0102247",
                  "type": "change",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "",
                  "rules": [
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "payload.emeters.power",
                          "tot": "jsonata"
                      }
                  ],
                  "action": "",
                  "property": "",
                  "from": "",
                  "to": "",
                  "reg": false,
                  "x": 450,
                  "y": 280,
                  "wires": [
                      [
                          "a992d95bd875d723",
                          "4aec05d081a3f4e2"
                      ]
                  ]
              },
              {
                  "id": "a992d95bd875d723",
                  "type": "debug",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "Power Array",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 670,
                  "y": 200,
                  "wires": []
              },
              {
                  "id": "4aec05d081a3f4e2",
                  "type": "change",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "",
                  "rules": [
                      {
                          "t": "set",
                          "p": "payload",
                          "pt": "msg",
                          "to": "$sum(payload)+500",
                          "tot": "jsonata"
                      }
                  ],
                  "action": "",
                  "property": "",
                  "from": "",
                  "to": "",
                  "reg": false,
                  "x": 690,
                  "y": 280,
                  "wires": [
                      [
                          "d0b34ae280d78032",
                          "22e82a1d9e356647",
                          "cacb5c6e5bf10f56"
                      ]
                  ]
              },
              {
                  "id": "cacb5c6e5bf10f56",
                  "type": "debug",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "name": "Summe + 500",
                  "active": true,
                  "tosidebar": true,
                  "console": false,
                  "tostatus": false,
                  "complete": "payload",
                  "targetType": "msg",
                  "statusVal": "",
                  "statusType": "auto",
                  "x": 940,
                  "y": 200,
                  "wires": []
              },
              {
                  "id": "98395e8f45a27980",
                  "type": "junction",
                  "z": "a3ff42d9e3f31af7",
                  "g": "1c8edee959741467",
                  "x": 300,
                  "y": 400,
                  "wires": [
                      [
                          "17cb0b933b223630",
                          "ae413695a495807c",
                          "6aa96b39d39f2076"
                      ]
                  ]
              },
              {
                  "id": "504d6fd769a4772b",
                  "type": "ui_group",
                  "name": "Phasen",
                  "tab": "942cb02b.fe603",
                  "order": 1,
                  "disp": true,
                  "width": "6",
                  "collapse": false,
                  "className": ""
              },
              {
                  "id": "f93a2996f2440aa4",
                  "type": "ui_group",
                  "name": "Gesamtleistung",
                  "tab": "942cb02b.fe603",
                  "order": 2,
                  "disp": true,
                  "width": "6",
                  "collapse": false,
                  "className": ""
              },
              {
                  "id": "942cb02b.fe603",
                  "type": "ui_tab",
                  "name": "Energiemanagement",
                  "icon": "home",
                  "order": 1,
                  "disabled": false,
                  "hidden": false
              }
          ]
          

          Die beiden Change Nodes kannst Du natürlich in EINE Change Node mit 2 Regeln zusammenfassen.

          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
          • 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 Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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 Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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 Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    0
                    • mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #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 Antworten Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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 Offline
                          mickymM Offline
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              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 Offline
                                mickymM Offline
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • mickymM Offline
                                    mickymM Offline
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      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 Offline
                                        mickymM Offline
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                        0
                                        • mickymM Offline
                                          mickymM Offline
                                          mickym
                                          Most Active
                                          schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          806

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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