Making solar visible

Ik heb in het verleden een “dbus CerboGX driver” in python geschreven voor een vriend die de HomeWizard P1 meter uitleest mbv de api van de HW P1 meter.


Werkt nog steeds :slight_smile:

Dus de http API die je op de HW P1 meter aan moet zetten. Deze locale API functionaliteit zit volgens mij op alle HomeWizard apparaten
Zal eens kijken of ik deze universeel kan maken voor alle HW devices. Beloof niets,

Hier vind je overigens nog een driver die je zou kunnen gebruiken

Of deze

Heb inmiddels goed contact met off-grid centrum in Wierden, die gaan mij helpen.

Hallo, heb hetzelfde probleem. 3 solar installaties in Homewizard en wil overschakelen op DESS.

Erik, dat is eigenlijk heel simpel te implementeren. Gewoon één of meerdere scripts installeren (google mr-manuel github) en wat flow programmering in NodeRED. Hier is een voorbeeld:

De HomeWizard P1 meter is te traag als grid meter. Die kan je rustig vergeten.

[
{
“id”: “aa81a571a3f55f3c”,
“type”: “tab”,
“label”: “Flow Growatt PV”,
“disabled”: false,
“info”: “”,
“env”:
},
{
“id”: “bb2304f6de943703”,
“type”: “group”,
“z”: “aa81a571a3f55f3c”,
“name”: “Growatt PV”,
“style”: {
“fill”: “#ffefbf”,
“label”: true,
“color”: “#001f60”,
“stroke”: “#ff7f7f
},
“nodes”: [
“93368161e0fb7274”,
“222677ee17a30d47”,
“c250859c59441a06”,
“489d8e56109442bc”,
“5b2336384d494151”,
“190cf511cbd3fa05”,
“4792c807776cd9f1”,
“a1a68563a8c8cc03”,
“4cc9057627ef0285”,
“fbed4cf9d457b5de”,
“5e6cf209fd8f0353”,
“b582af8615cc8aa3”,
“af751199364da26a”,
“b072f0594b6af30f”,
“1518fcb3555fda50”,
“19205d67d011e7e9”,
“1721b4b18403a510”,
“e43fb621e446491b”,
“0104a3ee4f5d902b”,
“4ebff8c4347f9550”,
“d7484d3ba92bbd5d”,
“750a2e83a5a825dc”,
“70dd864f7605cbe4”,
“f9d87d465b222e21”
],
“x”: 84,
“y”: 119,
“w”: 1022,
“h”: 442
},
{
“id”: “93368161e0fb7274”,
“type”: “http request”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “kWh Meter Roof”,
“method”: “GET”,
“ret”: “obj”,
“paytoqs”: “ignore”,
“url”: “http://192.168.1.7/api/v1/data”,
“tls”: “”,
“persist”: false,
“proxy”: “”,
“insecureHTTPParser”: false,
“authType”: “”,
“senderr”: false,
“headers”: ,
“x”: 320,
“y”: 220,
“wires”: [
[
“222677ee17a30d47”,
“fbed4cf9d457b5de”,
“5e6cf209fd8f0353”,
“b072f0594b6af30f”
]
]
},
{
“id”: “222677ee17a30d47”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Active Power W”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{ payload.active_power_w }}”,
“output”: “str”,
“x”: 600,
“y”: 240,
“wires”: [
[
“1721b4b18403a510”
]
]
},
{
“id”: “c250859c59441a06”,
“type”: “mqtt out”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “PV Roof”,
“topic”: “homewizard/kwh/roof”,
“qos”: “”,
“retain”: “”,
“respTopic”: “”,
“contentType”: “”,
“userProps”: “”,
“correl”: “”,
“expiry”: “”,
“broker”: “6459ecfea2a6ef49”,
“x”: 800,
“y”: 340,
“wires”:
},
{
“id”: “489d8e56109442bc”,
“type”: “http request”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “kWh Meter Garden Roof”,
“method”: “GET”,
“ret”: “obj”,
“paytoqs”: “ignore”,
“url”: “http://192.168.1.70/api/v1/data”,
“tls”: “”,
“persist”: false,
“proxy”: “”,
“insecureHTTPParser”: false,
“authType”: “”,
“senderr”: false,
“headers”: ,
“x”: 350,
“y”: 460,
“wires”: [
[
“5b2336384d494151”,
“190cf511cbd3fa05”,
“a1a68563a8c8cc03”,
“1518fcb3555fda50”
]
]
},
{
“id”: “5b2336384d494151”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Active Power W”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{ payload.active_power_w }}”,
“output”: “str”,
“x”: 600,
“y”: 480,
“wires”: [
[
“0104a3ee4f5d902b”
]
]
},
{
“id”: “190cf511cbd3fa05”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Active Voltage V”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{payload.active_voltage_v}}”,
“output”: “str”,
“x”: 600,
“y”: 400,
“wires”: [
[
“4792c807776cd9f1”
]
]
},
{
“id”: “4792c807776cd9f1”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Voltage”,
“rules”: [
{
“t”: “set”,
“p”: “Garden.Voltage”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 400,
“wires”: [

]
},
{
“id”: “a1a68563a8c8cc03”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Total Export kWh”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{payload.total_power_export_kwh}}”,
“output”: “str”,
“x”: 610,
“y”: 520,
“wires”: [
[
“4cc9057627ef0285”
]
]
},
{
“id”: “4cc9057627ef0285”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Export”,
“rules”: [
{
“t”: “set”,
“p”: “Garden.Export”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 520,
“wires”: [

]
},
{
“id”: “fbed4cf9d457b5de”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Total Export kWh”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{payload.total_power_export_kwh}}”,
“output”: “str”,
“x”: 610,
“y”: 280,
“wires”: [
[
“b582af8615cc8aa3”
]
]
},
{
“id”: “5e6cf209fd8f0353”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Active Voltage V”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{payload.active_voltage_v}}”,
“output”: “str”,
“x”: 600,
“y”: 160,
“wires”: [
[
“af751199364da26a”
]
]
},
{
“id”: “b582af8615cc8aa3”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Export”,
“rules”: [
{
“t”: “set”,
“p”: “Roof.Export”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 280,
“wires”: [

]
},
{
“id”: “af751199364da26a”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Voltage”,
“rules”: [
{
“t”: “set”,
“p”: “Roof.Voltage”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 160,
“wires”: [

]
},
{
“id”: “b072f0594b6af30f”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Active Current A”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{payload.active_current_a}}”,
“output”: “str”,
“x”: 600,
“y”: 200,
“wires”: [
[
“19205d67d011e7e9”
]
]
},
{
“id”: “1518fcb3555fda50”,
“type”: “template”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Active Current A”,
“field”: “payload”,
“fieldType”: “msg”,
“format”: “handlebars”,
“syntax”: “mustache”,
“template”: “{{payload.active_current_a}}”,
“output”: “str”,
“x”: 600,
“y”: 440,
“wires”: [
[
“e43fb621e446491b”
]
]
},
{
“id”: “19205d67d011e7e9”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Current”,
“rules”: [
{
“t”: “set”,
“p”: “Roof.Current”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 200,
“wires”: [

]
},
{
“id”: “1721b4b18403a510”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Wattage”,
“rules”: [
{
“t”: “set”,
“p”: “Roof.Watt”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 240,
“wires”: [
[
“750a2e83a5a825dc”
]
]
},
{
“id”: “e43fb621e446491b”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Current”,
“rules”: [
{
“t”: “set”,
“p”: “Garden.Current”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 440,
“wires”: [

]
},
{
“id”: “0104a3ee4f5d902b”,
“type”: “change”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “set flow.Wattage”,
“rules”: [
{
“t”: “set”,
“p”: “Garden.Watt”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 820,
“y”: 480,
“wires”: [
[
“70dd864f7605cbe4”
]
]
},
{
“id”: “4ebff8c4347f9550”,
“type”: “function”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “Set PV Data”,
“func”: “let roof_watts = Number(flow.get("Roof.Watt") /-1);\nlet garden_watts = Number(flow.get("Garden.Watt") /-1);\n\nlet roof_energy = Number(flow.get("Roof.Export"));\nlet garden_energy = Number(flow.get("Garden.Export"));\nlet total_energy = (roof_energy + garden_energy);\n\nlet roof_voltage = Number(flow.get("Roof.Voltage"));\nlet garden_voltage = Number(flow.get("Garden.Voltage"));\n\n// A negative value here means that the inverter is not\n// producing energy, and using some energy. Which usually \n// happens at the end of the day, with clouds or snow \n// covered panels (just some examples). \nif (roof_watts <= 0) {\n roof_watts = 0;\n}\n\nif (garden_watts <= 0) {\n garden_watts = 0;\n}\n\ntotal_watts = Math.trunc(roof_watts + garden_watts);\n\nvar message = {\n pv: {\n power: total_watts,\n voltage: roof_voltage,\n energy_forward: total_energy,\n L1: {\n power: total_watts,\n voltage: roof_voltage,\n energy_forward: total_energy,\n }\n }\n};\n\nnode.status({fill:"blue",shape:"ring",text:Number(msg.payload)*3 + "W"}); \n\nreturn { payload: message };”,
“outputs”: 1,
“timeout”: 0,
“noerr”: 0,
“initialize”: “// Code added here will be run once\n// whenever the node is started.\nvar roof_watts = 0;\nvar garden_watts = 0;”,
“finalize”: “”,
“libs”: ,
“x”: 590,
“y”: 340,
“wires”: [
[
“c250859c59441a06”,
“d7484d3ba92bbd5d”
]
]
},
{
“id”: “d7484d3ba92bbd5d”,
“type”: “debug”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: "debug ",
“active”: false,
“tosidebar”: true,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 990,
“y”: 340,
“wires”:
},
{
“id”: “750a2e83a5a825dc”,
“type”: “debug”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “debug 28”,
“active”: true,
“tosidebar”: false,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 1000,
“y”: 240,
“wires”:
},
{
“id”: “70dd864f7605cbe4”,
“type”: “debug”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “debug 29”,
“active”: true,
“tosidebar”: false,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 1000,
“y”: 480,
“wires”:
},
{
“id”: “8bb7d06216e84d61”,
“type”: “inject”,
“z”: “aa81a571a3f55f3c”,
“name”: “PV kWh Meter Read Interval”,
“props”: [
{
“p”: “payload”
},
{
“p”: “topic”,
“vt”: “str”
}
],
“repeat”: “1”,
“crontab”: “”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “”,
“payloadType”: “date”,
“x”: 250,
“y”: 60,
“wires”: [
[
“50e9986290b46534”
]
]
},
{
“id”: “50e9986290b46534”,
“type”: “link out”,
“z”: “aa81a571a3f55f3c”,
“name”: “link out 1”,
“mode”: “link”,
“links”: [
“cb0ae8ced8fb02bd”,
“3b06eb3e67c91be0”,
“f9d87d465b222e21”
],
“x”: 435,
“y”: 60,
“wires”:
},
{
“id”: “f9d87d465b222e21”,
“type”: “link in”,
“z”: “aa81a571a3f55f3c”,
“g”: “bb2304f6de943703”,
“name”: “link in 1”,
“links”: [
“50e9986290b46534”
],
“x”: 125,
“y”: 340,
“wires”: [
[
“93368161e0fb7274”,
“489d8e56109442bc”,
“4ebff8c4347f9550”
]
]
},
{
“id”: “6459ecfea2a6ef49”,
“type”: “mqtt-broker”,
“name”: “local”,
“broker”: “localhost”,
“port”: “1883”,
“clientid”: “”,
“autoConnect”: true,
“usetls”: false,
“protocolVersion”: “5”,
“keepalive”: “60”,
“cleansession”: true,
“autoUnsubscribe”: true,
“birthTopic”: “”,
“birthQos”: “0”,
“birthRetain”: “false”,
“birthPayload”: “”,
“birthMsg”: {},
“closeTopic”: “”,
“closeQos”: “0”,
“closeRetain”: “false”,
“closePayload”: “”,
“closeMsg”: {},
“willTopic”: “”,
“willQos”: “0”,
“willRetain”: “false”,
“willPayload”: “”,
“willMsg”: {},
“userProps”: “”,
“sessionExpiry”: “”
}
]

Hallo Chiefsolar, ik heb 3 stuks VM-3P75CT besteld.
Toch bedankt!

Goedemorgen Erik. Groot gelijk. Slimme zet. Super snel. Geen gedoe met software en wat al niet meer. Is misschien ook niet echt zo voor iedereen interessant (genoeg). Ga je ze via Ethernet of CAN aansluiten?