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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Node-Red Modbus mehrere Slave ID´s abfragen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    143

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    12
    1
    563

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

Node-Red Modbus mehrere Slave ID´s abfragen

Geplant Angeheftet Gesperrt Verschoben Node-Red
javascriptnode-red
36 Beiträge 4 Kommentatoren 5.0k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • mickymM mickym

    Wie sieht der switch aus? ggf. kannst dann auch eine filter Node nehmen. ;)

    M Offline
    M Offline
    Malaus
    schrieb am zuletzt editiert von
    #19

    @mickym

    059dc944-14b4-4285-acd3-433616d618c2-image.png

    mickymM 1 Antwort Letzte Antwort
    0
    • M Malaus

      @mickym

      059dc944-14b4-4285-acd3-433616d618c2-image.png

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

      @malaus Na ja - ich verstehe, weil Du sagst das ist das letzte Element in Deinem array. Dann finde ich es intuitiver und besser - wirklich die id als topic zu nehmen und hab mal eine filter Node verwendet. Ich weiss nicht, ob aus dem unteren Teil einfach die Eingangsobjekte durchgereicht werden. Aber dann spart man sich das topic einfach.

      Falls also am unteren Ausgang der GETTER Node einfach das Eingangsobjekt durchkommt:
      Für mich wäre dann das am saubersten:

      8db35761-97e7-40f7-930b-891dc36509f7-image.png

      [
         {
             "id": "36239d1d9d361a2e",
             "type": "change",
             "z": "7e6af0015415146d",
             "name": "create Array",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "[\t            {\t                \"unitId\": payload,\t                \"_address\": 0,\t                \"name\": \"Voltage\",\t                \"description\": \"Voltage\",\t                \"unit\": \"V\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 6,\t                \"name\": \"Current\",\t                \"description\": \"Current\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 12,\t                \"name\": \"ActivePower\",\t                \"description\": \"Active Power\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 18,\t                \"name\": \"ApparentPower\",\t                \"description\": \"ApparentPower\",\t                \"unit\": \"VA\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 24,\t                \"name\": \"ReactivePower\",\t                \"description\": \"ReactivePower\",\t                \"unit\": \"VAr\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 30,\t                \"name\": \"PowerFactor\",\t                \"description\": \"PowerFactor\",\t                \"unit\": \"\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 70,\t                \"name\": \"Frequency\",\t                \"description\": \"Frequency\",\t                \"unit\": \"Hz\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 72,\t                \"name\": \"ActiveEnergy\",\t                \"description\": \"Active Energy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"ExportActiveEnergy\",\t                \"description\": \"ExportActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"TotalSystemPowerDemand\",\t                \"description\": \"TotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"ImportReactiveEnergy\",\t                \"description\": \"ImportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"MaxTotalSystemPowerDemand\",\t                \"description\": \"MaxTotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 78,\t                \"name\": \"ExportReactiveEnergy\",\t                \"description\": \"ExportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 88,\t                \"name\": \"ImportSystemPowerDemand\",\t                \"description\": \"ImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 90,\t                \"name\": \"MaxImportSystemPowerDemand\",\t                \"description\": \"MaxImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 92,\t                \"name\": \"ExportSystemPowerDemand\",\t                \"description\": \"ExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 94,\t                \"name\": \"MaxExportSystemPowerDemand\",\t                \"description\": \"MaxExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 258,\t                \"name\": \"CurrentDemand\",\t                \"description\": \"CurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 264,\t                \"name\": \"MaxCurrentDemand\",\t                \"description\": \"MaxCurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 342,\t                \"name\": \"TotalActiveEnergy\",\t                \"description\": \"TotalActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 344,\t                \"name\": \"TotalReactiveEnergy\",\t                \"description\": \"TotalReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            }\t]",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 730,
             "y": 860,
             "wires": [
                 [
                     "833e22472f593063"
                 ]
             ]
         },
         {
             "id": "8b8fb28987277d75",
             "type": "function",
             "z": "7e6af0015415146d",
             "name": "Trigger IDs",
             "func": "if (msg.payload) {\n    context.set(\"data\",msg.payload);\n    context.set(\"pointer\",0)\n}\nvar array = context.get(\"data\");\nvar pointer = context.get(\"pointer\");\npointer ++;\n\nif ( pointer <= array.length)\n{\n    msg.payload = array[pointer - 1];\n    context.set(\"pointer\",pointer);\n    return msg;\n}\n\n",
             "outputs": 1,
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 550,
             "y": 860,
             "wires": [
                 [
                     "36239d1d9d361a2e"
                 ]
             ]
         },
         {
             "id": "6521f44463e25c3c",
             "type": "inject",
             "z": "7e6af0015415146d",
             "name": "Mehrere IDs",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "[10,11,12]",
             "payloadType": "json",
             "x": 230,
             "y": 860,
             "wires": [
                 [
                     "8b8fb28987277d75",
                     "1332eadf8470bb16"
                 ]
             ]
         },
         {
             "id": "557989f42ddad473",
             "type": "change",
             "z": "7e6af0015415146d",
             "name": "Read Modbus",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "{\t   \"fc\": 4,\t   \"unitid\": payload.unitId,\t   \"address\": payload._address,\t   \"quantity\": 2,\t   \"value\": 2\t}",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 1080,
             "y": 860,
             "wires": [
                 [
                     "0f4f661c760aa72b"
                 ]
             ]
         },
         {
             "id": "833e22472f593063",
             "type": "split",
             "z": "7e6af0015415146d",
             "name": "split Array",
             "splt": "\\n",
             "spltType": "str",
             "arraySplt": 1,
             "arraySpltType": "len",
             "stream": false,
             "addname": "",
             "x": 900,
             "y": 860,
             "wires": [
                 [
                     "557989f42ddad473"
                 ]
             ]
         },
         {
             "id": "0f4f661c760aa72b",
             "type": "function",
             "z": "7e6af0015415146d",
             "name": "Simulate Modbus getter",
             "func": "var newmsg= {\n    payload : {\n        data : [0,0],\n        buffer: Buffer.alloc(3)\n    },\n    modbusRequest : {\n        address : 99,\n        quantity : 2\n    }\n}\n\n\nreturn [newmsg,msg];",
             "outputs": 2,
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 1310,
             "y": 860,
             "wires": [
                 [
                     "5e5a202488c31ae0"
                 ],
                 [
                     "7b697360af0a0b1f"
                 ]
             ]
         },
         {
             "id": "5e5a202488c31ae0",
             "type": "change",
             "z": "7e6af0015415146d",
             "name": "WriteModbus",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "{\t    \"value\": payload,\t    \"fc\": 6,\t    \"unitid\" : 1, /* unitId */\t    \"address\": modbusRequest.address,\t    \"quantity\": modbusRequest.quantity\t}",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 1530,
             "y": 840,
             "wires": [
                 []
             ]
         },
         {
             "id": "112befc65439e8b7",
             "type": "comment",
             "z": "7e6af0015415146d",
             "name": "Getriggert by Getter Node",
             "info": "",
             "x": 230,
             "y": 800,
             "wires": []
         },
         {
             "id": "4a433464d06dc6d8",
             "type": "change",
             "z": "7e6af0015415146d",
             "name": "Trigger next ID",
             "rules": [
                 {
                     "t": "set",
                     "p": "trigger",
                     "pt": "msg",
                     "to": "true",
                     "tot": "bool"
                 },
                 {
                     "t": "delete",
                     "p": "payload",
                     "pt": "msg"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 880,
             "y": 920,
             "wires": [
                 [
                     "8b8fb28987277d75"
                 ]
             ]
         },
         {
             "id": "7b697360af0a0b1f",
             "type": "rbe",
             "z": "7e6af0015415146d",
             "name": "",
             "func": "rbe",
             "gap": "",
             "start": "",
             "inout": "out",
             "septopics": false,
             "property": "payload.unitid",
             "topi": "topic",
             "x": 1310,
             "y": 980,
             "wires": [
                 [
                     "4a433464d06dc6d8",
                     "d3be5bf799cfff52"
                 ]
             ]
         },
         {
             "id": "1332eadf8470bb16",
             "type": "change",
             "z": "7e6af0015415146d",
             "name": "",
             "rules": [
                 {
                     "t": "set",
                     "p": "reset",
                     "pt": "msg",
                     "to": "true",
                     "tot": "bool"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 460,
             "y": 980,
             "wires": [
                 [
                     "7b697360af0a0b1f"
                 ]
             ]
         },
         {
             "id": "d3be5bf799cfff52",
             "type": "debug",
             "z": "7e6af0015415146d",
             "name": "new ID",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "payload",
             "targetType": "msg",
             "statusVal": "",
             "statusType": "auto",
             "x": 1500,
             "y": 980,
             "wires": []
         }
      ]
      

      Dann kann man nämlich auch mal eine andere Reihenfolge beim createArray erstellen verwenden ohne das es Folgen haben würde. ;)

      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
      • mickymM mickym

        @malaus Na ja - ich verstehe, weil Du sagst das ist das letzte Element in Deinem array. Dann finde ich es intuitiver und besser - wirklich die id als topic zu nehmen und hab mal eine filter Node verwendet. Ich weiss nicht, ob aus dem unteren Teil einfach die Eingangsobjekte durchgereicht werden. Aber dann spart man sich das topic einfach.

        Falls also am unteren Ausgang der GETTER Node einfach das Eingangsobjekt durchkommt:
        Für mich wäre dann das am saubersten:

        8db35761-97e7-40f7-930b-891dc36509f7-image.png

        [
           {
               "id": "36239d1d9d361a2e",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "create Array",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "[\t            {\t                \"unitId\": payload,\t                \"_address\": 0,\t                \"name\": \"Voltage\",\t                \"description\": \"Voltage\",\t                \"unit\": \"V\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 6,\t                \"name\": \"Current\",\t                \"description\": \"Current\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 12,\t                \"name\": \"ActivePower\",\t                \"description\": \"Active Power\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 18,\t                \"name\": \"ApparentPower\",\t                \"description\": \"ApparentPower\",\t                \"unit\": \"VA\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 24,\t                \"name\": \"ReactivePower\",\t                \"description\": \"ReactivePower\",\t                \"unit\": \"VAr\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 30,\t                \"name\": \"PowerFactor\",\t                \"description\": \"PowerFactor\",\t                \"unit\": \"\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 70,\t                \"name\": \"Frequency\",\t                \"description\": \"Frequency\",\t                \"unit\": \"Hz\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 72,\t                \"name\": \"ActiveEnergy\",\t                \"description\": \"Active Energy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"ExportActiveEnergy\",\t                \"description\": \"ExportActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"TotalSystemPowerDemand\",\t                \"description\": \"TotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"ImportReactiveEnergy\",\t                \"description\": \"ImportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"MaxTotalSystemPowerDemand\",\t                \"description\": \"MaxTotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 78,\t                \"name\": \"ExportReactiveEnergy\",\t                \"description\": \"ExportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 88,\t                \"name\": \"ImportSystemPowerDemand\",\t                \"description\": \"ImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 90,\t                \"name\": \"MaxImportSystemPowerDemand\",\t                \"description\": \"MaxImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 92,\t                \"name\": \"ExportSystemPowerDemand\",\t                \"description\": \"ExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 94,\t                \"name\": \"MaxExportSystemPowerDemand\",\t                \"description\": \"MaxExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 258,\t                \"name\": \"CurrentDemand\",\t                \"description\": \"CurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 264,\t                \"name\": \"MaxCurrentDemand\",\t                \"description\": \"MaxCurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 342,\t                \"name\": \"TotalActiveEnergy\",\t                \"description\": \"TotalActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 344,\t                \"name\": \"TotalReactiveEnergy\",\t                \"description\": \"TotalReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            }\t]",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 730,
               "y": 860,
               "wires": [
                   [
                       "833e22472f593063"
                   ]
               ]
           },
           {
               "id": "8b8fb28987277d75",
               "type": "function",
               "z": "7e6af0015415146d",
               "name": "Trigger IDs",
               "func": "if (msg.payload) {\n    context.set(\"data\",msg.payload);\n    context.set(\"pointer\",0)\n}\nvar array = context.get(\"data\");\nvar pointer = context.get(\"pointer\");\npointer ++;\n\nif ( pointer <= array.length)\n{\n    msg.payload = array[pointer - 1];\n    context.set(\"pointer\",pointer);\n    return msg;\n}\n\n",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 550,
               "y": 860,
               "wires": [
                   [
                       "36239d1d9d361a2e"
                   ]
               ]
           },
           {
               "id": "6521f44463e25c3c",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "Mehrere IDs",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "[10,11,12]",
               "payloadType": "json",
               "x": 230,
               "y": 860,
               "wires": [
                   [
                       "8b8fb28987277d75",
                       "1332eadf8470bb16"
                   ]
               ]
           },
           {
               "id": "557989f42ddad473",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "Read Modbus",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "{\t   \"fc\": 4,\t   \"unitid\": payload.unitId,\t   \"address\": payload._address,\t   \"quantity\": 2,\t   \"value\": 2\t}",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 1080,
               "y": 860,
               "wires": [
                   [
                       "0f4f661c760aa72b"
                   ]
               ]
           },
           {
               "id": "833e22472f593063",
               "type": "split",
               "z": "7e6af0015415146d",
               "name": "split Array",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "",
               "x": 900,
               "y": 860,
               "wires": [
                   [
                       "557989f42ddad473"
                   ]
               ]
           },
           {
               "id": "0f4f661c760aa72b",
               "type": "function",
               "z": "7e6af0015415146d",
               "name": "Simulate Modbus getter",
               "func": "var newmsg= {\n    payload : {\n        data : [0,0],\n        buffer: Buffer.alloc(3)\n    },\n    modbusRequest : {\n        address : 99,\n        quantity : 2\n    }\n}\n\n\nreturn [newmsg,msg];",
               "outputs": 2,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 1310,
               "y": 860,
               "wires": [
                   [
                       "5e5a202488c31ae0"
                   ],
                   [
                       "7b697360af0a0b1f"
                   ]
               ]
           },
           {
               "id": "5e5a202488c31ae0",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "WriteModbus",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "{\t    \"value\": payload,\t    \"fc\": 6,\t    \"unitid\" : 1, /* unitId */\t    \"address\": modbusRequest.address,\t    \"quantity\": modbusRequest.quantity\t}",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 1530,
               "y": 840,
               "wires": [
                   []
               ]
           },
           {
               "id": "112befc65439e8b7",
               "type": "comment",
               "z": "7e6af0015415146d",
               "name": "Getriggert by Getter Node",
               "info": "",
               "x": 230,
               "y": 800,
               "wires": []
           },
           {
               "id": "4a433464d06dc6d8",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "Trigger next ID",
               "rules": [
                   {
                       "t": "set",
                       "p": "trigger",
                       "pt": "msg",
                       "to": "true",
                       "tot": "bool"
                   },
                   {
                       "t": "delete",
                       "p": "payload",
                       "pt": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 880,
               "y": 920,
               "wires": [
                   [
                       "8b8fb28987277d75"
                   ]
               ]
           },
           {
               "id": "7b697360af0a0b1f",
               "type": "rbe",
               "z": "7e6af0015415146d",
               "name": "",
               "func": "rbe",
               "gap": "",
               "start": "",
               "inout": "out",
               "septopics": false,
               "property": "payload.unitid",
               "topi": "topic",
               "x": 1310,
               "y": 980,
               "wires": [
                   [
                       "4a433464d06dc6d8",
                       "d3be5bf799cfff52"
                   ]
               ]
           },
           {
               "id": "1332eadf8470bb16",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "",
               "rules": [
                   {
                       "t": "set",
                       "p": "reset",
                       "pt": "msg",
                       "to": "true",
                       "tot": "bool"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 460,
               "y": 980,
               "wires": [
                   [
                       "7b697360af0a0b1f"
                   ]
               ]
           },
           {
               "id": "d3be5bf799cfff52",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "new ID",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1500,
               "y": 980,
               "wires": []
           }
        ]
        

        Dann kann man nämlich auch mal eine andere Reihenfolge beim createArray erstellen verwenden ohne das es Folgen haben würde. ;)

        M Offline
        M Offline
        Malaus
        schrieb am zuletzt editiert von
        #21

        @mickym
        b7e59bee-f32b-4e6c-abb3-c75e9ccf6d14-image.png

        Bei debug 19 erhalte ich keine Werte. Der Durchlauf wird nur mit einer ID gemacht.
        Den Filter verstehe ich nicht so ganz:
        a5443fb9-a5cf-4bfe-8617-41e7e02753eb-image.png

        Bei Read Modbus hast du das Topic rausgenommen, ist das so gewollt? Ändert aber auch nichts, wenn ich es wieder einsetze.

        mickymM 1 Antwort Letzte Antwort
        0
        • M Malaus

          @mickym
          b7e59bee-f32b-4e6c-abb3-c75e9ccf6d14-image.png

          Bei debug 19 erhalte ich keine Werte. Der Durchlauf wird nur mit einer ID gemacht.
          Den Filter verstehe ich nicht so ganz:
          a5443fb9-a5cf-4bfe-8617-41e7e02753eb-image.png

          Bei Read Modbus hast du das Topic rausgenommen, ist das so gewollt? Ändert aber auch nichts, wenn ich es wieder einsetze.

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

          @malaus Ja ich weiss - ich war der Meinung . dass unten einfach die Eingangsobjekte rauskommen - deswegen habe ich das topic auch wieder raus genommen. Kannst Du mal die Nachrichten, die aus debug 18 rauskommen posten und ist da die ID drin? Ich kann halt immer nur Vermutungen anstellen, was die GETTER Node ausspukt. ;) Am Besten das ganze Nachrichtenobjekt in debug 18 ausgeben lassen und hier in CodeTags einbetten.

          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
          • mickymM mickym

            @malaus Ja ich weiss - ich war der Meinung . dass unten einfach die Eingangsobjekte rauskommen - deswegen habe ich das topic auch wieder raus genommen. Kannst Du mal die Nachrichten, die aus debug 18 rauskommen posten und ist da die ID drin? Ich kann halt immer nur Vermutungen anstellen, was die GETTER Node ausspukt. ;) Am Besten das ganze Nachrichtenobjekt in debug 18 ausgeben lassen und hier in CodeTags einbetten.

            M Offline
            M Offline
            Malaus
            schrieb am zuletzt editiert von
            #23

            @mickym
            26511c59-dced-4006-904f-9c10dbf5c554-image.png

            Die Getter Node spuckt mir jeden Wert einzeln aus.

            mickymM 1 Antwort Letzte Antwort
            0
            • M Malaus

              @mickym
              26511c59-dced-4006-904f-9c10dbf5c554-image.png

              Die Getter Node spuckt mir jeden Wert einzeln aus.

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

              Nein ok - ich habe gerade einen Denkfehler gemacht - es wird ja nun bei jedem 1. Element geändert - sorry mein Fehler. Ich werde was einbauen, dass man das letzte Element automatisch erkennt. Sorry - einen Augenblick!!!
              Noch eine Frage ich sehe gerade die GETTER node - und deshalb auch der Fehler die queued je ID. ;)

              Kannst Du mal schauen, ob das letzte Element aus debug 18 queuelength 0 hat?

              f7541025-64f1-4641-9da7-ee7f625253e7-image.png

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

              M 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                Nein ok - ich habe gerade einen Denkfehler gemacht - es wird ja nun bei jedem 1. Element geändert - sorry mein Fehler. Ich werde was einbauen, dass man das letzte Element automatisch erkennt. Sorry - einen Augenblick!!!
                Noch eine Frage ich sehe gerade die GETTER node - und deshalb auch der Fehler die queued je ID. ;)

                Kannst Du mal schauen, ob das letzte Element aus debug 18 queuelength 0 hat?

                f7541025-64f1-4641-9da7-ee7f625253e7-image.png

                M Offline
                M Offline
                Malaus
                schrieb am zuletzt editiert von
                #25

                @mickym das letzte hat die 20

                3fc02eb3-82ef-4a6b-afc3-feeab3a439a4-image.png

                mickymM 1 Antwort Letzte Antwort
                0
                • M Malaus

                  @mickym das letzte hat die 20

                  3fc02eb3-82ef-4a6b-afc3-feeab3a439a4-image.png

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

                  Ok danke. ;) - Das heißt die queuelänge baut sich auf und wird nur intern abgearbeitet ;)

                  Die msg.parts Eigenschaft scheint nicht durch zu kommen, sondern nur das topic - dann müssen wir ggf. doch das topic nutzen aber nicht anhand des Namens sondern dann würde ich wirklich nach der msg.parts Eigenschaft das topic setzen.

                  das heißt wir wissen ja wieviele Elemente kommen und setzten da topic entsprechend.

                  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
                  • mickymM mickym

                    Ok danke. ;) - Das heißt die queuelänge baut sich auf und wird nur intern abgearbeitet ;)

                    Die msg.parts Eigenschaft scheint nicht durch zu kommen, sondern nur das topic - dann müssen wir ggf. doch das topic nutzen aber nicht anhand des Namens sondern dann würde ich wirklich nach der msg.parts Eigenschaft das topic setzen.

                    das heißt wir wissen ja wieviele Elemente kommen und setzten da topic entsprechend.

                    M Offline
                    M Offline
                    Malaus
                    schrieb am zuletzt editiert von
                    #27

                    @mickym
                    das erste:
                    e8014b45-e262-4662-8f09-74729f4fbee8-image.png

                    das letzte:
                    cda61a06-3590-465e-bcb6-6ed44750a75d-image.png

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • M Malaus

                      @mickym
                      das erste:
                      e8014b45-e262-4662-8f09-74729f4fbee8-image.png

                      das letzte:
                      cda61a06-3590-465e-bcb6-6ed44750a75d-image.png

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

                      @malaus Ok wenn das topic das Einzige war was durchkommt (das msg.parts Objekt wird leider durch die GETTER Node nicht durchgereicht oder ist das enthalten?) , dann nehmen wir im Prinzip deine Lösung, setzen das topic aber nicht einen bestimmten Namen in dem array, sondern lassen einfach runterzählen. ;)

                      a933b1df-2e2c-4eac-98f6-3838033521a4-image.png

                      Das sollte dann aber auch tun. ;)

                      Ist also im Prinzip dein Flow mit dem switch als trigger nur das ich im topic nun die Anzahl der noch zu erwartenden Elemente durchreiche:

                      [
                         {
                             "id": "36239d1d9d361a2e",
                             "type": "change",
                             "z": "7e6af0015415146d",
                             "name": "create Array",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "[\t            {\t                \"unitId\": payload,\t                \"_address\": 0,\t                \"name\": \"Voltage\",\t                \"description\": \"Voltage\",\t                \"unit\": \"V\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 6,\t                \"name\": \"Current\",\t                \"description\": \"Current\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 12,\t                \"name\": \"ActivePower\",\t                \"description\": \"Active Power\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 18,\t                \"name\": \"ApparentPower\",\t                \"description\": \"ApparentPower\",\t                \"unit\": \"VA\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 24,\t                \"name\": \"ReactivePower\",\t                \"description\": \"ReactivePower\",\t                \"unit\": \"VAr\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 30,\t                \"name\": \"PowerFactor\",\t                \"description\": \"PowerFactor\",\t                \"unit\": \"\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 70,\t                \"name\": \"Frequency\",\t                \"description\": \"Frequency\",\t                \"unit\": \"Hz\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 72,\t                \"name\": \"ActiveEnergy\",\t                \"description\": \"Active Energy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"ExportActiveEnergy\",\t                \"description\": \"ExportActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"TotalSystemPowerDemand\",\t                \"description\": \"TotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"ImportReactiveEnergy\",\t                \"description\": \"ImportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"MaxTotalSystemPowerDemand\",\t                \"description\": \"MaxTotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 78,\t                \"name\": \"ExportReactiveEnergy\",\t                \"description\": \"ExportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 88,\t                \"name\": \"ImportSystemPowerDemand\",\t                \"description\": \"ImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 90,\t                \"name\": \"MaxImportSystemPowerDemand\",\t                \"description\": \"MaxImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 92,\t                \"name\": \"ExportSystemPowerDemand\",\t                \"description\": \"ExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 94,\t                \"name\": \"MaxExportSystemPowerDemand\",\t                \"description\": \"MaxExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 258,\t                \"name\": \"CurrentDemand\",\t                \"description\": \"CurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 264,\t                \"name\": \"MaxCurrentDemand\",\t                \"description\": \"MaxCurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 342,\t                \"name\": \"TotalActiveEnergy\",\t                \"description\": \"TotalActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 344,\t                \"name\": \"TotalReactiveEnergy\",\t                \"description\": \"TotalReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            }\t]",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 730,
                             "y": 860,
                             "wires": [
                                 [
                                     "833e22472f593063"
                                 ]
                             ]
                         },
                         {
                             "id": "8b8fb28987277d75",
                             "type": "function",
                             "z": "7e6af0015415146d",
                             "name": "Trigger IDs",
                             "func": "if (msg.payload) {\n    context.set(\"data\",msg.payload);\n    context.set(\"pointer\",0)\n}\nvar array = context.get(\"data\");\nvar pointer = context.get(\"pointer\");\npointer ++;\n\nif ( pointer <= array.length)\n{\n    msg.payload = array[pointer - 1];\n    context.set(\"pointer\",pointer);\n    return msg;\n}\n\n",
                             "outputs": 1,
                             "noerr": 0,
                             "initialize": "",
                             "finalize": "",
                             "libs": [],
                             "x": 550,
                             "y": 860,
                             "wires": [
                                 [
                                     "36239d1d9d361a2e"
                                 ]
                             ]
                         },
                         {
                             "id": "6521f44463e25c3c",
                             "type": "inject",
                             "z": "7e6af0015415146d",
                             "name": "Mehrere IDs",
                             "props": [
                                 {
                                     "p": "payload"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "",
                             "payload": "[10,11,12]",
                             "payloadType": "json",
                             "x": 230,
                             "y": 860,
                             "wires": [
                                 [
                                     "8b8fb28987277d75"
                                 ]
                             ]
                         },
                         {
                             "id": "557989f42ddad473",
                             "type": "change",
                             "z": "7e6af0015415146d",
                             "name": "Read Modbus",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "parts.count - parts.index - 1",
                                     "tot": "jsonata"
                                 },
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "{\t   \"fc\": 4,\t   \"unitid\": payload.unitId,\t   \"address\": payload._address,\t   \"quantity\": 2,\t   \"value\": 2\t}",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1080,
                             "y": 860,
                             "wires": [
                                 [
                                     "0f4f661c760aa72b"
                                 ]
                             ]
                         },
                         {
                             "id": "833e22472f593063",
                             "type": "split",
                             "z": "7e6af0015415146d",
                             "name": "split Array",
                             "splt": "\\n",
                             "spltType": "str",
                             "arraySplt": 1,
                             "arraySpltType": "len",
                             "stream": false,
                             "addname": "",
                             "x": 900,
                             "y": 860,
                             "wires": [
                                 [
                                     "557989f42ddad473"
                                 ]
                             ]
                         },
                         {
                             "id": "0f4f661c760aa72b",
                             "type": "function",
                             "z": "7e6af0015415146d",
                             "name": "Simulate Modbus getter",
                             "func": "var msg2 = {\n    topic : msg.topic,\n    queueLengthByUnitId : {\n        unitID: msg.payload.unitid,\n        queueLength: msg.parts.index\n    }\n}\n\n\nvar msg1 = {\n    payload : {\n        data : [0,0],\n        buffer: Buffer.alloc(3)\n    },\n    modbusRequest : {\n        address : 99,\n        quantity : 2\n    }\n}\n\n\nreturn [msg1,msg2];",
                             "outputs": 2,
                             "noerr": 0,
                             "initialize": "",
                             "finalize": "",
                             "libs": [],
                             "x": 1310,
                             "y": 860,
                             "wires": [
                                 [
                                     "5e5a202488c31ae0"
                                 ],
                                 [
                                     "3a68bda0a135f481"
                                 ]
                             ]
                         },
                         {
                             "id": "5e5a202488c31ae0",
                             "type": "change",
                             "z": "7e6af0015415146d",
                             "name": "WriteModbus",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "{\t    \"value\": payload,\t    \"fc\": 6,\t    \"unitid\" : 1, /* unitId */\t    \"address\": modbusRequest.address,\t    \"quantity\": modbusRequest.quantity\t}",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1530,
                             "y": 840,
                             "wires": [
                                 []
                             ]
                         },
                         {
                             "id": "112befc65439e8b7",
                             "type": "comment",
                             "z": "7e6af0015415146d",
                             "name": "Getriggert by Getter Node",
                             "info": "",
                             "x": 230,
                             "y": 800,
                             "wires": []
                         },
                         {
                             "id": "4a433464d06dc6d8",
                             "type": "change",
                             "z": "7e6af0015415146d",
                             "name": "Trigger next ID",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "trigger",
                                     "pt": "msg",
                                     "to": "true",
                                     "tot": "bool"
                                 },
                                 {
                                     "t": "delete",
                                     "p": "payload",
                                     "pt": "msg"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 780,
                             "y": 920,
                             "wires": [
                                 [
                                     "8b8fb28987277d75"
                                 ]
                             ]
                         },
                         {
                             "id": "315c37ef4aceb5d4",
                             "type": "debug",
                             "z": "7e6af0015415146d",
                             "name": "next ID wenn topic 0 (array zu ende)",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "true",
                             "targetType": "full",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 1330,
                             "y": 980,
                             "wires": []
                         },
                         {
                             "id": "3a68bda0a135f481",
                             "type": "switch",
                             "z": "7e6af0015415146d",
                             "name": "",
                             "property": "topic",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "eq",
                                     "v": "0",
                                     "vt": "num"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 1,
                             "x": 1050,
                             "y": 980,
                             "wires": [
                                 [
                                     "4a433464d06dc6d8",
                                     "315c37ef4aceb5d4"
                                 ]
                             ]
                         }
                      ]
                      

                      Hier konntest Du ja auch nach dem topic filtern: https://forum.iobroker.net/post/947167 - also sollte es jetzt auch gehen.

                      Wie gesagt Deine Lösung https://forum.iobroker.net/post/947177 funktioniert ja auch - aber mich würde halt stören, dass ich als Marker für das array Ende einen festen Namen im Array verwenden muss. ;)

                      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
                      • mickymM mickym

                        @malaus Ok wenn das topic das Einzige war was durchkommt (das msg.parts Objekt wird leider durch die GETTER Node nicht durchgereicht oder ist das enthalten?) , dann nehmen wir im Prinzip deine Lösung, setzen das topic aber nicht einen bestimmten Namen in dem array, sondern lassen einfach runterzählen. ;)

                        a933b1df-2e2c-4eac-98f6-3838033521a4-image.png

                        Das sollte dann aber auch tun. ;)

                        Ist also im Prinzip dein Flow mit dem switch als trigger nur das ich im topic nun die Anzahl der noch zu erwartenden Elemente durchreiche:

                        [
                           {
                               "id": "36239d1d9d361a2e",
                               "type": "change",
                               "z": "7e6af0015415146d",
                               "name": "create Array",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "[\t            {\t                \"unitId\": payload,\t                \"_address\": 0,\t                \"name\": \"Voltage\",\t                \"description\": \"Voltage\",\t                \"unit\": \"V\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 6,\t                \"name\": \"Current\",\t                \"description\": \"Current\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 12,\t                \"name\": \"ActivePower\",\t                \"description\": \"Active Power\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 18,\t                \"name\": \"ApparentPower\",\t                \"description\": \"ApparentPower\",\t                \"unit\": \"VA\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 24,\t                \"name\": \"ReactivePower\",\t                \"description\": \"ReactivePower\",\t                \"unit\": \"VAr\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 30,\t                \"name\": \"PowerFactor\",\t                \"description\": \"PowerFactor\",\t                \"unit\": \"\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 70,\t                \"name\": \"Frequency\",\t                \"description\": \"Frequency\",\t                \"unit\": \"Hz\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 72,\t                \"name\": \"ActiveEnergy\",\t                \"description\": \"Active Energy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"ExportActiveEnergy\",\t                \"description\": \"ExportActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 74,\t                \"name\": \"TotalSystemPowerDemand\",\t                \"description\": \"TotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"ImportReactiveEnergy\",\t                \"description\": \"ImportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 76,\t                \"name\": \"MaxTotalSystemPowerDemand\",\t                \"description\": \"MaxTotalSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 78,\t                \"name\": \"ExportReactiveEnergy\",\t                \"description\": \"ExportReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 88,\t                \"name\": \"ImportSystemPowerDemand\",\t                \"description\": \"ImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 90,\t                \"name\": \"MaxImportSystemPowerDemand\",\t                \"description\": \"MaxImportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 92,\t                \"name\": \"ExportSystemPowerDemand\",\t                \"description\": \"ExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 94,\t                \"name\": \"MaxExportSystemPowerDemand\",\t                \"description\": \"MaxExportSystemPowerDemand\",\t                \"unit\": \"W\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 258,\t                \"name\": \"CurrentDemand\",\t                \"description\": \"CurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 264,\t                \"name\": \"MaxCurrentDemand\",\t                \"description\": \"MaxCurrentDemand\",\t                \"unit\": \"A\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 342,\t                \"name\": \"TotalActiveEnergy\",\t                \"description\": \"TotalActiveEnergy\",\t                \"unit\": \"kWh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            },\t            {\t                \"unitId\": payload,\t                \"_address\": 344,\t                \"name\": \"TotalReactiveEnergy\",\t                \"description\": \"TotalReactiveEnergy\",\t                \"unit\": \"kvarh\",\t                \"type\": \"floatbe\",\t                \"len\": 2,\t                \"factor\": 1,\t                \"offset\": 0,\t                \"formula\": \"\",\t                \"role\": \"level\",\t                \"room\": \"\",\t                \"cw\": false,\t                \"isScale\": false\t            }\t]",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 730,
                               "y": 860,
                               "wires": [
                                   [
                                       "833e22472f593063"
                                   ]
                               ]
                           },
                           {
                               "id": "8b8fb28987277d75",
                               "type": "function",
                               "z": "7e6af0015415146d",
                               "name": "Trigger IDs",
                               "func": "if (msg.payload) {\n    context.set(\"data\",msg.payload);\n    context.set(\"pointer\",0)\n}\nvar array = context.get(\"data\");\nvar pointer = context.get(\"pointer\");\npointer ++;\n\nif ( pointer <= array.length)\n{\n    msg.payload = array[pointer - 1];\n    context.set(\"pointer\",pointer);\n    return msg;\n}\n\n",
                               "outputs": 1,
                               "noerr": 0,
                               "initialize": "",
                               "finalize": "",
                               "libs": [],
                               "x": 550,
                               "y": 860,
                               "wires": [
                                   [
                                       "36239d1d9d361a2e"
                                   ]
                               ]
                           },
                           {
                               "id": "6521f44463e25c3c",
                               "type": "inject",
                               "z": "7e6af0015415146d",
                               "name": "Mehrere IDs",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "[10,11,12]",
                               "payloadType": "json",
                               "x": 230,
                               "y": 860,
                               "wires": [
                                   [
                                       "8b8fb28987277d75"
                                   ]
                               ]
                           },
                           {
                               "id": "557989f42ddad473",
                               "type": "change",
                               "z": "7e6af0015415146d",
                               "name": "Read Modbus",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "topic",
                                       "pt": "msg",
                                       "to": "parts.count - parts.index - 1",
                                       "tot": "jsonata"
                                   },
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "{\t   \"fc\": 4,\t   \"unitid\": payload.unitId,\t   \"address\": payload._address,\t   \"quantity\": 2,\t   \"value\": 2\t}",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1080,
                               "y": 860,
                               "wires": [
                                   [
                                       "0f4f661c760aa72b"
                                   ]
                               ]
                           },
                           {
                               "id": "833e22472f593063",
                               "type": "split",
                               "z": "7e6af0015415146d",
                               "name": "split Array",
                               "splt": "\\n",
                               "spltType": "str",
                               "arraySplt": 1,
                               "arraySpltType": "len",
                               "stream": false,
                               "addname": "",
                               "x": 900,
                               "y": 860,
                               "wires": [
                                   [
                                       "557989f42ddad473"
                                   ]
                               ]
                           },
                           {
                               "id": "0f4f661c760aa72b",
                               "type": "function",
                               "z": "7e6af0015415146d",
                               "name": "Simulate Modbus getter",
                               "func": "var msg2 = {\n    topic : msg.topic,\n    queueLengthByUnitId : {\n        unitID: msg.payload.unitid,\n        queueLength: msg.parts.index\n    }\n}\n\n\nvar msg1 = {\n    payload : {\n        data : [0,0],\n        buffer: Buffer.alloc(3)\n    },\n    modbusRequest : {\n        address : 99,\n        quantity : 2\n    }\n}\n\n\nreturn [msg1,msg2];",
                               "outputs": 2,
                               "noerr": 0,
                               "initialize": "",
                               "finalize": "",
                               "libs": [],
                               "x": 1310,
                               "y": 860,
                               "wires": [
                                   [
                                       "5e5a202488c31ae0"
                                   ],
                                   [
                                       "3a68bda0a135f481"
                                   ]
                               ]
                           },
                           {
                               "id": "5e5a202488c31ae0",
                               "type": "change",
                               "z": "7e6af0015415146d",
                               "name": "WriteModbus",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "{\t    \"value\": payload,\t    \"fc\": 6,\t    \"unitid\" : 1, /* unitId */\t    \"address\": modbusRequest.address,\t    \"quantity\": modbusRequest.quantity\t}",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1530,
                               "y": 840,
                               "wires": [
                                   []
                               ]
                           },
                           {
                               "id": "112befc65439e8b7",
                               "type": "comment",
                               "z": "7e6af0015415146d",
                               "name": "Getriggert by Getter Node",
                               "info": "",
                               "x": 230,
                               "y": 800,
                               "wires": []
                           },
                           {
                               "id": "4a433464d06dc6d8",
                               "type": "change",
                               "z": "7e6af0015415146d",
                               "name": "Trigger next ID",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "trigger",
                                       "pt": "msg",
                                       "to": "true",
                                       "tot": "bool"
                                   },
                                   {
                                       "t": "delete",
                                       "p": "payload",
                                       "pt": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 780,
                               "y": 920,
                               "wires": [
                                   [
                                       "8b8fb28987277d75"
                                   ]
                               ]
                           },
                           {
                               "id": "315c37ef4aceb5d4",
                               "type": "debug",
                               "z": "7e6af0015415146d",
                               "name": "next ID wenn topic 0 (array zu ende)",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1330,
                               "y": 980,
                               "wires": []
                           },
                           {
                               "id": "3a68bda0a135f481",
                               "type": "switch",
                               "z": "7e6af0015415146d",
                               "name": "",
                               "property": "topic",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "eq",
                                       "v": "0",
                                       "vt": "num"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 1,
                               "x": 1050,
                               "y": 980,
                               "wires": [
                                   [
                                       "4a433464d06dc6d8",
                                       "315c37ef4aceb5d4"
                                   ]
                               ]
                           }
                        ]
                        

                        Hier konntest Du ja auch nach dem topic filtern: https://forum.iobroker.net/post/947167 - also sollte es jetzt auch gehen.

                        Wie gesagt Deine Lösung https://forum.iobroker.net/post/947177 funktioniert ja auch - aber mich würde halt stören, dass ich als Marker für das array Ende einen festen Namen im Array verwenden muss. ;)

                        M Offline
                        M Offline
                        Malaus
                        schrieb am zuletzt editiert von
                        #29

                        @mickym ich musste die zahlen um eins erhöhen, weil der die null nicht wollte aber jetzt funktioniert es.
                        Die letzte Zahl ist also die 1.

                        Ich habe den Trigger ID´s nochmal angepasst, damit am Ende es automatisch wieder von vorne anfängt.
                        Ansonsten funktioniert es jetzt.
                        Danke!

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • M Malaus

                          @mickym ich musste die zahlen um eins erhöhen, weil der die null nicht wollte aber jetzt funktioniert es.
                          Die letzte Zahl ist also die 1.

                          Ich habe den Trigger ID´s nochmal angepasst, damit am Ende es automatisch wieder von vorne anfängt.
                          Ansonsten funktioniert es jetzt.
                          Danke!

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

                          @malaus Ich habs zwar nicht verstanden, warum die 0 nicht funktioniert - aber wenn es jetzt funktioniert bin ich erst mal raus. Ich denke Du hast das Prinzip ja verstanden. Vielleicht setzt die GETTER Node ein eigenes topic wenn keines gesetzt war und interpretiert deshalb die 0 als falsch. Das kann natürlich sein und Du hast Dir ja dann geholfen. Wie gesagt, ich habe halt keine getter Nodes und tapse deshalb bissi im Dunkeln.

                          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
                          • mickymM mickym

                            @malaus Ich habs zwar nicht verstanden, warum die 0 nicht funktioniert - aber wenn es jetzt funktioniert bin ich erst mal raus. Ich denke Du hast das Prinzip ja verstanden. Vielleicht setzt die GETTER Node ein eigenes topic wenn keines gesetzt war und interpretiert deshalb die 0 als falsch. Das kann natürlich sein und Du hast Dir ja dann geholfen. Wie gesagt, ich habe halt keine getter Nodes und tapse deshalb bissi im Dunkeln.

                            M Offline
                            M Offline
                            Malaus
                            schrieb am zuletzt editiert von
                            #31

                            @mickym mir ist aufgefallen, wenn das ganze mal z.B. durch einen Neustart oä gestoppt wird, nicht von alleine weiter macht. Gibt es bei NodeRed sowas, dass bestimmte Sachen gestartet werden, wenn die Instanz startet?
                            Ebenfalls habe ich das Gefühl, dass das ganze durch Backitup unterbrochen wird und danach nicht wieder anläuft.

                            Oder ist sinnvoller eine Art Überwachung, wenn nach x Minuten keine neue Variable eingelesen wird, mache Neustart.

                            Hast du Erfahrung mit sowas? Bzw. hattest du so einen ähnlichen Fall schon mal?

                            mickymM 2 Antworten Letzte Antwort
                            0
                            • M Malaus

                              @mickym mir ist aufgefallen, wenn das ganze mal z.B. durch einen Neustart oä gestoppt wird, nicht von alleine weiter macht. Gibt es bei NodeRed sowas, dass bestimmte Sachen gestartet werden, wenn die Instanz startet?
                              Ebenfalls habe ich das Gefühl, dass das ganze durch Backitup unterbrochen wird und danach nicht wieder anläuft.

                              Oder ist sinnvoller eine Art Überwachung, wenn nach x Minuten keine neue Variable eingelesen wird, mache Neustart.

                              Hast du Erfahrung mit sowas? Bzw. hattest du so einen ähnlichen Fall schon mal?

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

                              @malaus
                              Also einfach Deine Inject Node aufmachen - mehrere IDs.

                              359ed340-5939-4547-a2aa-cfa9639d0ce7-image.png

                              Anhaken, dass einmal nach x Sekunden getriggert wird. Dieses X Sekunden beziehen sich auf den Start von Node-Red oder in dem Fall auf die Adapterinstanz.

                              Anasonsten kann natürlich alles andere auch triggern. Aber von irgendwas muss ein Flow ja angestossen werden, Hardware, Zeit,manuell oder eben einmal nach dem Start.

                              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
                              1
                              • M Malaus

                                @mickym mir ist aufgefallen, wenn das ganze mal z.B. durch einen Neustart oä gestoppt wird, nicht von alleine weiter macht. Gibt es bei NodeRed sowas, dass bestimmte Sachen gestartet werden, wenn die Instanz startet?
                                Ebenfalls habe ich das Gefühl, dass das ganze durch Backitup unterbrochen wird und danach nicht wieder anläuft.

                                Oder ist sinnvoller eine Art Überwachung, wenn nach x Minuten keine neue Variable eingelesen wird, mache Neustart.

                                Hast du Erfahrung mit sowas? Bzw. hattest du so einen ähnlichen Fall schon mal?

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

                                @malaus sagte in Node-Red Modbus mehrere Slave ID´s abfragen:

                                Ebenfalls habe ich das Gefühl, dass das ganze durch Backitup unterbrochen wird und danach nicht wieder anläuft.

                                Kann ich mir höchstens vorstellen wenn Dein Hardware durch das Backup überfordert wird und zuviel CPU verschlingt. Dann bleiben halt für die anderen Adapter nicht mehr soviel über. Ich bin ja auch grundsätzlich kein Freund - von solchen Pollmechanismen - also zyklisch die Hardware abzufragen - aber das ist eine andere Geschichte. Ich finde es besser immer die Hardware triggern zu lassen.

                                Das sind aber prinzipielle Fragen - wie man solche Flows aufbaut. Ich hätte wesentlich eher die modbus reads genommen und die Hardware triggern lassen - also zyklisch abzufragen. In der Beschreibung zu der Node sieht man auch http trigger - die also auch nicht zyklisch, sondern von der Hardware initiiert das Auslesen der Getter-Nodes initiiieren.

                                Lange Rede kurzer Sinn - Du musst halt schauen, ob Deine Hardware durch das Backup nicht in die Knie gezwingen wird.

                                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
                                1
                                • mickymM mickym

                                  @malaus sagte in Node-Red Modbus mehrere Slave ID´s abfragen:

                                  Ebenfalls habe ich das Gefühl, dass das ganze durch Backitup unterbrochen wird und danach nicht wieder anläuft.

                                  Kann ich mir höchstens vorstellen wenn Dein Hardware durch das Backup überfordert wird und zuviel CPU verschlingt. Dann bleiben halt für die anderen Adapter nicht mehr soviel über. Ich bin ja auch grundsätzlich kein Freund - von solchen Pollmechanismen - also zyklisch die Hardware abzufragen - aber das ist eine andere Geschichte. Ich finde es besser immer die Hardware triggern zu lassen.

                                  Das sind aber prinzipielle Fragen - wie man solche Flows aufbaut. Ich hätte wesentlich eher die modbus reads genommen und die Hardware triggern lassen - also zyklisch abzufragen. In der Beschreibung zu der Node sieht man auch http trigger - die also auch nicht zyklisch, sondern von der Hardware initiiert das Auslesen der Getter-Nodes initiiieren.

                                  Lange Rede kurzer Sinn - Du musst halt schauen, ob Deine Hardware durch das Backup nicht in die Knie gezwingen wird.

                                  M Offline
                                  M Offline
                                  Malaus
                                  schrieb am zuletzt editiert von
                                  #34

                                  @mickym danke für die schnelle Rückmeldung.

                                  Ich habe das mal so wie oben umgesetzt.
                                  Zusätzlich habe ich das hier mal von 128 auf 512 erhöht:

                                  b3984407-4294-448d-bfa0-7f4c092ceda7-image.png

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • M Malaus

                                    @mickym danke für die schnelle Rückmeldung.

                                    Ich habe das mal so wie oben umgesetzt.
                                    Zusätzlich habe ich das hier mal von 128 auf 512 erhöht:

                                    b3984407-4294-448d-bfa0-7f4c092ceda7-image.png

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

                                    @malaus sagte in Node-Red Modbus mehrere Slave ID´s abfragen:

                                    @mickym danke für die schnelle Rückmeldung.

                                    Ich habe das mal so wie oben umgesetzt.
                                    Zusätzlich habe ich das hier mal von 128 auf 512 erhöht:

                                    b3984407-4294-448d-bfa0-7f4c092ceda7-image.png

                                    Ja das macht einiges aus - wenn man NodeRed zuwenig Speicher zur Verfügung stellt. Ich hab 2 MB genommen - das heißt ja nicht, dass die sofort aufgebraucht werden.

                                    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
                                    • M Malaus

                                      @garf sagte in Node-Red Modbus mehrere Slave ID´s abfragen:

                                      Aber er liest doch Daten aus.
                                      58e5ff52-2a53-41c2-96f3-a91df6d849ce-grafik.png

                                      Das war aus einem Versuch mit nur einer Geräten ID.

                                      Der Flow kommt mir recht seltsam vor. Den drei SDM hast Du doch unterschiedliche Adressen vergeben? Ich würde sie nacheinander mal einzeln und auch nur einen DP abfragen. Dazu würde ich nicht das Flex Getter verwenden. Ich würde in kleinen Schritten vorgehen. Um wieder Dezimalzahlen zu bekommen gibt es den BufferParser.

                                      Wieso nicht das Flex Getter benutzen?

                                      Ich hab das ganze mal so ausprobiert:
                                      e81570fb-bc99-4bba-9201-2fe6994c9749-image.png
                                      938515e0-669a-42e5-a073-802f1ee016b4-image.png

                                      Hier schicke ich eine Anfrage an das Gerät 10. Das funktioniert. Baue ich nun in die Funktion eine weitere Anfrage mit einer anderen Geräte ID ein, erhalte ich eine Fehlermeldung.

                                      Baue ich hingegen eine zweite Funktion für das Gerät 11 und drücke nacheinander, funktioniert es.
                                      1ff05d7a-fd2a-4c70-95c7-f005c7d5510c-image.png

                                      Wenn ich jetzt einen weitern Schritt gehe und das ganze so baue, geht es auch:
                                      6b5736df-eafb-4e84-9fa8-42a7665e44cc-image.png
                                      Obwohl ich hier eine Dauerschleife eingebaut habe...

                                      Bedeutet für mich, dass ich das so bauen muss, das erst die Anfragen an eine andere ID geschickt werden darf, wenn gerade keine Kommunikation stattfindet. Vermutlich ist das dann so im Modbus Adapter eingebaut.
                                      Jetzt stellt sich mir die Frage, wie bekomme ich mit, dass der Lauf mit der Abfrage einer ID beendet ist?
                                      Ich habe das ganze ja als JSON gebaut und frage durch ein Split nacheinander alles ab.
                                      e0227220-cf78-418e-a9ab-e7ae8c1278ff-image.png
                                      Alles in eine JSON packen und nacheinander abfragen lassen, geht nicht. Vermutlich wird ein Delay zw. den ID´s benötigt.

                                      Vielleicht mit einem Zähler, der die Nachrichten am Ende liest und sobald die Menge der Nachrichten erreicht ist, aktiviert es die nächste ID. - funktioniert nicht wie gedacht.

                                      Meine Lösung:
                                      bf2f9e42-31d7-4f27-9756-5ac32e0ab036-image.png
                                      Ich frage bei "JSON ID11" und "JSON ID12" ab, welches topic zuletzt abgefragt worden ist.
                                      Ist es das letzte, kann gestartet werden.
                                      286c6626-6036-4149-97ef-1c3e75a71431-image.png
                                      So kann ich nun alle drei Geräte ID´s abfragen.

                                      @mickym hast du vielleicht eine Idee, wie man das in NodeRed umsetzen könnte?
                                      vielleicht gibts hier eine elegantere Lösung?

                                      G Offline
                                      G Offline
                                      Garf
                                      schrieb am zuletzt editiert von
                                      #36

                                      @malaus sagte in Node-Red Modbus mehrere Slave ID´s abfragen:

                                      Wieso nicht das Flex Getter benutzen?

                                      Mein Raspi4 kommuniziert über die Modbusschnittstelle mit einem SAIA Regler. Also nur eine Adresse, aber mehrere Modbusregister. Anfangs hatte ich mehrere function Nodes im Einsatz. Aber es gibt hier User die dieses Node geradezu ablehnen. Ich komme aber nicht mehr drauf wer daß nur sein könnte.:blush:
                                      Leider hat er auch noch Recht, es geht auch anders.

                                      0be670a1-bb02-4dbd-b3c4-a6106f931d98-grafik.png

                                      Und natürlich kannst Du auch das FlexGetter verwenden. Ich wollte nur die Gedanken mal in eine andere Richtung lenken.

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


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      668

                                      Online

                                      32.5k

                                      Benutzer

                                      81.8k

                                      Themen

                                      1.3m

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

                                      • Du hast noch kein Konto? Registrieren

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