Several ways to run it. Native mode on a Raspberry, in Docker on the Raspberry, etc. I run it in Docker on my Synology.
You can configure it as a Proxy or as a server, so no data any more to China. And no longer available from their servers.
You can send your data as a MQTT-message by Node-Red to Domoticz. The flow is made by @Firewizard
Code: Select all
[
{
"id": "936b12da.8ecb78",
"type": "tab",
"label": "MQTT Growatt naar Domoticz",
"disabled": false,
"info": ""
},
{
"id": "f01b6ff0.ce4878",
"type": "mqtt in",
"z": "936b12da.8ecb78",
"name": "Growatt in",
"topic": "energy/growatt",
"qos": "0",
"datatype": "json",
"broker": "7fb3e06.2d91f2",
"nl": false,
"rap": false,
"inputs": 0,
"x": 80,
"y": 120,
"wires": [
[
"9ce4ad303671b7b2"
]
]
},
{
"id": "6bed263.b6565d8",
"type": "debug",
"z": "936b12da.8ecb78",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 650,
"y": 200,
"wires": []
},
{
"id": "733eede6.d10984",
"type": "mqtt out",
"z": "936b12da.8ecb78",
"name": "To Domoticz op Syno",
"topic": "domoticz/in",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "7fb3e06.2d91f2",
"x": 660,
"y": 120,
"wires": []
},
{
"id": "9ce4ad303671b7b2",
"type": "function",
"z": "936b12da.8ecb78",
"name": "MQTT Growatt naar JSON voor Syno",
"func": "let pvstatustext;\nlet result = msg.payload;\n\nswitch (msg.payload.values.pvstatus) {\n case 0:\n pvstatustext = \"Wachten\";\n break;\n case 1:\n pvstatustext = \"Normaal\";\n break;\n case 2:\n pvstatustext = \"Storing\";\n break;\n}\n\nmsg.payload = {\"command\":\"udevice\",\"idx\":1261,\"nvalue\": result.values.pvstatus,\"svalue\": pvstatustext}\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 2306, \"nvalue\": 0, \"svalue\": (result.values.pvpowerin/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1263, \"nvalue\": 0, \"svalue\": (result.values.pv1voltage/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1264, \"nvalue\": 0, \"svalue\": (result.values.pv1current/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 2315, \"nvalue\": 0, \"svalue\": (result.values.pvfrequentie/100).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1266, \"nvalue\": 0, \"svalue\": (result.values.pvgridvoltage/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1267, \"nvalue\": 0, \"svalue\": (result.values.pvgridcurrent/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1268, \"nvalue\": 0, \"svalue\": (result.values.pvgridpower/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1269, \"nvalue\": 0, \"svalue\": (result.values.pvtemperature/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1272, \"nvalue\": 0, \"svalue\": (result.values.pvipmtemperature/10).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1275, \"nvalue\": 0, \"svalue\": (result.values.totworktime/7200).toFixed(1) };\nnode.send (msg)\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 2311, \"nvalue\": 0, \"svalue\": (result.values.pvpowerout/10).toString() + \";\" + (result.values.pvenergytotal*100).toString() };\nnode.send (msg);\nnode.done;\n\nmsg.payload = { \"command\": \"udevice\", \"idx\": 1276, \"nvalue\": 0, \"svalue\": (result.values.pvenergytotal *100).toString() };\nnode.send(msg);\nnode.done;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 120,
"wires": [
[
"733eede6.d10984",
"6bed263.b6565d8"
]
]
},
{
"id": "7fb3e06.2d91f2",
"type": "mqtt-broker",
"name": "",
"broker": "192.168.1.18",
"port": "1883",
"clientid": "",
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"sessionExpiry": ""
}
]
Maybe some work to do. But very nice solution.