Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)

NEWS

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

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

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

[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)

Geplant Angeheftet Gesperrt Verschoben Node-Red
574 Beiträge 110 Kommentatoren 223.1k Aufrufe 108 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.
  • T ts_482

    @exel flows.json

    exelE Offline
    exelE Offline
    exel
    schrieb am zuletzt editiert von
    #320

    @ts_482 Vielen Dank. Das sieht gut aus.

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      Spexx
      schrieb am zuletzt editiert von Spexx
      #321

      Weiss jemand, mit welchem Register ich den oberen SOC schreiben kann?
      Ich habe es mit dem Register 47101 probiert, nennt sich Target SOC. Das klappt aber nicht. Blöderweise habe ich den ursprünglichen Wert zuvor nicht ausgelesen, jetzt weiss ich nicht was das Register bewirkt und welcher Wert da reingehört...

      Könnte mal jemand das Register 47101 auslesen und mir mitteilen, was da drin steht?

      Edit:
      Hat sich erledigt. Target SOC ist wohl für das erzwungene Laden/Entladen. Den SOC kann man über das Register 47081 schreiben.

      1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @christof-lewandowski Du - dann musst Du ein konkretes Beispiel liefern. Stelle hier in CodeTags das ein was aus einer Modbus Node rauskommt und was Du dann in einen Datenpunkt schreiben willst - also wie das aussehen soll. Die Join Node brauchst du nicht unbedingt.

        Mehrfache Analysen kannst bereits in einem Objekt zusammenfassen, wenn Du den parser entsprechend konfigurierst.

        730f952e-df3a-4028-9464-28f6b7e72832-image.png

        Beispiele zu den Buffer-Nodes werden in Beispielen bereits mitgeliefert.

        51c3310a-11f1-493c-bd0c-ea1c0d2ee281-image.png

        Hier noch ein paar Beispiele, die ich mir selbst gemacht habe, um das Ganze zu verstehen;

        [
           {
               "id": "0662713ffc076361",
               "type": "tab",
               "label": "Buffer Beispiele",
               "disabled": false,
               "info": "",
               "env": []
           },
           {
               "id": "1c12b45aa6c4adca",
               "type": "junction",
               "z": "0662713ffc076361",
               "x": 280,
               "y": 240,
               "wires": [
                   [
                       "9bc9a74d1f455065",
                       "9c99b46399646127"
                   ]
               ]
           },
           {
               "id": "e1b02064d9fdd3a2",
               "type": "junction",
               "z": "0662713ffc076361",
               "x": 260,
               "y": 540,
               "wires": [
                   [
                       "652134c61c9e5717",
                       "21fe0484881084c7"
                   ]
               ]
           },
           {
               "id": "507801e3daf21784",
               "type": "junction",
               "z": "0662713ffc076361",
               "x": 240,
               "y": 840,
               "wires": [
                   [
                       "1856c460913bd89e",
                       "fffe47c505694c8c"
                   ]
               ]
           },
           {
               "id": "049178586542d05a",
               "type": "junction",
               "z": "0662713ffc076361",
               "x": 260,
               "y": 1280,
               "wires": [
                   [
                       "13eedcda4930699c",
                       "a930d2c46dcbcd47"
                   ]
               ]
           },
           {
               "id": "8dde82b282601d6e",
               "type": "junction",
               "z": "0662713ffc076361",
               "x": 260,
               "y": 1560,
               "wires": [
                   [
                       "5f59f14ac3fcd3b1",
                       "29b71699a89afce7"
                   ]
               ]
           },
           {
               "id": "b2a1f09de6d12e90",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "100.00",
               "payloadType": "num",
               "x": 170,
               "y": 240,
               "wires": [
                   [
                       "1c12b45aa6c4adca"
                   ]
               ]
           },
           {
               "id": "9bc9a74d1f455065",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "floatbe",
                       "length": 1,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 390,
               "y": 220,
               "wires": [
                   [
                       "faea83afe6fa1bba",
                       "c39e4fa3f88efaed"
                   ]
               ]
           },
           {
               "id": "c5411af36dbc6206",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "Neues Array",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": true,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "payload",
               "statusType": "auto",
               "x": 770,
               "y": 220,
               "wires": []
           },
           {
               "id": "7d49268d76c118b3",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "-100.00",
               "payloadType": "num",
               "x": 170,
               "y": 200,
               "wires": [
                   [
                       "1c12b45aa6c4adca"
                   ]
               ]
           },
           {
               "id": "faea83afe6fa1bba",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "uint16be",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "uint16be",
                       "name": "item2",
                       "offset": 2,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": false,
               "fanOutMultipleResult": false,
               "setTopic": true,
               "outputs": 1,
               "x": 570,
               "y": 220,
               "wires": [
                   [
                       "c5411af36dbc6206",
                       "28e7d3b028dcf2ba",
                       "c49d8a32b00d9e38"
                   ]
               ]
           },
           {
               "id": "c310b522d6b2bc18",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "-1234.00",
               "payloadType": "num",
               "x": 160,
               "y": 320,
               "wires": [
                   [
                       "1c12b45aa6c4adca"
                   ]
               ]
           },
           {
               "id": "c39e4fa3f88efaed",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 550,
               "y": 160,
               "wires": []
           },
           {
               "id": "31e68b28d89b17db",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "68001",
               "payloadType": "num",
               "x": 170,
               "y": 280,
               "wires": [
                   [
                       "1c12b45aa6c4adca"
                   ]
               ]
           },
           {
               "id": "28e7d3b028dcf2ba",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "uint16be",
                       "length": 2,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 770,
               "y": 300,
               "wires": [
                   [
                       "423d2ba998b44648"
                   ]
               ]
           },
           {
               "id": "d23882e23c0fe50c",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "Rückkonvertierung",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1150,
               "y": 300,
               "wires": []
           },
           {
               "id": "423d2ba998b44648",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "floatbe",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": true,
               "fanOutMultipleResult": false,
               "setTopic": false,
               "outputs": 1,
               "x": 950,
               "y": 300,
               "wires": [
                   [
                       "d23882e23c0fe50c"
                   ]
               ]
           },
           {
               "id": "9c99b46399646127",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "Float- Eingabe",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 400,
               "y": 280,
               "wires": []
           },
           {
               "id": "65392663801b7347",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "-2",
               "payloadType": "num",
               "x": 170,
               "y": 520,
               "wires": [
                   [
                       "e1b02064d9fdd3a2"
                   ]
               ]
           },
           {
               "id": "652134c61c9e5717",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "int8",
                       "length": 1,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 370,
               "y": 520,
               "wires": [
                   [
                       "95bd1a00f43c3a41",
                       "1f0f6998b2fe22bd"
                   ]
               ]
           },
           {
               "id": "95bd1a00f43c3a41",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer maker",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 550,
               "y": 480,
               "wires": []
           },
           {
               "id": "1f0f6998b2fe22bd",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "8bit",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": false,
               "fanOutMultipleResult": false,
               "setTopic": true,
               "outputs": 1,
               "x": 550,
               "y": 520,
               "wires": [
                   [
                       "0d6994be085f2354",
                       "e2ed4381ba501491"
                   ]
               ]
           },
           {
               "id": "0d6994be085f2354",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer parser",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 730,
               "y": 520,
               "wires": []
           },
           {
               "id": "abae5fcc0b245338",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "-3",
               "payloadType": "num",
               "x": 170,
               "y": 560,
               "wires": [
                   [
                       "e1b02064d9fdd3a2"
                   ]
               ]
           },
           {
               "id": "e2ed4381ba501491",
               "type": "change",
               "z": "0662713ffc076361",
               "name": "",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "[[payload[0][0].bits]]",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 675,
               "y": 580,
               "wires": [
                   [
                       "5574ff5ac8d119b9",
                       "10d57305e25d5ffb"
                   ]
               ],
               "l": false
           },
           {
               "id": "10d57305e25d5ffb",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "8bit Array",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 820,
               "y": 560,
               "wires": []
           },
           {
               "id": "5574ff5ac8d119b9",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "8bit",
                       "length": 1,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 830,
               "y": 600,
               "wires": [
                   [
                       "a8bc2f0c740651b7",
                       "bc288c3fca11aefa"
                   ]
               ]
           },
           {
               "id": "a8bc2f0c740651b7",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer maker 2",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1020,
               "y": 560,
               "wires": []
           },
           {
               "id": "bc288c3fca11aefa",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "int8",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": true,
               "fanOutMultipleResult": false,
               "setTopic": false,
               "outputs": 1,
               "x": 1010,
               "y": 600,
               "wires": [
                   [
                       "177efcba05d60d49"
                   ]
               ]
           },
           {
               "id": "177efcba05d60d49",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer parser 2",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1200,
               "y": 600,
               "wires": []
           },
           {
               "id": "21fe0484881084c7",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "int 8 - Eíngabe",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 380,
               "y": 580,
               "wires": []
           },
           {
               "id": "84c27693b7531e4a",
               "type": "comment",
               "z": "0662713ffc076361",
               "name": "Float to Modbus and vice versa",
               "info": "",
               "x": 250,
               "y": 100,
               "wires": []
           },
           {
               "id": "39d7dcbddba73a69",
               "type": "comment",
               "z": "0662713ffc076361",
               "name": "int8 in bits and vice versa",
               "info": "",
               "x": 230,
               "y": 420,
               "wires": []
           },
           {
               "id": "d69fb8a9990a7328",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "2",
               "payloadType": "num",
               "x": 150,
               "y": 820,
               "wires": [
                   [
                       "507801e3daf21784"
                   ]
               ]
           },
           {
               "id": "1856c460913bd89e",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "int8",
                       "length": 1,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 350,
               "y": 820,
               "wires": [
                   [
                       "433f2540895c99ad",
                       "36dc7e66a9b26a6b"
                   ]
               ]
           },
           {
               "id": "433f2540895c99ad",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer maker",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 530,
               "y": 780,
               "wires": []
           },
           {
               "id": "36dc7e66a9b26a6b",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "bool",
                       "name": "item1",
                       "offset": 0,
                       "length": 8,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": true,
               "fanOutMultipleResult": false,
               "setTopic": false,
               "outputs": 1,
               "x": 530,
               "y": 820,
               "wires": [
                   [
                       "784028a112add38d",
                       "070c0aa63a892e0c",
                       "9f4c5c840cc21038",
                       "f6cb9b4c0c93839f"
                   ]
               ]
           },
           {
               "id": "530209956de421ec",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "3",
               "payloadType": "num",
               "x": 150,
               "y": 860,
               "wires": [
                   [
                       "507801e3daf21784"
                   ]
               ]
           },
           {
               "id": "fffe47c505694c8c",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "uint 8 - Eíngabe",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 360,
               "y": 880,
               "wires": []
           },
           {
               "id": "0cd4466a316781d4",
               "type": "comment",
               "z": "0662713ffc076361",
               "name": "uint8 in bools",
               "info": "",
               "x": 170,
               "y": 720,
               "wires": []
           },
           {
               "id": "784028a112add38d",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer parser",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 710,
               "y": 820,
               "wires": []
           },
           {
               "id": "070c0aa63a892e0c",
               "type": "switch",
               "z": "0662713ffc076361",
               "name": "",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "jsonata_exp",
                       "v": "payload[0]",
                       "vt": "jsonata"
                   },
                   {
                       "t": "jsonata_exp",
                       "v": "payload[1]  ",
                       "vt": "jsonata"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 710,
               "y": 900,
               "wires": [
                   [
                       "1d59c18e4ef90cd4"
                   ],
                   [
                       "12a0fb01a3a0c44a"
                   ]
               ]
           },
           {
               "id": "1d59c18e4ef90cd4",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "Bit 0 gesetzt",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 890,
               "y": 880,
               "wires": []
           },
           {
               "id": "12a0fb01a3a0c44a",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "Bit 1 gesetzt",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 890,
               "y": 920,
               "wires": []
           },
           {
               "id": "9f4c5c840cc21038",
               "type": "change",
               "z": "0662713ffc076361",
               "name": "Bit 0",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "payload[0]",
                       "tot": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 710,
               "y": 1000,
               "wires": [
                   [
                       "91ce77f514e1cc35"
                   ]
               ]
           },
           {
               "id": "91ce77f514e1cc35",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "immer Ausgabe von Bit0",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 910,
               "y": 1000,
               "wires": []
           },
           {
               "id": "f80380170774bc60",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "nur Ausgabe von Bit0, wenn wahr",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1060,
               "y": 1060,
               "wires": []
           },
           {
               "id": "f6cb9b4c0c93839f",
               "type": "function",
               "z": "0662713ffc076361",
               "name": "nur Ausgabe wenn true",
               "func": "msg = msg.payload[0] ? {payload : true} : null;\nreturn msg;",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 770,
               "y": 1060,
               "wires": [
                   [
                       "f80380170774bc60"
                   ]
               ]
           },
           {
               "id": "0e30d1a439bb18f0",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "2",
               "payloadType": "num",
               "x": 170,
               "y": 1260,
               "wires": [
                   [
                       "049178586542d05a"
                   ]
               ]
           },
           {
               "id": "13eedcda4930699c",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "int8",
                       "length": 1,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 370,
               "y": 1260,
               "wires": [
                   [
                       "9163d26897e6af76",
                       "6f2bea75830b22b7"
                   ]
               ]
           },
           {
               "id": "9163d26897e6af76",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer maker",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 550,
               "y": 1220,
               "wires": []
           },
           {
               "id": "6f2bea75830b22b7",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "bool",
                       "name": "Wohnzimmer",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Esszimmer",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 1,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Küche",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 2,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Bad",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 3,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Büro",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 4,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Schlafzimmer",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 5,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Diele",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 6,
                       "scale": "1",
                       "mask": ""
                   },
                   {
                       "type": "bool",
                       "name": "Flur",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 7,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "keyvalue",
               "resultTypeType": "return",
               "multipleResult": false,
               "fanOutMultipleResult": false,
               "setTopic": true,
               "outputs": 1,
               "x": 550,
               "y": 1260,
               "wires": [
                   [
                       "297c8cbeede9dc87"
                   ]
               ]
           },
           {
               "id": "fb2a58e4823e7e2b",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "3",
               "payloadType": "num",
               "x": 170,
               "y": 1300,
               "wires": [
                   [
                       "049178586542d05a"
                   ]
               ]
           },
           {
               "id": "a930d2c46dcbcd47",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "uint 8 - Eíngabe",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 380,
               "y": 1320,
               "wires": []
           },
           {
               "id": "297c8cbeede9dc87",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer parser -key/values",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 770,
               "y": 1260,
               "wires": []
           },
           {
               "id": "64eb5fd73953b7d5",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "-2",
               "payloadType": "num",
               "x": 170,
               "y": 1540,
               "wires": [
                   [
                       "8dde82b282601d6e"
                   ]
               ]
           },
           {
               "id": "5f59f14ac3fcd3b1",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "int8",
                       "length": 1,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 370,
               "y": 1540,
               "wires": [
                   [
                       "48ccf7d25a4846f5",
                       "5bad6ada97251a35"
                   ]
               ]
           },
           {
               "id": "48ccf7d25a4846f5",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer maker",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 550,
               "y": 1500,
               "wires": []
           },
           {
               "id": "5bad6ada97251a35",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "hex",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": true,
               "fanOutMultipleResult": false,
               "setTopic": true,
               "outputs": 1,
               "x": 550,
               "y": 1540,
               "wires": [
                   [
                       "0696cce665e1162d",
                       "bb01a74912b2e976"
                   ]
               ]
           },
           {
               "id": "0696cce665e1162d",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer parser in hex",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 750,
               "y": 1540,
               "wires": []
           },
           {
               "id": "1ebd8ea793a5b9b8",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "-3",
               "payloadType": "num",
               "x": 170,
               "y": 1580,
               "wires": [
                   [
                       "8dde82b282601d6e"
                   ]
               ]
           },
           {
               "id": "29b71699a89afce7",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "int 8 - Eíngabe",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 380,
               "y": 1600,
               "wires": []
           },
           {
               "id": "61f1d7d4f86d8657",
               "type": "comment",
               "z": "0662713ffc076361",
               "name": "int8 in hex and vice versa",
               "info": "",
               "x": 230,
               "y": 1440,
               "wires": []
           },
           {
               "id": "72a7a1dc12d9e0a2",
               "type": "inject",
               "z": "0662713ffc076361",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "60",
               "payloadType": "num",
               "x": 150,
               "y": 1620,
               "wires": [
                   [
                       "8dde82b282601d6e"
                   ]
               ]
           },
           {
               "id": "bb01a74912b2e976",
               "type": "buffer-maker",
               "z": "0662713ffc076361",
               "name": "",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "item1",
                       "type": "hex",
                       "length": 2,
                       "dataType": "msg",
                       "data": "payload"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 730,
               "y": 1600,
               "wires": [
                   [
                       "96a8ddbaa4107912",
                       "0834e676856b25b9"
                   ]
               ]
           },
           {
               "id": "96a8ddbaa4107912",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "int8",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": true,
               "fanOutMultipleResult": false,
               "setTopic": false,
               "outputs": 1,
               "x": 910,
               "y": 1600,
               "wires": [
                   [
                       "8f582bbef1396cb7"
                   ]
               ]
           },
           {
               "id": "8f582bbef1396cb7",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer parser 2",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1100,
               "y": 1600,
               "wires": []
           },
           {
               "id": "0834e676856b25b9",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "buffer maker 2",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 920,
               "y": 1660,
               "wires": []
           },
           {
               "id": "cb9cb4b958d69dbb",
               "type": "debug",
               "z": "0662713ffc076361",
               "name": "Rückkonvertierung aus Int16 Arrray",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1020,
               "y": 340,
               "wires": []
           },
           {
               "id": "c49d8a32b00d9e38",
               "type": "buffer-parser",
               "z": "0662713ffc076361",
               "name": "",
               "data": "payload",
               "dataType": "msg",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "type": "floatbe",
                       "name": "item1",
                       "offset": 0,
                       "length": 1,
                       "offsetbit": 0,
                       "scale": "1",
                       "mask": ""
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "resultType": "value",
               "resultTypeType": "return",
               "multipleResult": true,
               "fanOutMultipleResult": false,
               "setTopic": false,
               "outputs": 1,
               "x": 770,
               "y": 340,
               "wires": [
                   [
                       "cb9cb4b958d69dbb"
                   ]
               ]
           },
           {
               "id": "b7efada9296433bd",
               "type": "comment",
               "z": "0662713ffc076361",
               "name": "parser Node kann auch mit Int16 Array arbeiten",
               "info": "",
               "x": 460,
               "y": 340,
               "wires": []
           }
        ]
        

        Ich empfehle Dir auch diesen Thread - in dem alles im Detail anhand von Beispielen erklärt wird:

        https://forum.iobroker.net/topic/65273/node-red-modbus

        Christof LewandowskiC Offline
        Christof LewandowskiC Offline
        Christof Lewandowski
        schrieb am zuletzt editiert von
        #322

        @mickym Sorry für die späte Rückmeldung. Musste erst den zweiten Teil meiner PV Anlage fertig bauen und war dann im Urlaub 🙂

        Ich meine bspw. sowas:
        a1240415-5ff0-4302-a529-a4e826e687e9-image.png

        Hier werden die Adressen 32016-32019 einzeln ausgelesen und in die dazugehörigen Datenpunkte geschrieben.
        Wie würde man es denn realisieren, dass die vier Adressen gleichzeitig ausgelesen und dann in die jeweiligen Datenpunkte geschrieben werden?

        Dein verlinkter Thread ist für mich wie bömische Dörfer 😄

        mickymM 1 Antwort Letzte Antwort
        0
        • Christof LewandowskiC Christof Lewandowski

          @mickym Sorry für die späte Rückmeldung. Musste erst den zweiten Teil meiner PV Anlage fertig bauen und war dann im Urlaub 🙂

          Ich meine bspw. sowas:
          a1240415-5ff0-4302-a529-a4e826e687e9-image.png

          Hier werden die Adressen 32016-32019 einzeln ausgelesen und in die dazugehörigen Datenpunkte geschrieben.
          Wie würde man es denn realisieren, dass die vier Adressen gleichzeitig ausgelesen und dann in die jeweiligen Datenpunkte geschrieben werden?

          Dein verlinkter Thread ist für mich wie bömische Dörfer 😄

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

          @christof-lewandowski Na ja ich kenne jetzt das Modbus nicht im Detail und es läuft ja auch. Aber man könnte ggf. den Verkehr oder die Anfragen vermindern indem man halt einmal die Adressen von 32016 bis 32019 ausliest und dann mit dem Bufferparser in 4 einzelne Nachrichten ausgeben lässt, wobei man ggf. sogar gleich das topic setzen könnte. Um das mit dir auszuprobieren müsste ich sehen, was Du in dem Flow machst und ob Du selbst mit der modbus Node alle Adressen aufeinmal auslesen kannst. ich glaube das geht, dass man angeben kann wieviel ausgelesen werden soll.

          Exportiere halt mal den ausgewählten Schnipsel und poste mir mal was eine Modbus Node mit allen 4 Registern aufeinmal ausspukt hier in Code Tags, dann kann ich das mit einer Inject Node nachstellen.

          Wie gesagt wenn Du Deine Anlage in größeren Blöcken abfragst, minimierst Du Netzwerktraffic und die Systeme im Allgemeinen.

          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
          • S Offline
            S Offline
            Spexx
            schrieb am zuletzt editiert von
            #324

            @Christof-Lewandowski
            Ich frage drei größere Adressbereiche ab, das wird dann über einen Buffer-Parser ausgewertet und alle Werte in einzelne Datenpunkte geschrieben. Ich denke im Prinzip das was du suchst, anbei der Flow.
            Zwischen den Abfragen habe ich aktuell eine Minute Verzögerung, das Abfrageintervall kann man sicher auch noch runtersetzen, läuft so aber bereits seit Wochen problemlos.

            2023-06-23_20h10_28.png
            2023-06-23_20h20_26.png
            flows.json

            L 1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              Spexx
              schrieb am zuletzt editiert von
              #325

              Noch einmal kurz zusammengefasst, wie ein Adressbereich / mehrere Register auf einmal ausgelesen werden können.

              Man legt im Read-Befehl das Start-Register fest und zudem auch die Länge bzw. die Anzahl der Register. Hier im Bespiel das Register 32016 bis 32114. Jedes Register hat eine Länge von 2, d.h. die Anzahl beträgt somit 100:
              2023-06-23_20h38_34.png

              Über ein Buffer-Parser kann man dann die empfangenen Werte auswerten. Hierbei muss einerseits das Offset der einzelnen Werte definiert werden (es können auch Werte übersprungen werden falls diese nicht relevant sind). Zudem kann auch direkt der Umrechnungsfaktor festgelegt werden. Die Ausgabewerte können dann in einzelne Datenpunkte geschrieben werden:
              2023-06-23_20h41_57.png

              Anbei ein Beispiel-Flow, in welchem der WR in einem Block ausgelesen (32016-32114) wird sowie die Batterie/Smartmeter in einem weiteren Block (37000-37123).
              2023-06-23_20h52_10.png
              b303d536-401c-449c-97bc-2f1adae466aa-image.png
              7a8fc812-c7eb-4b7d-8388-a26d446cf5a1-image.png

              flows.json

              mickymM 1 Antwort Letzte Antwort
              0
              • S Spexx

                Noch einmal kurz zusammengefasst, wie ein Adressbereich / mehrere Register auf einmal ausgelesen werden können.

                Man legt im Read-Befehl das Start-Register fest und zudem auch die Länge bzw. die Anzahl der Register. Hier im Bespiel das Register 32016 bis 32114. Jedes Register hat eine Länge von 2, d.h. die Anzahl beträgt somit 100:
                2023-06-23_20h38_34.png

                Über ein Buffer-Parser kann man dann die empfangenen Werte auswerten. Hierbei muss einerseits das Offset der einzelnen Werte definiert werden (es können auch Werte übersprungen werden falls diese nicht relevant sind). Zudem kann auch direkt der Umrechnungsfaktor festgelegt werden. Die Ausgabewerte können dann in einzelne Datenpunkte geschrieben werden:
                2023-06-23_20h41_57.png

                Anbei ein Beispiel-Flow, in welchem der WR in einem Block ausgelesen (32016-32114) wird sowie die Batterie/Smartmeter in einem weiteren Block (37000-37123).
                2023-06-23_20h52_10.png
                b303d536-401c-449c-97bc-2f1adae466aa-image.png
                7a8fc812-c7eb-4b7d-8388-a26d446cf5a1-image.png

                flows.json

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

                @spexx Eine Verbesserung und wesentliche Vereinfachung habe ich aber. 😉

                Du kannst in dem Bufferparser set topic ankreuzt und im Namen gleich den richtigen Pfad zum Datenpunkt eingibst und nicht was beschreibendes - dann ist das bereits das topic und Du brauchst das fan Out nicht und kannst alles in eine iobroker - OUT Node schreiben. Dann ist der Flow viel übersichtlicher.

                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
                • Christof LewandowskiC Offline
                  Christof LewandowskiC Offline
                  Christof Lewandowski
                  schrieb am zuletzt editiert von
                  #327

                  @mickym und @Spexx

                  Mega, vielen Dank!

                  Da kommen wir der Sache doch schon sehr sehr viel näher 🙂

                  Habs jetzt mal auf meine Daten angepasst und läuft! Werde jetzt mal beobachten, ob und wie viele Timeouts ich nun bekomme.

                  Eine Frage hätte ich noch bzgl. des Schedules. Der Intervall steht auf alle 3 Minuten. Dann gibts da noch ne Verzögerung von 1 bzw. 2 Minuten (im Flow von @Spexx )? Wie darf man das verstehen?

                  1 Antwort Letzte Antwort
                  0
                  • S Offline
                    S Offline
                    Spexx
                    schrieb am zuletzt editiert von
                    #328

                    @mickym
                    Ist schon eine Weile her als ich das gemacht habe. Ganz verstanden habe ich es noch nicht, könntest du mal ein Beispiel erstellen?
                    Vermutlich wird das dann nicht gehen, wenn die Werte noch eine zusätzliche Umrechnung benötigen (wie z.B. die Uhrzeit) oder wenn ich bei einigen Werten direkt noch ein Text hinterlege, z.B. beim "Device Status"? Dennoch würde mich dein Vorschlag interessieren.

                    @Christof-Lewandowski
                    Ja der Trigger kommt alle 3 min. Beim Auslösen des Triggers wird der 1. Block abgefragt, 1 min später dann der 2. Block und 2 min später dann der 3. Block. Dann geht es wieder von vorne los, es wird somit jede Minute eine Abfrage über Modbus gestartet (jeder Block selbst hat dann ein Abfrageintervall von 3 min).

                    Hintergrund des hohen Abfrageintervall war bei mir, dass ich ansonsten Probleme mit FusionSolar habe... Wenn ich etwas ändern möchte, z.B. AC laden aktivieren, dann klappt das meistens erst nach mehrmaligen versuchen, weil FS und meine Modbus Anfrage sich wohl in die Quere kommen!?

                    Ich bin aber schon am überlegen wie man das anpassen könnte. Ich hätte gerne einzelne Werte im 10-Sekundentakt.
                    Aktuell habe ich eine Kaskade (zwei WR + Luna) über einen SDongle. Hat jemand Erfahrung damit, ob das mit dem Abfrageintervall besser wird, wenn man die Kaskade trennen würde und zwei SDongle nimmt?

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • S Spexx

                      @mickym
                      Ist schon eine Weile her als ich das gemacht habe. Ganz verstanden habe ich es noch nicht, könntest du mal ein Beispiel erstellen?
                      Vermutlich wird das dann nicht gehen, wenn die Werte noch eine zusätzliche Umrechnung benötigen (wie z.B. die Uhrzeit) oder wenn ich bei einigen Werten direkt noch ein Text hinterlege, z.B. beim "Device Status"? Dennoch würde mich dein Vorschlag interessieren.

                      @Christof-Lewandowski
                      Ja der Trigger kommt alle 3 min. Beim Auslösen des Triggers wird der 1. Block abgefragt, 1 min später dann der 2. Block und 2 min später dann der 3. Block. Dann geht es wieder von vorne los, es wird somit jede Minute eine Abfrage über Modbus gestartet (jeder Block selbst hat dann ein Abfrageintervall von 3 min).

                      Hintergrund des hohen Abfrageintervall war bei mir, dass ich ansonsten Probleme mit FusionSolar habe... Wenn ich etwas ändern möchte, z.B. AC laden aktivieren, dann klappt das meistens erst nach mehrmaligen versuchen, weil FS und meine Modbus Anfrage sich wohl in die Quere kommen!?

                      Ich bin aber schon am überlegen wie man das anpassen könnte. Ich hätte gerne einzelne Werte im 10-Sekundentakt.
                      Aktuell habe ich eine Kaskade (zwei WR + Luna) über einen SDongle. Hat jemand Erfahrung damit, ob das mit dem Abfrageintervall besser wird, wenn man die Kaskade trennen würde und zwei SDongle nimmt?

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

                      @spexx sagte in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):

                      @mickym
                      Ist schon eine Weile her als ich das gemacht habe. Ganz verstanden habe ich es noch nicht, könntest du mal ein Beispiel erstellen?
                      Vermutlich wird das dann nicht gehen, wenn die Werte noch eine zusätzliche Umrechnung benötigen (wie z.B. die Uhrzeit) oder wenn ich bei einigen Werten direkt noch ein Text hinterlege, z.B. beim "Device Status"? Dennoch würde mich dein Vorschlag interessieren.

                      So ich habe mich mal ein paar Stunden hingesetzt und - klar da musste ich selbst bissi rumprobieren - wie folgt vereinfacht.

                      Ich habe kein Modbus - deswegen habe ich einfach einen Forumstext genommen und nur die Bytes die ggf. modifiziert werden müssen zum Testen entsprechend angepasst.

                      So ich habe mal Deinen ersten Kasten "Inverter" vereinfacht!!

                      f6d2a5b9-7cfb-4151-b3f7-c3043a68c909-image.png

                      Der ganze "gelbe Kasten" schrumpft also auf den "grünen Kasten" - ohne dass Du was an Funktionalität einbüßt.

                      Grundsätzlich ist es meist nicht sinnvoll die Werte als beschreibbar zu exportieren - auch wenn du value genommen hast. Aber kann man machen (muss man in meiner Lösung nur umstellen, dann werden alle neu angelegten States beschreibbar). Die Werte sind natürlich Käse - ich habe nur darauf geachtet, dass bei der Zeit was sinnvolles rauskommt und beim Device-Status.

                      df483728-403b-448a-9dea-2bb204613f0e-image.png

                      Letztlich hast Du ein paar nette Formatierungen eingebaut - wie den State-Name und State-Units. Ich habe das jeweils in einer eigenen Change Node abgefüttert - da das ja im Grunde optional ist.

                      So nun zur Erläuterung der Vereinfachungen und dem Flow im Detail:

                      411c5bcf-25fe-4912-865d-ddf3041c0b4a-image.png

                      Kernpunkt ist, dass Du den Namen in der Parser-Node bereits so benennst wie die States später heißen sollen - da diese zum Topic werden:

                      e93cb396-cb4a-4fb6-99e8-8d55e113bdf0-image.png

                      Das Aufsplitten in einzene Ausgänge habe ich also nicht gemacht (kein fan out).
                      Die Namen - sollten den State Namen entsprechen, diese werden vorerst zum topic
                      Den Device Status habe ich als Hexstring ausgeben lassen - muss man nicht - aber Du hast in Deiner function Node mit Hex-Strings gearbeitet, deswegen habe ich es auch gemacht - wobei ich aber die Buffer Node umrechnen lasse.

                      Die Units in den States, die Du ja gesetzt hast, werden in der 1. Change Node gesetzt. Den StateName noch solange der topic unmodifiziert aus der Parser Node rauskommt. 1. und 2. Change Node kann man natürlich in eine Change Node zusammenfassen - das dient hier nur der Demonstration.

                      Vermutlich wird das dann nicht gehen, wenn die Werte noch eine zusätzliche Umrechnung benötigen (wie z.B. die Uhrzeit) oder wenn ich bei einigen Werten direkt noch ein Text hinterlege, z.B. beim "Device Status"? Dennoch würde mich dein Vorschlag interessieren.

                      Wie Du siehst geht es - man fischt halt die Nachrichten über das topic raus, die man noch modifizieren möchte (s. switch Node).

                      20309921-ae5d-472b-847f-bc81ce2e43c2-image.png

                      Die anderen lässt man durchflutschen und macht halt nichts mehr.

                      Es wurde bewusst auf Javascript und function Nodes verzichtet und alles mit JSONATA gemacht - da dies halt weniger Code-Schreiberei ist und in meinen Augen sehr elegant - auch wenn man sich da erst reinfuchsen muss.

                      Zu Schluss wird halt das Topic um den ganzen Pfad erweitert, um die States in die richtigen Datenpunkte zu schreiben:

                      e2adc0ec-cfb0-404a-8750-5e00d263a2d9-image.png

                      Also easy. Und somit ist nur noch eine iobroker-Out nötig und wie gesagt - ich würde die States auf Read-Only setzen - kannst natürlich auch ändern.

                      10f75299-5fc3-409f-9130-d59088fb16ea-image.png

                      Alles andere wird ja in den Nachrichtenobjekten selbst gesetzt.

                      Hier der Flow zum Import:

                      [
                         {
                             "id": "187f146e9658409a",
                             "type": "group",
                             "z": "36ae66b997d3bee8",
                             "name": "",
                             "style": {
                                 "fill": "#c8e7a7",
                                 "label": true
                             },
                             "nodes": [
                                 "edfdca52ca7f0d8a",
                                 "414b4356cc4c622b",
                                 "6cf086b9713a9b3d",
                                 "753144f2c7358152",
                                 "74d62c6e47c82658",
                                 "18444517a9d36abf",
                                 "743bef30d8285fdf",
                                 "0e2fe1da994834de",
                                 "b5fc699345857877",
                                 "1f1bd3a1581a9f81",
                                 "9b1f05bf2ae4f784",
                                 "b64fb4eb6b1bc30a",
                                 "73ecc2c7d5e95344",
                                 "f8256c61491a7672"
                             ],
                             "x": 94,
                             "y": 2539,
                             "w": 1752,
                             "h": 202
                         },
                         {
                             "id": "edfdca52ca7f0d8a",
                             "type": "buffer-parser",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "Inverter",
                             "data": "payload",
                             "dataType": "msg",
                             "specification": "spec",
                             "specificationType": "ui",
                             "items": [
                                 {
                                     "type": "int16be",
                                     "name": "PV1_voltage",
                                     "offset": 0,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int16be",
                                     "name": "PV1_current",
                                     "offset": 2,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/100",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int16be",
                                     "name": "PV2_voltage",
                                     "offset": 4,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int16be",
                                     "name": "PV2_current",
                                     "offset": 6,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/100",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Input_power",
                                     "offset": 96,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Line_voltage_between_phases_A_and_B",
                                     "offset": 100,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Line_voltage_between_phases_B_and_C",
                                     "offset": 102,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Line_voltage_between_phases_C_and_A",
                                     "offset": 104,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Phase_A_voltage",
                                     "offset": 106,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Phase_B_voltage",
                                     "offset": 108,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Phase_C_voltage",
                                     "offset": 110,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Phase_A_current",
                                     "offset": 112,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Phase_B_current",
                                     "offset": 116,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Phase_C_current",
                                     "offset": 120,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Peak_active_power_of_current_day",
                                     "offset": 124,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Active_power",
                                     "offset": 128,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int32be",
                                     "name": "Reactive_power",
                                     "offset": 132,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int16be",
                                     "name": "Power_factor",
                                     "offset": 136,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Grid_frequency",
                                     "offset": 138,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/100",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Efficiency",
                                     "offset": 140,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/100",
                                     "mask": ""
                                 },
                                 {
                                     "type": "int16be",
                                     "name": "Internal_temperature",
                                     "offset": 142,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/10",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Insulation_resistance",
                                     "offset": 144,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/1000",
                                     "mask": ""
                                 },
                                 {
                                     "type": "hex",
                                     "name": "Device_status",
                                     "offset": 146,
                                     "length": 2,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16be",
                                     "name": "Fault_code",
                                     "offset": 148,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint32be",
                                     "name": "Startup_time",
                                     "offset": 150,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint32be",
                                     "name": "Shutdown_time",
                                     "offset": 154,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint32be",
                                     "name": "Accumulated_energy_yield",
                                     "offset": 180,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/100",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint32be",
                                     "name": "Daily_energy_yield",
                                     "offset": 196,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "/100",
                                     "mask": ""
                                 }
                             ],
                             "swap1": "",
                             "swap2": "",
                             "swap3": "",
                             "swap1Type": "swap",
                             "swap2Type": "swap",
                             "swap3Type": "swap",
                             "msgProperty": "payload",
                             "msgPropertyType": "str",
                             "resultType": "value",
                             "resultTypeType": "return",
                             "multipleResult": true,
                             "fanOutMultipleResult": false,
                             "setTopic": true,
                             "outputs": 1,
                             "x": 340,
                             "y": 2640,
                             "wires": [
                                 [
                                     "753144f2c7358152"
                                 ]
                             ]
                         },
                         {
                             "id": "414b4356cc4c622b",
                             "type": "inject",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "",
                             "props": [
                                 {
                                     "p": "payload"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "",
                             "payload": "[64,109,105,99,107,121,109,13,10,73,115,116,32,115,99,104,111,110,32,101,105,110,101,32,87,101,105,108,101,32,104,101,114,32,97,108,115,32,105,99,104,32,100,97,115,32,103,101,109,97,99,104,116,32,104,97,98,101,46,32,71,97,110,122,32,118,101,114,115,116,97,110,100,101,110,32,104,97,98,101,32,105,99,104,32,101,115,32,110,111,99,104,32,110,105,99,104,116,44,32,107,195,182,110,110,116,101,115,116,32,100,117,32,109,97,108,32,101,105,110,32,66,101,105,115,112,105,101,108,32,101,114,115,116,101,108,108,101,110,63,13,10,86,101,114,109,2,2,108,105,100,150,242,52,255,255,255,255,100,97,115,32,100,97,110,110,32,110,105,99,104,116,32,103,101,104,101,110,44,32,119,101,110,110,32,100,105,101,32,87,101,114,116,101,32,110,111,99,104,32,101,105,110,101,32,122,117,115,195,164,116,122,108,105,99,104,101,32,85,109,114,101,99,104,110,117,110,103,32,98,101,110,195,182,116,105,103,101,110,32,40,119,105,101,32,122,46,66,46,32,100,105,101,32,85,104,114,122,101,105,116,41,32,111,100,101,114,32,119,101,110,110,32,105,99,104,32,98,101,105,32,101,105,110,105,103,101,110,32,87,101,114,116,101,110,32,100,105,114,101,107,116,32,110,111,99,104,32,101,105,110,32,84,101,120,116,32,104,105,110,116,101,114,108,101,103,101,44,32,122,46,66,46,32,98,101,105,109,32,34,68,101,118,105,99,101,32,83,116,97,116,117,115,34,63,32,68,101,110,110,111,99,104,32,119,195,188,114,100,101,32,109,105,99,104,32,100,101,105,110,32,86,111,114,115,99,104,108,97,103,32,105,110,116,101,114,101,115,115,105,101,114,101,110,46]",
                             "payloadType": "bin",
                             "x": 190,
                             "y": 2640,
                             "wires": [
                                 [
                                     "edfdca52ca7f0d8a",
                                     "6cf086b9713a9b3d"
                                 ]
                             ]
                         },
                         {
                             "id": "6cf086b9713a9b3d",
                             "type": "debug",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "dummy Buffer",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "payload",
                             "targetType": "msg",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 360,
                             "y": 2580,
                             "wires": []
                         },
                         {
                             "id": "753144f2c7358152",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "stateUnit",
                                     "pt": "msg",
                                     "to": "[\t   {\"topic\":\"PV1_voltage\",\"unit\":\"V\"},\t   {\"topic\":\"PV1_current\",\"unit\":\"A\"},\t   {\"topic\":\"PV2_voltage\",\"unit\":\"V\"},\t   {\"topic\":\"PV2_current\",\"unit\":\"A\"},\t   {\"topic\":\"Input_power\",\"unit\":\"kW\"},\t   {\t       \"topic\":\"Line_voltage_between_phases_A_and_B\",\t       \"unit\":\"V\"\t   },\t   {\t       \"topic\":\"Line_voltage_between_phases_B_and_C\",\t       \"unit\":\"V\"\t   },\t   {\t       \"topic\":\"Line_voltage_between_phases_C_and_A\",\t       \"unit\":\"V\"\t   },\t   {\"topic\":\"Phase_A_voltage\",\"unit\":\"V\"},\t   {\"topic\":\"Phase_B_voltage\",\"unit\":\"V\"},\t   {\"topic\":\"Phase_C_voltage\",\"unit\":\"V\"},\t   {\"topic\":\"Phase_A_current\",\"unit\":\"A\"},\t   {\"topic\":\"Phase_B_current\",\"unit\":\"A\"},\t   {\"topic\":\"Phase_C_current\",\"unit\":\"A\"},\t   {\t       \"topic\":\"Peak_active_power_of_current_day\",\t       \"unit\":\"kW\"\t   },\t   {\"topic\":\"Active_power\",\"unit\":\"W\"},\t   {\"topic\":\"Reactive_power\",\"unit\":\"kVar\"},\t   {\"topic\":\"Grid_frequency\",\"unit\":\"Hz\"},\t   {\"topic\":\"Efficiency\",\"unit\":\"%\"},\t   {\t       \"topic\":\"Internal_temperature\",\t       \"unit\":\"°C\"\t   },\t   {\t       \"topic\":\"Insulation_resistance\",\t       \"unit\":\"MΩ\"\t   },\t  \t   {\t       \"topic\":\"Accumulated_energy_yield\",\t       \"unit\":\"kWh\"\t   },\t   {\t       \"topic\":\"Daily_energy_yield\",\t       \"unit\":\"kWh\"\t   }\t   ].$[topic=$$.topic].unit",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 530,
                             "y": 2640,
                             "wires": [
                                 [
                                     "1f1bd3a1581a9f81"
                                 ]
                             ]
                         },
                         {
                             "id": "74d62c6e47c82658",
                             "type": "switch",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "",
                             "property": "topic",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "eq",
                                     "v": "Device_status",
                                     "vt": "str"
                                 },
                                 {
                                     "t": "eq",
                                     "v": "Startup_time",
                                     "vt": "str"
                                 },
                                 {
                                     "t": "eq",
                                     "v": "Shutdown_time",
                                     "vt": "str"
                                 },
                                 {
                                     "t": "else"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 4,
                             "x": 950,
                             "y": 2640,
                             "wires": [
                                 [
                                     "0e2fe1da994834de"
                                 ],
                                 [
                                     "743bef30d8285fdf"
                                 ],
                                 [
                                     "18444517a9d36abf"
                                 ],
                                 [
                                     "b5fc699345857877"
                                 ]
                             ]
                         },
                         {
                             "id": "18444517a9d36abf",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "setze payload Shutdown_time",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "$formatBase(payload, 16) = 'ffffffff' ? '---' : $moment(payload*1000).locale(\"de\").utc().format('kk:mm [Uhr] (dddd, DD.MM.YYYY)')",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1210,
                             "y": 2660,
                             "wires": [
                                 [
                                     "f8256c61491a7672"
                                 ]
                             ]
                         },
                         {
                             "id": "743bef30d8285fdf",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "setze payload Start_time",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "$formatBase(payload, 16) = 'ffffffff' ? '---' : $moment(payload*1000).locale(\"de\").utc().format('kk:mm [Uhr] (dddd, DD.MM.YYYY)')",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1190,
                             "y": 2620,
                             "wires": [
                                 [
                                     "f8256c61491a7672"
                                 ]
                             ]
                         },
                         {
                             "id": "0e2fe1da994834de",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "setze payload Device_status",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "(\t   $status := [\t       {\t           \"code\": \"0000\",\t           \"text\": \"Standby: initializing\"\t  },\t       {\t           \"code\": \"0001\",\t           \"text\": \"Standby: detecting insulation resistance\"\t  },\t       {\t           \"code\": \"0002\",\t           \"text\": \"Standby: detecting irradiation\"\t  },\t       {\t           \"code\": \"0003\",\t           \"text\": \"Standby: drid detecting\"\t  },\t       {\t           \"code\": \"0100\",\t           \"text\": \"Starting\"\t  },\t       {\t           \"code\": \"0200\",\t           \"text\": \"On-grid\"\t  },\t       {\t           \"code\": \"0201\",\t           \"text\": \"Grid connection: power limited\"\t  },\t       {\t           \"code\": \"0202\",\t           \"text\": \"Grid connection: self-derating\"\t  },\t       {\t           \"code\": \"0203\",\t           \"text\": \"Off-grid Running\"\t  },\t       {\t           \"code\": \"0300\",\t           \"text\": \"Shutdown: fault\"\t  },\t       {\t           \"code\": \"0301\",\t           \"text\": \"Shutdown: command\"\t  },\t       {\t           \"code\": \"0302\",\t           \"text\": \"Shutdown: OVGR\"\t  },\t       {\t           \"code\": \"0303\",\t           \"text\": \"Shutdown: communication disconnected\"\t  },\t       {\t           \"code\": \"0304\",\t           \"text\": \"Shutdown: power limited\"\t  },\t       {\t           \"code\": \"0305\",\t           \"text\": \"Shutdown: manual startup required\"\t  },\t       {\t           \"code\": \"0306\",\t           \"text\": \"Shutdown: DC switches disconnected\"\t  },\t       {\t           \"code\": \"0307\",\t           \"text\": \"Shutdown: rapid cutoff\"\t  },\t       {\t           \"code\": \"0308\",\t           \"text\": \"Shutdown: input underpower\"\t  },\t       {\t           \"code\": \"0401\",\t           \"text\": \"Grid scheduling: cosφ-P curve\"\t  },\t       {\t           \"code\": \"0402\",\t           \"text\": \"Grid scheduling: Q-U curve\"\t  },\t       {\t           \"code\": \"0403\",\t           \"text\": \"Grid scheduling: PF-U curve\"\t  },\t       {\t           \"code\": \"0404\",\t           \"text\": \"Grid scheduling: dry contact\"\t  },\t       {\t           \"code\": \"0405\",\t           \"text\": \"Grid scheduling: Q-P curve\"\t  },\t       {\t           \"code\": \"0500\",\t           \"text\": \"Spot-check ready\"\t  },\t       {\t           \"code\": \"0501\",\t           \"text\": \"Spot-checking\"\t  },\t       {\t           \"code\": \"0600\",\t           \"text\": \"Inspecting\"\t  },\t       {\t           \"code\": \"0700\",\t           \"text\": \"AFCI self check\"\t  },\t       {\t           \"code\": \"0800\",\t           \"text\": \"I-V scanning\"\t  },\t       {\t           \"code\": \"0900\",\t           \"text\": \"DC input detection\"\t  },\t       {\t           \"code\": \"0A00\",\t           \"text\": \"Running: off-grid charging\"\t  },\t       {\t           \"code\": \"A000\",\t           \"text\": \"Standby: no irradiation\"\t  }\t];\t   $status[code=$$.payload] ? $status[code=$$.payload].text : 'shed unknown sensor'\t)",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1200,
                             "y": 2580,
                             "wires": [
                                 [
                                     "f8256c61491a7672"
                                 ]
                             ]
                         },
                         {
                             "id": "b5fc699345857877",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "No Change",
                             "rules": [],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1230,
                             "y": 2700,
                             "wires": [
                                 [
                                     "f8256c61491a7672"
                                 ]
                             ]
                         },
                         {
                             "id": "1f1bd3a1581a9f81",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "stateName",
                                     "pt": "msg",
                                     "to": "topic",
                                     "tot": "msg"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 760,
                             "y": 2640,
                             "wires": [
                                 [
                                     "74d62c6e47c82658"
                                 ]
                             ]
                         },
                         {
                             "id": "9b1f05bf2ae4f784",
                             "type": "change",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "'0_userdata.0.Photovoltaik.Huawei.Inverter1.' & topic",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1520,
                             "y": 2660,
                             "wires": [
                                 [
                                     "b64fb4eb6b1bc30a",
                                     "73ecc2c7d5e95344"
                                 ]
                             ]
                         },
                         {
                             "id": "b64fb4eb6b1bc30a",
                             "type": "debug",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "Data Stage 1",
                             "active": false,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "true",
                             "targetType": "full",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 1730,
                             "y": 2600,
                             "wires": []
                         },
                         {
                             "id": "73ecc2c7d5e95344",
                             "type": "ioBroker out",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "name": "",
                             "topic": "",
                             "ack": "true",
                             "autoCreate": "true",
                             "stateName": "",
                             "role": "",
                             "payloadType": "",
                             "readonly": "true",
                             "stateUnit": "",
                             "stateMin": "",
                             "stateMax": "",
                             "x": 1720,
                             "y": 2660,
                             "wires": []
                         },
                         {
                             "id": "f8256c61491a7672",
                             "type": "junction",
                             "z": "36ae66b997d3bee8",
                             "g": "187f146e9658409a",
                             "x": 1400,
                             "y": 2660,
                             "wires": [
                                 [
                                     "9b1f05bf2ae4f784"
                                 ]
                             ]
                         }
                      ]
                      

                      Die Change Nodes sind glaube auch von allgemeinem Interesse - weil sie zeigen, wie schön und schnell man mit JSONATA über "Übersetzungsobjekte" eine payload anpassen kann.

                      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.

                      M 1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        Spexx
                        schrieb am zuletzt editiert von
                        #330

                        @mickym
                        Wow vielen Dank, dass du dir extra so viel Mühe gemacht hast. Ich stimme dir zu, das ist bei dir nun wesentlich kompakter und man erspart sich das Anlegen jeder einzelner Datenpunkte. Mir ist damals nichts besseres eingefallen wie man auf die "fan out" verzichten kann, von daher habe ich wieder etwas dazugelernt 🙂
                        Es ist im Gegenzug dafür aber auch etwas schwieriger zu verstehen bzw. nachzuvollziehen, insbesondere für Node-Red Anfänger. Von daher bin ich mir noch nicht sicher, ob ich meinen Flow noch einmal überarbeiten werde, da er grundsätzlich ja auch problemlos funktioniert.

                        Trotzdem danke noch einmal.

                        1 Antwort Letzte Antwort
                        0
                        • V Offline
                          V Offline
                          virFortis
                          schrieb am zuletzt editiert von
                          #331

                          Ich wollte mich einfach nur bedanken. Habe mein Wechselrichter seit Anfang der Woche aktiv und habe mit der Anleitung wirklich von 0 auf alles Installiert und eingerichtet bekommen und habe nun die Werte im ioBroker!
                          DANKE

                          B 1 Antwort Letzte Antwort
                          0
                          • V virFortis

                            Ich wollte mich einfach nur bedanken. Habe mein Wechselrichter seit Anfang der Woche aktiv und habe mit der Anleitung wirklich von 0 auf alles Installiert und eingerichtet bekommen und habe nun die Werte im ioBroker!
                            DANKE

                            B Online
                            B Online
                            badsnoopy667
                            schrieb am zuletzt editiert von
                            #332

                            Hallo @virfortis,
                            freut mich, dass es funktioniert hat! Viel Spaß mit Deiner PV-Anlage!

                            V 1 Antwort Letzte Antwort
                            0
                            • B badsnoopy667

                              Hallo @virfortis,
                              freut mich, dass es funktioniert hat! Viel Spaß mit Deiner PV-Anlage!

                              V Offline
                              V Offline
                              virFortis
                              schrieb am zuletzt editiert von
                              #333

                              @badsnoopy667 Vielen Dank. Was mir noch fehlt sind die Statistik Informationen die man so schön in der App oder auch im Web sieht. e5e6e5a0-d298-4ed7-8823-c62348fc36d3-image.png
                              Leider scheint es ja weder über den Modbus noch über die API die Werte zu geben. Dazu habe ich hier im Forum das folgende Bild gefunden:
                              02a7db1a-748c-430c-bbe0-cf589ee0a405-1688225894755-562698cb-619b-4a1c-82c1-3ff5968a0e11-grafik.png

                              Gibt's eigentlich eine Möglichkeit in Node-red direkt zwei Knoten zu addieren?

                              Habe weiter oben gelesen, dass der aktuelle Hausverbrauch z.b. gemittelt über 20 Sekunden gebildet werden muss weil die Abfragezeitpunkte unterschiedlich sind. -> Vllt könnte man das umgehen in dem man in Node-Red den Calculator verwenden könnte um zu sagen Adresse A - Adresse B = Wert xyz?

                              mickymM 1 Antwort Letzte Antwort
                              0
                              • V virFortis

                                @badsnoopy667 Vielen Dank. Was mir noch fehlt sind die Statistik Informationen die man so schön in der App oder auch im Web sieht. e5e6e5a0-d298-4ed7-8823-c62348fc36d3-image.png
                                Leider scheint es ja weder über den Modbus noch über die API die Werte zu geben. Dazu habe ich hier im Forum das folgende Bild gefunden:
                                02a7db1a-748c-430c-bbe0-cf589ee0a405-1688225894755-562698cb-619b-4a1c-82c1-3ff5968a0e11-grafik.png

                                Gibt's eigentlich eine Möglichkeit in Node-red direkt zwei Knoten zu addieren?

                                Habe weiter oben gelesen, dass der aktuelle Hausverbrauch z.b. gemittelt über 20 Sekunden gebildet werden muss weil die Abfragezeitpunkte unterschiedlich sind. -> Vllt könnte man das umgehen in dem man in Node-Red den Calculator verwenden könnte um zu sagen Adresse A - Adresse B = Wert xyz?

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

                                @virfortis Du kannst mit Node-Red alles rechnen - Du musst nur beides in einem Nachrichtenobjekt haben. Entweder speicherst Du eine Komponente im Kontext oder falls die Daten immer zusammen aktualisiert werden, dann über die JOIN Node in einem Objekt speichern. Ich hab das schon x Mal hier im NodeRed Forum gezeigt.

                                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 Offline
                                  R Offline
                                  rascal
                                  schrieb am zuletzt editiert von
                                  #335

                                  Hallo,
                                  bin neu bei dem Thema, ich habe den am Anfang vorgestellten Flow importiert und angepasst, es funktioniert soweit (über den Modbus Adapter bekomme ich überhaupt keine Verbindung)

                                  Es tauchen laufend Fehlermeldungen auf:

                                  node-red.0
                                  2023-07-06 10:22:24.195	warn	6 Jul 10:22:24 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
                                  
                                  node-red.0
                                  2023-07-06 10:22:19.192	warn	6 Jul 10:22:19 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
                                  
                                  node-red.0
                                  2023-07-06 10:22:16.930	warn	6 Jul 10:22:16 - [warn] [modbus-getter:30000] Getter -> Inject while node is not ready for input.
                                  
                                  node-red.0
                                  2023-07-06 10:22:14.192	warn	6 Jul 10:22:14 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
                                  

                                  Es gibt auch immer wieder stundenweise Aussetzer bei der Abfrage, dann kommen wieder Daten.
                                  Weiters legt mir der Flow nicht alle Datenpunkte an.
                                  Screenshot 2023-07-06 104331.png

                                  Habe ich irgendwo was übersehen beim Anpassen?
                                  Warum legt er mir ein paar Datenpunkte an und den Rest nicht?

                                  Noch eine Frage: ich habe mittlerweile 3 in Foren vorgeschlagen RS485/USB Adapter hier herumliegen, bekomme aber keine Daten über den Modbus Adapter. Am Inverter habe ich die Kabel an 2 u 4 angeschlossen da 1 u 3 schon belegt ist.
                                  Soweit ich das herausgelesen habe, sollte das egal sein.

                                  V 1 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    Marcel 4
                                    schrieb am zuletzt editiert von
                                    #336

                                    @rascal Hallo,
                                    ich bin neu in diesem Forum und wollte mal nachdem ich auch fast verzweifelt bin eine Lösung bringen.
                                    Ich habe einen Modbus Rs485/Netzwerk Adapter benutzt.
                                    Am Sun 2000 nicht den Dongle benutzen. Direkt in die Buchsen 1 und 3.
                                    Im Iobroker den Modbus Adapter benutzen.
                                    Bei Allgemein Tcp, IP Adresse, Port (502),Geräte ID 1
                                    Holding Register eintragen. I rechten Feld Abfrage abhaken.
                                    Fertig
                                    Gruß Marcel

                                    R 1 Antwort Letzte Antwort
                                    0
                                    • R rascal

                                      Hallo,
                                      bin neu bei dem Thema, ich habe den am Anfang vorgestellten Flow importiert und angepasst, es funktioniert soweit (über den Modbus Adapter bekomme ich überhaupt keine Verbindung)

                                      Es tauchen laufend Fehlermeldungen auf:

                                      node-red.0
                                      2023-07-06 10:22:24.195	warn	6 Jul 10:22:24 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
                                      
                                      node-red.0
                                      2023-07-06 10:22:19.192	warn	6 Jul 10:22:19 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
                                      
                                      node-red.0
                                      2023-07-06 10:22:16.930	warn	6 Jul 10:22:16 - [warn] [modbus-getter:30000] Getter -> Inject while node is not ready for input.
                                      
                                      node-red.0
                                      2023-07-06 10:22:14.192	warn	6 Jul 10:22:14 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
                                      

                                      Es gibt auch immer wieder stundenweise Aussetzer bei der Abfrage, dann kommen wieder Daten.
                                      Weiters legt mir der Flow nicht alle Datenpunkte an.
                                      Screenshot 2023-07-06 104331.png

                                      Habe ich irgendwo was übersehen beim Anpassen?
                                      Warum legt er mir ein paar Datenpunkte an und den Rest nicht?

                                      Noch eine Frage: ich habe mittlerweile 3 in Foren vorgeschlagen RS485/USB Adapter hier herumliegen, bekomme aber keine Daten über den Modbus Adapter. Am Inverter habe ich die Kabel an 2 u 4 angeschlossen da 1 u 3 schon belegt ist.
                                      Soweit ich das herausgelesen habe, sollte das egal sein.

                                      V Offline
                                      V Offline
                                      virFortis
                                      schrieb am zuletzt editiert von
                                      #337

                                      @rascal schau Mal ob einzelne Datenpunkte deaktiviert sind (grau). Ansonsten gibt's hier einen anderen flow, der auch ein paar mehre ausgibt und sogar berechnet. Allerdings ist da auch ein kleiner Fehler für das ein DP falsch eingestellt ist.

                                      Ist hier zu finden:
                                      Tts_482 13. Juni 2023, 14:28
                                      @exel flows.json

                                      R 1 Antwort Letzte Antwort
                                      0
                                      • M Marcel 4

                                        @rascal Hallo,
                                        ich bin neu in diesem Forum und wollte mal nachdem ich auch fast verzweifelt bin eine Lösung bringen.
                                        Ich habe einen Modbus Rs485/Netzwerk Adapter benutzt.
                                        Am Sun 2000 nicht den Dongle benutzen. Direkt in die Buchsen 1 und 3.
                                        Im Iobroker den Modbus Adapter benutzen.
                                        Bei Allgemein Tcp, IP Adresse, Port (502),Geräte ID 1
                                        Holding Register eintragen. I rechten Feld Abfrage abhaken.
                                        Fertig
                                        Gruß Marcel

                                        R Offline
                                        R Offline
                                        rascal
                                        schrieb am zuletzt editiert von rascal
                                        #338

                                        @marcel-4
                                        Danke für die Info.
                                        Dann muss ich 3 Kabel auf die Ports 1+3 legen...
                                        Ich habe jetzt einmal das aktuelle Node-Red flow eingespielt und schaue mir das an, bevor ich es über die RS485 nochmals versuche.

                                        @virFortis auch dir Danke.
                                        Flow funktioniert soweit gut

                                        1 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          Praktiker
                                          schrieb am zuletzt editiert von
                                          #339

                                          Hallo Huawei Freunde,
                                          ich habe seit Donnerstag endlich meine Anlage laufen, und gleich mit dem Flow aus dem 1. Beitrag genutzt. Sieht eigentlich gut aus, habe schöne Werte. Allerdings gibt es hier Nachts ein paar unplausible Werte die mir meine Statistik echt versauen.
                                          Hat hier jemand evtl. ein ähnliches Problem, und evtl. eine Lösung oder zumindest einen Ansatz?
                                          Grüße Praktiker
                                          Screenshot 2023-07-08 092349.png Screenshot 2023-07-09 115057.png

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          771

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe