Hello,
last week I finished my SMA Modbus Query.
Today a friend asked me if we can query his Solaredge Inverter.
It´s the same way with Modbus Getter + Buffer Parser (as @Steve-Mcl showed me):
[
{
"id": "2127eb3c.6814d4",
"type": "tab",
"label": "Modbus",
"disabled": false,
"info": ""
},
{
"id": "19146a4b.e60106",
"type": "inject",
"z": "2127eb3c.6814d4",
"name": "",
"topic": "",
"payload": "",
"payloadType": "date",
"repeat": "5",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 110,
"y": 40,
"wires": [
[
"4b847dc3.be22c4"
]
]
},
{
"id": "4b847dc3.be22c4",
"type": "modbus-getter",
"z": "2127eb3c.6814d4",
"name": "40072 - 40084 (-1)",
"showStatusActivities": false,
"showErrors": false,
"logIOActivities": false,
"unitid": "1",
"dataType": "HoldingRegister",
"adr": "40071",
"quantity": "14",
"server": "c92ba865.93cb78",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"x": 290,
"y": 40,
"wires": [
[
"7a31131f.01636c"
],
[]
]
},
{
"id": "7a31131f.01636c",
"type": "buffer-parser",
"z": "2127eb3c.6814d4",
"name": "",
"data": "responseBuffer.buffer",
"dataType": "msg",
"specification": "spec",
"specificationType": "ui",
"items": [
{
"type": "uint16be",
"name": "Iges",
"offset": 0,
"length": 1,
"offsetbit": 0,
"scale": 0.01,
"mask": ""
},
{
"type": "uint16be",
"name": "IL1",
"offset": 2,
"length": 1,
"offsetbit": 0,
"scale": 0.01,
"mask": ""
},
{
"type": "uint16be",
"name": "IL2",
"offset": 4,
"length": 1,
"offsetbit": 0,
"scale": 0.01,
"mask": ""
},
{
"type": "uint16be",
"name": "IL3",
"offset": 6,
"length": 1,
"offsetbit": 0,
"scale": 0.01,
"mask": ""
},
{
"type": "int16be",
"name": "Is",
"offset": 8,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "uint16be",
"name": "UL1-L2",
"offset": 10,
"length": 1,
"offsetbit": 0,
"scale": 0.1,
"mask": ""
},
{
"type": "uint16be",
"name": "UL2-L3",
"offset": 12,
"length": 1,
"offsetbit": 0,
"scale": 0.1,
"mask": ""
},
{
"type": "uint16be",
"name": "UL3-L1",
"offset": 14,
"length": 1,
"offsetbit": 0,
"scale": 0.1,
"mask": ""
},
{
"type": "uint16be",
"name": "UL1",
"offset": 16,
"length": 1,
"offsetbit": 0,
"scale": 0.1,
"mask": ""
},
{
"type": "uint16be",
"name": "UL2",
"offset": 18,
"length": 1,
"offsetbit": 0,
"scale": 0.1,
"mask": ""
},
{
"type": "uint16be",
"name": "UL3",
"offset": 20,
"length": 1,
"offsetbit": 0,
"scale": 0.1,
"mask": ""
},
{
"type": "int16be",
"name": "Us",
"offset": 22,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "PAC",
"offset": 24,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "PACs",
"offset": 26,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
}
],
"swap1": "",
"swap2": "",
"swap3": "",
"swap1Type": "swap",
"swap2Type": "swap",
"swap3Type": "swap",
"msgProperty": "payload",
"msgPropertyType": "str",
"resultType": "keyvalue",
"resultTypeType": "output",
"multipleResult": false,
"setTopic": true,
"x": 490,
"y": 40,
"wires": [
[
"f3d16609.f976a8",
"1b0d5f97.9f644",
"1e7a0541.83c83b",
"9127c82a.f2ab38",
"2f0cb353.8381ec",
"d77664d1.6c5658",
"a7ecd9a9.463568",
"66e6ae2d.916fb",
"ad1404c5.aaf398",
"fb87d1d2.8ea21",
"81483328.8b80d"
]
]
},
{
"id": "ad1404c5.aaf398",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "fe019157.1eea2",
"order": 5,
"width": 0,
"height": 0,
"name": "Leistung AC",
"label": "Leistung AC",
"format": "{{msg.payload.PAC}} W",
"layout": "row-spread",
"x": 890,
"y": 40,
"wires": []
},
{
"id": "8baa2487.7d8968",
"type": "modbus-getter",
"z": "2127eb3c.6814d4",
"name": "40206 - 40209",
"showStatusActivities": false,
"showErrors": false,
"logIOActivities": false,
"unitid": "1",
"dataType": "HoldingRegister",
"adr": "40206",
"quantity": "4",
"server": "c92ba865.93cb78",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"x": 280,
"y": 640,
"wires": [
[
"e82f5f3.bd01aa"
],
[]
]
},
{
"id": "e82f5f3.bd01aa",
"type": "buffer-parser",
"z": "2127eb3c.6814d4",
"name": "",
"data": "responseBuffer.buffer",
"dataType": "msg",
"specification": "spec",
"specificationType": "ui",
"items": [
{
"type": "int16be",
"name": "Preal",
"offset": 0,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "P1",
"offset": 2,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "P2",
"offset": 4,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "P3",
"offset": 6,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
}
],
"swap1": "",
"swap2": "",
"swap3": "",
"swap1Type": "swap",
"swap2Type": "swap",
"swap3Type": "swap",
"msgProperty": "payload",
"msgPropertyType": "str",
"resultType": "keyvalue",
"resultTypeType": "output",
"multipleResult": false,
"setTopic": true,
"x": 490,
"y": 640,
"wires": [
[
"24c741da.df716e",
"5c52c195.e8155",
"dc730127.c3f32",
"f1f782e3.ba0d6"
]
]
},
{
"id": "24c741da.df716e",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "fe019157.1eea2",
"order": 1,
"width": 0,
"height": 0,
"name": "Leistung Hausanschluss",
"label": "Leistung Hausanschluss",
"format": "{{msg.payload.Preal}} W",
"layout": "row-spread",
"x": 930,
"y": 640,
"wires": []
},
{
"id": "f3d16609.f976a8",
"type": "modbus-getter",
"z": "2127eb3c.6814d4",
"name": "40097 40102 (-1)",
"showStatusActivities": false,
"showErrors": false,
"logIOActivities": false,
"unitid": "1",
"dataType": "HoldingRegister",
"adr": "40096",
"quantity": "6",
"server": "c92ba865.93cb78",
"useIOFile": false,
"ioFile": "",
"useIOForPayload": false,
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"x": 290,
"y": 380,
"wires": [
[
"db80a042.41df7"
],
[]
]
},
{
"id": "db80a042.41df7",
"type": "buffer-parser",
"z": "2127eb3c.6814d4",
"name": "responseBuffer.buffer",
"data": "payload",
"dataType": "msg",
"specification": "spec",
"specificationType": "ui",
"items": [
{
"type": "uint16be",
"name": "IDC",
"offset": 0,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "IDCs",
"offset": 2,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "uint16be",
"name": "UDC",
"offset": 4,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "UDCs",
"offset": 6,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "PDC",
"offset": 8,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
},
{
"type": "int16be",
"name": "PDCs",
"offset": 10,
"length": 1,
"offsetbit": 0,
"scale": 1,
"mask": ""
}
],
"swap1": "",
"swap2": "",
"swap3": "",
"swap1Type": "swap",
"swap2Type": "swap",
"swap3Type": "swap",
"msgProperty": "payload",
"msgPropertyType": "str",
"resultType": "keyvalue",
"resultTypeType": "output",
"multipleResult": false,
"setTopic": true,
"x": 520,
"y": 380,
"wires": [
[
"8baa2487.7d8968",
"29a8657d.44b83a",
"c9bb3ae3.00b3c8",
"fc90172e.45ee38",
"668e64a7.e4191c",
"af5050b8.104d7",
"12cef69a.0cfee9"
]
]
},
{
"id": "29a8657d.44b83a",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "f7b812c8.ec053",
"order": 1,
"width": 0,
"height": 0,
"name": "Leistung DC",
"label": "Leistung DC",
"format": "{{msg.payload.PDC}} W",
"layout": "row-spread",
"x": 890,
"y": 380,
"wires": []
},
{
"id": "5c52c195.e8155",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "fe019157.1eea2",
"order": 2,
"width": 0,
"height": 0,
"name": "Leistung L1",
"label": "Leistung L1",
"format": "{{msg.payload.P1}} W",
"layout": "row-spread",
"x": 890,
"y": 680,
"wires": []
},
{
"id": "dc730127.c3f32",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "fe019157.1eea2",
"order": 3,
"width": 0,
"height": 0,
"name": "Leistung L2",
"label": "Leistung L2",
"format": "{{msg.payload.P2}} W",
"layout": "row-spread",
"x": 890,
"y": 720,
"wires": []
},
{
"id": "f1f782e3.ba0d6",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "fe019157.1eea2",
"order": 4,
"width": 0,
"height": 0,
"name": "Leistung L3",
"label": "Leistung L3",
"format": "{{msg.payload.P3}} W",
"layout": "row-spread",
"x": 890,
"y": 760,
"wires": []
},
{
"id": "b5f04be0.2747a8",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 7,
"width": 0,
"height": 0,
"name": "Gesamt Strom",
"label": "Gesamt Strom",
"format": "{{msg.payload}} A",
"layout": "row-spread",
"x": 900,
"y": 80,
"wires": []
},
{
"id": "4d083e9d.662f",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 4,
"width": 0,
"height": 0,
"name": "Strom L1",
"label": "Strom L1",
"format": "{{msg.payload}} A",
"layout": "row-spread",
"x": 880,
"y": 120,
"wires": []
},
{
"id": "2db805ab.5260fa",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 5,
"width": 0,
"height": 0,
"name": "Strom L2",
"label": "Strom L2",
"format": "{{msg.payload}} A",
"layout": "row-spread",
"x": 880,
"y": 160,
"wires": []
},
{
"id": "19cd1999.1ad9a6",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 6,
"width": 0,
"height": 0,
"name": "Strom L3",
"label": "Strom L3",
"format": "{{msg.payload}} A",
"layout": "row-spread",
"x": 880,
"y": 200,
"wires": []
},
{
"id": "1b0d5f97.9f644",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.Iges)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 80,
"wires": [
[
"b5f04be0.2747a8"
]
]
},
{
"id": "9127c82a.f2ab38",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.IL2)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 160,
"wires": [
[
"2db805ab.5260fa"
]
]
},
{
"id": "2f0cb353.8381ec",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.IL3)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 200,
"wires": [
[
"19cd1999.1ad9a6"
]
]
},
{
"id": "1e7a0541.83c83b",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.IL1)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 120,
"wires": [
[
"4d083e9d.662f"
]
]
},
{
"id": "bdd904c1.172508",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 1,
"width": 0,
"height": 0,
"name": "Spannung L1",
"label": "<font color=brown> Spannung L1",
"format": "{{msg.payload}} V",
"layout": "row-spread",
"x": 900,
"y": 240,
"wires": []
},
{
"id": "a2343877.49dc28",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 3,
"width": 0,
"height": 0,
"name": "Spannung L3",
"label": "<font color=grey> Spannung L3",
"format": "{{msg.payload}} V",
"layout": "row-spread",
"x": 900,
"y": 320,
"wires": []
},
{
"id": "b5da9954.b979d8",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "c4de61b1.27c67",
"order": 2,
"width": 0,
"height": 0,
"name": "Spannung L2",
"label": "Spannung L2",
"format": "{{msg.payload}} V",
"layout": "row-spread",
"x": 900,
"y": 280,
"wires": []
},
{
"id": "d77664d1.6c5658",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.UL1)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 240,
"wires": [
[
"bdd904c1.172508"
]
]
},
{
"id": "a7ecd9a9.463568",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.UL2)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 280,
"wires": [
[
"b5da9954.b979d8"
]
]
},
{
"id": "66e6ae2d.916fb",
"type": "function",
"z": "2127eb3c.6814d4",
"name": "runden",
"func": "var temp = (msg.payload.UL3)\nmsg.payload = temp;\nmsg.payload = msg.payload.toFixed(2).replace('.', ',');\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 700,
"y": 320,
"wires": [
[
"a2343877.49dc28"
]
]
},
{
"id": "fb87d1d2.8ea21",
"type": "debug",
"z": "2127eb3c.6814d4",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 310,
"y": 120,
"wires": []
},
{
"id": "c9bb3ae3.00b3c8",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "f7b812c8.ec053",
"order": 3,
"width": 0,
"height": 0,
"name": "Spannung DC",
"label": "Spannung DC",
"format": "{{msg.payload.UDC}}",
"layout": "row-spread",
"x": 900,
"y": 460,
"wires": []
},
{
"id": "fc90172e.45ee38",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "f7b812c8.ec053",
"order": 4,
"width": 0,
"height": 0,
"name": "Spannung DC Faktor",
"label": "Spannung DC Faktor",
"format": "{{msg.payload.UDCs}}",
"layout": "row-spread",
"x": 920,
"y": 500,
"wires": []
},
{
"id": "668e64a7.e4191c",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "f7b812c8.ec053",
"order": 5,
"width": 0,
"height": 0,
"name": "Strom DC",
"label": "Strom DC",
"format": "{{msg.payload.IDC}} A",
"layout": "row-spread",
"x": 880,
"y": 540,
"wires": []
},
{
"id": "12cef69a.0cfee9",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "f7b812c8.ec053",
"order": 6,
"width": 0,
"height": 0,
"name": "Strom DC Faktor",
"label": "Strom DC Faktor",
"format": "{{msg.payload.IDCs}}",
"layout": "row-spread",
"x": 910,
"y": 580,
"wires": []
},
{
"id": "af5050b8.104d7",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "f7b812c8.ec053",
"order": 2,
"width": 0,
"height": 0,
"name": "Leistung DC Faktor",
"label": "Leistung DC Faktor",
"format": "{{msg.payload.PDCs}}",
"layout": "row-spread",
"x": 910,
"y": 420,
"wires": []
},
{
"id": "81483328.8b80d",
"type": "ui_text",
"z": "2127eb3c.6814d4",
"group": "fe019157.1eea2",
"order": 6,
"width": 0,
"height": 0,
"name": "Leistung AC Faktor",
"label": "Leistung AC Faktor",
"format": "{{msg.payload.PACs}}",
"layout": "row-spread",
"x": 710,
"y": 20,
"wires": []
},
{
"id": "c92ba865.93cb78",
"type": "modbus-client",
"z": "",
"name": "SolarEdge",
"clienttype": "tcp",
"bufferCommands": true,
"stateLogEnabled": false,
"queueLogEnabled": false,
"tcpHost": "192.168.1.187",
"tcpPort": "502",
"tcpType": "TPC-RTU-BUFFERED",
"serialPort": "/dev/ttyUSB",
"serialType": "RTU-BUFFERD",
"serialBaudrate": "9600",
"serialDatabits": "8",
"serialStopbits": "1",
"serialParity": "none",
"serialConnectionDelay": "100",
"unit_id": "1",
"commandDelay": "200",
"clientTimeout": "1000",
"reconnectOnTimeout": true,
"reconnectTimeout": "2000",
"parallelUnitIdsAllowed": true
},
{
"id": "fe019157.1eea2",
"type": "ui_group",
"z": "",
"name": "Sensoren (1)",
"tab": "e0ab68c7.17d7f8",
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "f7b812c8.ec053",
"type": "ui_group",
"z": "",
"name": "DC Werte",
"tab": "e0ab68c7.17d7f8",
"order": 3,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "c4de61b1.27c67",
"type": "ui_group",
"z": "",
"name": "Sensoren (2)",
"tab": "e0ab68c7.17d7f8",
"order": 2,
"disp": true,
"width": "6",
"collapse": false
},
{
"id": "e0ab68c7.17d7f8",
"type": "ui_tab",
"z": "",
"name": "Solaredge",
"icon": "dashboard",
"order": 1,
"disabled": false,
"hidden": false
}
]
but there is one hitch, the scale factor:
the point changes dynamically
Now is the question: How can I use the value in a function to correct the actual value dynamically.
Greetings