yes json just shows error code. i can give the power off a try
I have been in contact with the help desk at qcell Australia regarding the error on the local json file …
Basically they told me to use the web site to get the information. I explained I would like to use the json file within home assistant … Their response is they do not support the local json file (anymore) …
Looks like they want all information/data to go via their cloud …
thanks for the update back to the start and see is we can integrate q.command
I take it all back …
the alldata/JSON file has been working for two weeks without any problems !!
Had an error remotely rebooted JSON back and working.
You can also get data via Modbus over TCP. By trial and error I got these addresses:
(this is an export from iobroker in JSON format, hopefully its useful.)
{
"modbus.0": {
"_id": "modbus.0",
"type": "meta",
"common": {
"type": "meta"
},
"native": {},
"from": "system.adapter.modbus.0",
"ts": 1692251903199,
"user": "system.user.admin"
},
"modbus.0.discreteInputs": {
"type": "channel",
"common": {
"name": "Discrete inputs"
},
"native": {},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1665054108416,
"_id": "modbus.0.discreteInputs"
},
"modbus.0.holdingRegisters": {
"type": "channel",
"common": {
"name": "Holding registers"
},
"native": {},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1665223133536,
"_id": "modbus.0.holdingRegisters"
},
"modbus.0.info": {
"_id": "modbus.0.info",
"type": "channel",
"common": {
"name": "info"
},
"native": {},
"from": "system.adapter.modbus.0",
"ts": 1692251905997,
"user": "system.user.admin"
},
"modbus.0.info.connection": {
"_id": "modbus.0.info.connection",
"type": "state",
"common": {
"role": "indicator.connected",
"name": "If master connected",
"type": "boolean",
"read": true,
"write": false,
"def": false
},
"native": {},
"from": "system.adapter.modbus.0",
"ts": 1692251903228,
"user": "system.user.admin"
},
"modbus.0.info.pollTime": {
"type": "state",
"common": {
"name": "Poll time",
"type": "number",
"role": "",
"write": false,
"read": true,
"def": 0,
"unit": "ms"
},
"native": {},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904591,
"_id": "modbus.0.info.pollTime"
},
"modbus.0.inputRegisters": {
"type": "channel",
"common": {
"name": "Input registers"
},
"native": {},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905976,
"_id": "modbus.0.inputRegisters"
},
"modbus.0.inputRegisters.30051_Model": {
"_id": "modbus.0.inputRegisters.30051_Model",
"type": "state",
"common": {
"name": "Unit Model number",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 50,
"deviceId": 1,
"type": "uint16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904614
},
"modbus.0.inputRegisters.30057_Serial": {
"_id": "modbus.0.inputRegisters.30057_Serial",
"type": "state",
"common": {
"name": "Unit Serial number",
"role": "level",
"type": "string",
"read": true,
"write": false,
"def": "",
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 56,
"deviceId": 1,
"type": "stringle",
"len": 9,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904649
},
"modbus.0.inputRegisters.30104_Inverter": {
"_id": "modbus.0.inputRegisters.30104_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 103,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904680
},
"modbus.0.inputRegisters.30105_Inverter": {
"_id": "modbus.0.inputRegisters.30105_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 104,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904717
},
"modbus.0.inputRegisters.30107_Inverter": {
"_id": "modbus.0.inputRegisters.30107_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 106,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904745
},
"modbus.0.inputRegisters.30117_Inverter": {
"_id": "modbus.0.inputRegisters.30117_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 116,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904769
},
"modbus.0.inputRegisters.30119_Inverter": {
"_id": "modbus.0.inputRegisters.30119_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 118,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904843
},
"modbus.0.inputRegisters.30121_Inverter": {
"_id": "modbus.0.inputRegisters.30121_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 120,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904877
},
"modbus.0.inputRegisters.30123_Inverter": {
"_id": "modbus.0.inputRegisters.30123_Inverter",
"type": "state",
"common": {
"name": "Unit data",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 122,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904902
},
"modbus.0.inputRegisters.30202_Battery_Voltage": {
"_id": "modbus.0.inputRegisters.30202_Battery_Voltage",
"type": "state",
"common": {
"name": "Battery Voltage",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "V"
},
"native": {
"regType": "inputRegs",
"address": 201,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904928
},
"modbus.0.inputRegisters.30204_Battery_Current": {
"_id": "modbus.0.inputRegisters.30204_Battery_Current",
"type": "state",
"common": {
"name": "Battery Current",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "A"
},
"native": {
"regType": "inputRegs",
"address": 203,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.01
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904967
},
"modbus.0.inputRegisters.30302_Unknown": {
"_id": "modbus.0.inputRegisters.30302_Unknown",
"type": "state",
"common": {
"name": "Unknown (possibly a temperature)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 301,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251904998
},
"modbus.0.inputRegisters.30306_Unknown": {
"_id": "modbus.0.inputRegisters.30306_Unknown",
"type": "state",
"common": {
"name": "Unknown (possibly a temperature)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 305,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905018
},
"modbus.0.inputRegisters.30308_Unknown": {
"_id": "modbus.0.inputRegisters.30308_Unknown",
"type": "state",
"common": {
"name": "Unknown (possibly a temperature)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 307,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905048
},
"modbus.0.inputRegisters.30312_Unknown": {
"_id": "modbus.0.inputRegisters.30312_Unknown",
"type": "state",
"common": {
"name": "Unknown (possibly a temperature)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 311,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905073
},
"modbus.0.inputRegisters.30314_Unknown": {
"_id": "modbus.0.inputRegisters.30314_Unknown",
"type": "state",
"common": {
"name": "Unknown (possibly a temperature)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 313,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905097
},
"modbus.0.inputRegisters.30316_Unknown": {
"_id": "modbus.0.inputRegisters.30316_Unknown",
"type": "state",
"common": {
"name": "Unknown (possibly a temperature)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 315,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905135
},
"modbus.0.inputRegisters.30402_Grid_Voltage": {
"_id": "modbus.0.inputRegisters.30402_Grid_Voltage",
"type": "state",
"common": {
"name": "Grid Volt",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "V"
},
"native": {
"regType": "inputRegs",
"address": 401,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905166
},
"modbus.0.inputRegisters.30407_Grid_Power": {
"_id": "modbus.0.inputRegisters.30407_Grid_Power",
"type": "state",
"common": {
"name": "Grid Power",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kW"
},
"native": {
"regType": "inputRegs",
"address": 406,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 0.001
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905195
},
"modbus.0.inputRegisters.30411_Unknown": {
"_id": "modbus.0.inputRegisters.30411_Unknown",
"type": "state",
"common": {
"name": "Unknown",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 410,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905218
},
"modbus.0.inputRegisters.30412_Unknown": {
"_id": "modbus.0.inputRegisters.30412_Unknown",
"type": "state",
"common": {
"name": "Unknown",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 411,
"deviceId": 1,
"type": "uint16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905242
},
"modbus.0.inputRegisters.30413_Unknown": {
"_id": "modbus.0.inputRegisters.30413_Unknown",
"type": "state",
"common": {
"name": "Unknown",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 412,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905264
},
"modbus.0.inputRegisters.30502_Inverter_Voltage": {
"_id": "modbus.0.inputRegisters.30502_Inverter_Voltage",
"type": "state",
"common": {
"name": "Inverter Voltage",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "V"
},
"native": {
"regType": "inputRegs",
"address": 501,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905290
},
"modbus.0.inputRegisters.30508_Inverter_Current": {
"_id": "modbus.0.inputRegisters.30508_Inverter_Current",
"type": "state",
"common": {
"name": "Inverter Current",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "A"
},
"native": {
"regType": "inputRegs",
"address": 507,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.01
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905336
},
"modbus.0.inputRegisters.30514_PV1_Voltage": {
"_id": "modbus.0.inputRegisters.30514_PV1_Voltage",
"type": "state",
"common": {
"name": "PV1 Voltage",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "V"
},
"native": {
"regType": "inputRegs",
"address": 513,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905365
},
"modbus.0.inputRegisters.30516_PV2_Voltage": {
"_id": "modbus.0.inputRegisters.30516_PV2_Voltage",
"type": "state",
"common": {
"name": "PV2 Voltage",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "V"
},
"native": {
"regType": "inputRegs",
"address": 515,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905386
},
"modbus.0.inputRegisters.30518_PV1_Current": {
"_id": "modbus.0.inputRegisters.30518_PV1_Current",
"type": "state",
"common": {
"name": "PV1 Current",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "A"
},
"native": {
"regType": "inputRegs",
"address": 517,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.01
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905406
},
"modbus.0.inputRegisters.30520_PV2_Current": {
"_id": "modbus.0.inputRegisters.30520_PV2_Current",
"type": "state",
"common": {
"name": "PV2 Current",
"role": "value",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "A"
},
"native": {
"regType": "inputRegs",
"address": 519,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 0.01
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905434
},
"modbus.0.inputRegisters.30601_Inverter_Power": {
"_id": "modbus.0.inputRegisters.30601_Inverter_Power",
"type": "state",
"common": {
"name": "Inverter Power",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kW"
},
"native": {
"regType": "inputRegs",
"address": 600,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 0.001
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905466
},
"modbus.0.inputRegisters.30701_Unknown": {
"_id": "modbus.0.inputRegisters.30701_Unknown",
"type": "state",
"common": {
"name": "Unknown",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 700,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905483
},
"modbus.0.inputRegisters.30703_Unknown": {
"_id": "modbus.0.inputRegisters.30703_Unknown",
"type": "state",
"common": {
"name": "Unknown",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 702,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905501
},
"modbus.0.inputRegisters.30705_Today_feed_out": {
"_id": "modbus.0.inputRegisters.30705_Today_feed_out",
"type": "state",
"common": {
"name": "Today Grid Out",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kWh"
},
"native": {
"regType": "inputRegs",
"address": 704,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905525
},
"modbus.0.inputRegisters.30707_Today_feed_in": {
"_id": "modbus.0.inputRegisters.30707_Today_feed_in",
"type": "state",
"common": {
"name": "Today Grid In",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kWh"
},
"native": {
"regType": "inputRegs",
"address": 706,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905561
},
"modbus.0.inputRegisters.30709_PV_Power": {
"_id": "modbus.0.inputRegisters.30709_PV_Power",
"type": "state",
"common": {
"name": "PV Total {pwer",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kwH"
},
"native": {
"regType": "inputRegs",
"address": 708,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 0.001
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905585
},
"modbus.0.inputRegisters.30711_Batt_Power": {
"_id": "modbus.0.inputRegisters.30711_Batt_Power",
"type": "state",
"common": {
"name": "Battery Power",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kWh"
},
"native": {
"regType": "inputRegs",
"address": 710,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 0.001
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905617
},
"modbus.0.inputRegisters.30713_Unknown": {
"_id": "modbus.0.inputRegisters.30713_Unknown",
"type": "state",
"common": {
"name": "Unknown (0)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 712,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905637
},
"modbus.0.inputRegisters.30715_Batt_Tot_Charge": {
"_id": "modbus.0.inputRegisters.30715_Batt_Tot_Charge",
"type": "state",
"common": {
"name": "Battery Total Charge",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kWh"
},
"native": {
"regType": "inputRegs",
"address": 714,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905660
},
"modbus.0.inputRegisters.30717_Batt_Tot_Discharge": {
"_id": "modbus.0.inputRegisters.30717_Batt_Tot_Discharge",
"type": "state",
"common": {
"name": "Battery Total Discharge",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kWh"
},
"native": {
"regType": "inputRegs",
"address": 716,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905686
},
"modbus.0.inputRegisters.30719_PV_Today_Power": {
"_id": "modbus.0.inputRegisters.30719_PV_Today_Power",
"type": "state",
"common": {
"name": "Today PV Power",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 718,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905707
},
"modbus.0.inputRegisters.30801_Power_Consumption": {
"_id": "modbus.0.inputRegisters.30801_Power_Consumption",
"type": "state",
"common": {
"name": "Power Consumption",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "kW"
},
"native": {
"regType": "inputRegs",
"address": 800,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 0.001
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905732
},
"modbus.0.inputRegisters.30901_Date_Time_Now": {
"_id": "modbus.0.inputRegisters.30901_Date_Time_Now",
"type": "state",
"common": {
"name": "Date Time",
"role": "value.time",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 900,
"deviceId": 1,
"type": "uint32be",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905774
},
"modbus.0.inputRegisters.31001_Unknown": {
"_id": "modbus.0.inputRegisters.31001_Unknown",
"type": "state",
"common": {
"name": "Unknown (1)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 1000,
"deviceId": 1,
"type": "uint16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905821
},
"modbus.0.inputRegisters.31003_Unknown": {
"_id": "modbus.0.inputRegisters.31003_Unknown",
"type": "state",
"common": {
"name": "Unknown (1)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 1002,
"deviceId": 1,
"type": "uint16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905851
},
"modbus.0.inputRegisters.31005_Unknown": {
"_id": "modbus.0.inputRegisters.31005_Unknown",
"type": "state",
"common": {
"name": "Unknown (3)",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 1004,
"deviceId": 1,
"type": "uint16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905874
},
"modbus.0.inputRegisters.31007": {
"_id": "modbus.0.inputRegisters.31007",
"type": "state",
"common": {
"name": "",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 1006,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905894
},
"modbus.0.inputRegisters.31008_Battery_Temperature": {
"_id": "modbus.0.inputRegisters.31008_Battery_Temperature",
"type": "state",
"common": {
"name": "Battery Temperature",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "°"
},
"native": {
"regType": "inputRegs",
"address": 1007,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905916
},
"modbus.0.inputRegisters.31021_Battery_SoC": {
"_id": "modbus.0.inputRegisters.31021_Battery_SoC",
"type": "state",
"common": {
"name": "Battery SoC",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": "%"
},
"native": {
"regType": "inputRegs",
"address": 1020,
"deviceId": 1,
"type": "int16be",
"len": 1,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905936
},
"modbus.0.inputRegisters.31025_Battery_Health": {
"_id": "modbus.0.inputRegisters.31025_Battery_Health",
"type": "state",
"common": {
"name": "Battery Health",
"role": "level",
"type": "number",
"read": true,
"write": false,
"def": 0,
"unit": ""
},
"native": {
"regType": "inputRegs",
"address": 1024,
"deviceId": 1,
"type": "floatbe",
"len": 2,
"offset": 0,
"factor": 1
},
"from": "system.adapter.modbus.0",
"user": "system.user.admin",
"ts": 1692251905956
},
"modbus.admin": {
"type": "meta",
"common": {
"name": "admin",
"type": "admin"
},
"from": "system.host.iobroker.cli",
"ts": 1665049917794,
"native": {},
"_id": "modbus.admin"
}
}
Looks like a firmware update has changed the JSON if you need battery information here is what i am using
- platform: rest
name: PWBatteryAverageTotalChargePerc
resource: http://192.168.1.36/alldata
value_template: ‘{{ value_json.current_avg_soc | round (1)}}’
unit_of_measurement: “%”
scan_interval: 400
icon: mdi:battery
verify_ssl: false
Has any created an integration I can download?
local access stopped again back to cloud and no HA integration
Is this working for anyone - I get a refused to connect error when trying to access the alldata URL? It worked for a few months and then hasn’t worked since.
By doing a port scan of the unit I found that it has port 22 (SSH) and ports 7000 and 9111 open, and by using the URLs https://myqhome:9111/ and https://myqhome:7000/ I can get it to present a login page - but no idea what credentials are required to get log in on those pages (they aren’t the same as the cloud login creds). From what I can tell the port 7000 page is probably an installer config/commissioning portal, but not sure what the port 9111 page is for…
I tried logging in via SSH but that seems to require a private key to log in.
Awesome, your post helped me a lot!!
I managed to log in on port 7000 - the password was the last 4 digits of the serial number of the inverter. It is indeed an installer/config/commissioning portal.
I’m stuck on the port 9111 page. I’m guessing the ID and Password are the same as for the Apps on the smart phone. But since we bought a house with everything installed, but no documentation, I do not have the home-ID and password
Has anyone managed to make this work again? Have tried rebooting unit, sadly does not connect.
I can access both pages, where you thought it might be the usual login details, for me anyway these don’t work.
Page simply does not accept them, not sure what the passwords is. Tried a combination of inverter Id and email.
I had my QCells system installed about four weeks ago and I’ve been massively frustrated with the lack of an API.
Sooooo, I’ve been a bit busy over the last couple of few weeks working on a solution to this. I’ve done some reverse engineering of the Installer portal on port 7000 and now have a Python script that allows me to schedule the Inverter based on Solcast forecasts. I also have a second script which polls readings every 5 seconds to build up a usage history (so I have a local copy if the QCells servers ever became unavailable). Please note, I am not in any way a Python expert!
TLDR; The code is available here: GitHub - britisson/qcscheduler
Here’s a summary of my findings so far:
To log in to the Installer page on port 7000 you need to know the password. For me, this wasn’t the last four digits of the serial number, so I just clicked on Forgot Password to reset the password. It will ask you for the serial number of the inverter and your choice of new password
As for the port 9111 page - I can’t get in. Like others here, I’ve tried every username and password combo going without success. And QCells themselves have been hopeless, I’ve sent two emails and heard nothing back.
So, back to the Installer portal. Once logged in, I turned on the network inspector in Firefox and whilst performing actions I noticed a load of calls to endpoints which return JSON files. These endpoints return pretty much everything you’d want to know about the inverter. Crucially, there are also endpoints that allow you to change the inverter settings. The ones used in my scripts are:
/system/status/pcssystem
GET request. Returns detailed information about the batteries and panels, current readings for battery, inverter and grid, SOC, SOH.
/config/allnvm
GET request. I think this is mainly the current settings of the inverter. I use it in the script to get the backup battery % setting
/install/device
POST request. JSON containing the required charging regime is posted to this endpoint. You can see the details of this in the Python script or using Inspector on the Installer portal
/install/battery-sync
POST request. An empty request is posted after a call to device. No idea what it does, but in Inspector this was always called after the device endpoint
Unfortunately, these endpoints will not work unless you’re logged in, they rely on session cookie authentication. If you call them without logging in you’ll get a 401. That’s easy enough to cope with in Python and the script handles logging in. However, I’m not an expert on Home Assistant so I don’t know if it can be made to work in HA, hopefully one of you guys can read my code and see if it can be made to work.
There are other endpoints available, I don’t use these in my script but they are potentially useful:
/config/tou
GET request. Fetches all the Time Of Use settings (i.e. Time-based Mode as it’s called in the app)
/system/status/pv-meter-connect
GET request. Returns a status of the PV meter. I don’t have a PV meter in my system so this is always 0 for me
/system/status/pcsconntectstatus
GET request. PCS = Power conversion system. Returns a status of 0 or 1.
/system/status/cloudconnectstatus
GET request. Returns status of 0 or 1 to indicate if it’s connected to QCells cloud
/json/error_code_list.json
GET request. Returns a set of error code definitions which are returned by other endpoints.
/system/information/ems-version
GET request. Returns hardware and software versions
/system/information/serial-number
GET request. Does what it says on the tin
/system/information/product-model-name?EMS_serial_number=xxxxxxxxxxxxxxxx
GET request. Returns the model name and a validity check of the serial number provided
/system/information/ess-version
GET request. Returns version numbers for the batteries
/install/datetime
GET request. Returns what the inverter thinks is the current date and time
/install/network-info
GET request. Returns the IP and MAC addresses of the connected network interface (my inverter is connected by ethernet)
/system/information/installState
GET request. Returns an install_done value of 1
/system/latest-version
GET request. I think this checks for any newer versions of the inverter software, there is an updatable value which is false for me (assuming that means it’s up to date)
/install/internet-connection
POST request. You need to post {network_type: 0} which will return your local IP and a status of 1 if connected.
/resource/grid-code/default/826
GET request. I think this returns some grid settings based on the country code provided (guessing 826 is UK)
/install/ntp-status
GET request. I’m assuming this is indicating that the inverter is connected to a time server.
Unfortuantely, I can’t find an endpoint which shows usage which is why I ended up writing the readings script.
There are no doubt many more endpoints but these are all the ones I could deduce from Firefox.
I’ve set the scripts to run on a dedicated Raspberry Pi Zero 2 W with an ethernet hat. The scheduler.sh script (which in turn runs scheduler.py) is called by a CRON job every night at 23:30. The readings script is set up in /etc/rc.local to run on startup. They rely on a set of tables in a MariaDB database called QCells to record the readings, again, there is a script to do this on the Github
Apologies for such a long post. I hope you find this is useful. Happy to answer any questions and definitely welcome any feedback.
We have just had Q.Cell inverter and batteries installed, and I was looking at ways to integrate with the system in order to schedule charging from the grid at night-time if the weather will be rainy. It sounds like you may have solved this problem here, but as I am a beginner when it comes to the Home Assistant I am not sure how and where to execute your Python code? Does it integrate with HA or is it stand-alone? I have software development experience but not much solar experience.
I’m also a beginner when it comes to HA. I wouldn’t know how to set this up in HA, I’m hoping others here would be able to help. I have a feeling that the whole cookie authentication and needing to log in with a password could be a problem though.
As for how I’ve implemented it, it’s standalone. It’s basically just a matter of scheduling the Python script to run every evening. On Linux (on my Raspberry Pi), this is done using cron. In Windows I’d imaging you’d use Task Scheduler.
The logic in my Python script isn’t perfect, for example, it doesn’t account for the fact that you don’t get all your generated energy over the course of the day. There are many improvements I’d like to make but it’s likely that HA already does it.
Hi, I understand, thanks for sharing. It’s great to see that you’re able to run it via Python on a Pi - hopefully will work as a good proof of concept!
I’d love to be able to use this, but it’s way beyond my HA skills at the moment.
If someone is able to talk us though what I need to do with the code in an idiot proof way I would be so grateful.
This is really helpful. I had my QCells inverter plus three batteries installed a couple of months ago and I’ve been fighting with the installer to get the info I need to query and manage the inverter. The sales guy told me he’d be able to provide that info but so far has not. I will keep nagging them as I made the decision to buy QCells based on that promise. In the meantime, your post has got me excited. My inverter is also connected via ethernet so we have quite a bit in common. Will give your standalone scripts a go and my intention is to take the plunge and start to get my head around how integrations in HA work. Should be fun. At least I have a bit of time as I’m tied to my old electricity provider (British Gas) until May 25. Let’s see where the road leads.
I’m glad you find it helpful.
I’m not sure what size battery you went for (I have three, so total of approx 20kWh), but it may be worth ditching British Gas rather than waiting. The money you would save in being able to access cheap overnight rates between now and May would likely more than cover your exit fees.
I’m on the Eon Next Drive tariff, it’s only 6.7p per kWh between midnight and 7am. In a grey and wet month like October or November where I’m charging up approx 15kWh every night it’s saving me close to £80 a month.