This works with a firmware downgrade to 2.x
EDIT: updated to working setup with all info in one place.
As per my earlier post the inverter returns a web page on port 80.
On inspection in the developer console it returns a json file you can use.
http://your_inverters_ip_address_here/R3EMSAPP_REAL.ems?file=ESSRealtimeStatus.json
{
"ESSRealtimeStatus":{
"ColecTm":"20221007215011",
"PowerOutletPw":"0",
"GridPw":0.0,
"UnitPrice":0.0,
"ConsPw":0.0,
"BtSoc":0,
"PcsPw":0.0,
"AbsPcsPw":0.0,
"PvPw":0.0,
"GridStusCd":"0",
"BtStusCd":"0",
"BtPw":0.0,
"OperStusCd":"0",
"EmsOpMode":"0",
"RankPer":0,
"ErrorCnt":0
}
}
data pulled into homeassistant with RESTful and made into sensors with RESTful Sensor
rest.yaml
### sensor to get inverter info
- scan_interval: 1
resource: http://192.168.0.76/R3EMSAPP_REAL.ems?file=ESSRealtimeStatus.json
sensor:
# power from/to grid (needs GridStusCd to workout direction of current)
# will need to make another sensor using GridPw and GridStusCd (done and in templates.yaml)
- name: "Grid Import Export Amount"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
json_attributes_path: "ESSRealtimeStatus.GridPw"
json_attributes:
- "GridPw"
value_template: "{{ value_json['ESSRealtimeStatus']['GridPw'] }}"
# house consumption
- name: "House Power Consumption"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
json_attributes_path: "ESSRealtimeStatus.ConsPw"
json_attributes:
- "ConsPw"
value_template: "{{ value_json['ESSRealtimeStatus']['ConsPw'] }}"
# inverter output? seems to be in watts (W)
- name: "Inverter Output Watts"
device_class: energy
state_class: total_increasing
unit_of_measurement: W
json_attributes_path: "ESSRealtimeStatus.PcsPw"
json_attributes:
- "PcsPw"
value_template: "{{ value_json['ESSRealtimeStatus']['PcsPw'] }}"
# inverter output? seems to be in kilowatts (kW)
- name: "Inverter Output kiloWatts"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
json_attributes_path: "ESSRealtimeStatus.AbsPcsPw"
json_attributes:
- "AbsPcsPw"
value_template: "{{ value_json['ESSRealtimeStatus']['AbsPcsPw'] }}"
# Solar Production
- name: "Solar Production"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
json_attributes_path: "ESSRealtimeStatus.PvPw"
json_attributes:
- "PvPw"
value_template: "{{ value_json['ESSRealtimeStatus']['PvPw'] }}"
# 0 = demand to house/inverter from grid, 1 = Feedin to grid from house/inverter
# will need to make another sensor using GridPw and GridStusCd (done and in templates.yaml)
- name: "Grid Status CD?"
json_attributes_path: "ESSRealtimeStatus.GridStusCd"
json_attributes:
- "GridStusCd"
value_template: "{{ value_json['ESSRealtimeStatus']['GridStusCd'] }}"
# 0 = Discharging, 1 = Charging, 2 = idle/storing power as the solar is providing enough for the house?
# will need to make another sensor using BtStusCd and BtPw (done and in templates.yaml)
- name: "Battery Status CD?"
json_attributes_path: "ESSRealtimeStatus.BtStusCd"
json_attributes:
- "BtStusCd"
value_template: "{{ value_json['ESSRealtimeStatus']['BtStusCd'] }}"
# power from/to battery (needs BtStusCd to workout direction of current)
# will need to make another sensor using BtStusCd and BtPw (done and in templates.yaml)
- name: "Battery Charge Discharge Amount"
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
json_attributes_path: "ESSRealtimeStatus.BtPw"
json_attributes:
- "BtPw"
value_template: "{{ value_json['ESSRealtimeStatus']['BtPw'] }}"
# curently unused, not needed for home assistant energy dashboard
# "ColecTm"
# "PowerOutletPw"
# "UnitPrice"
# "RankPer"
# "ErrorCnt"
# "EmsOpMode"
# "OperStusCd"
# "BtSoc"
Sensors combined to use on energy dashboard for correct direction of current
templates.yaml
### sensors combining inverter sensors to correctly report direction of current
# Grid Import Export
# 0 = Demand to house/inverter from grid, 1 = Feedin to grid from house/inverter
- sensor:
- name: "Grid Import"
device_class: "energy"
state_class: total_increasing
unit_of_measurement: kWh
state: >
{% if is_state('sensor.grid_status_cd', '0') %}
{{ states('sensor.grid_import_export_amount')|float }}
{% else %}
0.0
{% endif %}
- sensor:
- name: "Grid Export"
device_class: "energy"
state_class: total_increasing
unit_of_measurement: kWh
state: >
{% if is_state('sensor.grid_status_cd', '1') %}
{{ states('sensor.grid_import_export_amount')|float }}
{% else %}
0.0
{% endif %}
# Battery Charging Discharging
# 0 = Discharging, 1 = Charging, 2 = Idle/Storing power as the solar is providing enough for the house?
- sensor:
- name: "Battery Discharging"
device_class: "energy"
state_class: total_increasing
unit_of_measurement: kWh
state: >
{% if is_state('sensor.battery_status_cd', '0') %}
{{ states('sensor.battery_charge_discharge_amount')|float }}
{% else %}
0.0
{% endif %}
- sensor:
- name: "Battery Charging"
device_class: "energy"
state_class: total_increasing
unit_of_measurement: kWh
state: >
{% if is_state('sensor.battery_status_cd', '1') %}
{{ states('sensor.battery_charge_discharge_amount')|float }}
{% else %}
0.0
{% endif %}
- sensor:
- name: "Battery Storing"
device_class: "energy"
state_class: total_increasing
unit_of_measurement: kWh
state: >
{% if is_state('sensor.battery_status_cd', '2') %}
{{ states('sensor.battery_charge_discharge_amount')|float }}
{% else %}
0.0
{% endif %}
Add sensors to energy dashboard settings
Energy dashboard now monitors inverter
I have the same inverter and I tried to do the same like you, that I could pull all the json data into the home assistant for the energy dashboard.
Is it possible to show the steps much easier, how to pull the data into the system. For me it’s not clear, what yaml files I must create or edit: configuration.yaml, rest.yaml, templates.yaml?
I am not sure how to configure RESTful and RESTful Sensor.
Please explain a little for dummies or newbie in home assistant.
Thank you!
Hi, everything is ok, now.
I had an error between the ears.
Thank you!
Hi wills106. I have an Q.VOLT_HYB-G3-3P with 12kWh battery. Installed a couple mounth ago. I have HA and your Solax modbus integration. I want to controle the inverter from Nordpool forecast. I have built an “Flow” in Node-red.
I have some problem with controling the inverter via Remote signals in your application ( 6 signales). Some times it works some times nothing happens. At least now I have a stable connection after switching to static IP for the inverter.
I would really appreciate if you can support me and hopefully I can give you feedback about your integration. I’m working with electronic design, and automation.
When you are trying to write to the Inverter and it doesn’t react, is the Inverter asleep?
If you Inverter doesn’t have enough Solar PV and your batteries if connected are empty the Inverter goes into sleep mode and we are unable to wake up the Inverter so far.
Hello Will,
I just installed your modbus integration on my system (inverter type: Q.VOLT_HYB-G3-3P + Waveshare RS485_TO_POE_ETH_(B)) and it seems to be working great. However, there was one thing I’m a worrying about. There are quite a lot of controls (settings) which can be directly modified (obviously my inverter was already unlocked), especially the battery max charge/discharge current. I am wondering if one could seriously damage any component (inverter, battery etc.) by accidently (without tech. background) changigng those values to a higher values (e.g. from 30A to 50A). Actually I even do not know if that would be possible or the system would reject such values. So, my questions: Are there any settings which could lead to a serious damage of the system? If so, is there any way to disable all of the controls in the very first setup or even later at once? Could the inverter be locked again (in my case I was still able to change the selfuse_discharge_min_soc even I set the devicel ock status back to “lock”)?
I have have set the max values based of what’s in the data sheet for each model of the SolaX Inverter.
So you shouldn’t be able to set it higher than allowed. I think the Inverter also ignores values outside of the allowed parameters.
I thought most entities didn’t respond when the Inverter is locked. Perhaps “selfuse_discharge_min_soc” is one of the few entities you can still change? I don’t have a gen4 Inverter, so I can’t verify.
Ok, got it. Thanks for your quick answer!
Yes, I would also expect that the values can only be set in the allowed range (…maybe I will try some other settings later). Actually I just tried to set that one value (SOC) and probably or most likley it is one of those which are allways changeable since it can be accessed via standard user app (settings) as well.
Anyhow, great integration - works perfect! Thanks!
hi again,
Ive been trying the plugin again after finding I can connect to my inverter via telnet on port 1502.
but I’m getting errors:
unrecognized inverter type - serial number : unknown
Qvolt: reading serial number from address 0x0 failed; other address may succeed
Qvolt: attempt to read serialnumber failed at 0x0
Qvolt: attempt to read serialnumber failed at 0x300
Qvolt: cannot find serial number, even not for MIC
unrecognized inverter type - serial number :
no local data file found after 5 tries - is this a first time run
and only 4 entites are showing:
Unlock Inverter
Unlock Inverter - Advanced
Inverter Temperature
Battery Awaken.
inverter: Q CELLS Q.HOME+ ESS HYB-G2
@MadKezza only the Qcells Q.VOLT HYB-G3-3P is supported with my Integration. The G2 doesn’t work, unless you have access to the Modbus docs and then I can add it in.
I am now able to capture all data between the inverter and switchdin box, which talk via modbus.
would this be a way to work out intergrating the inverter?
attched picture is sample from wireshark of inverter modbus output.
If you monitor your Inverter LCD (Or another reliable real-time source) and the network traffic you should be able to build a picture.
For example you might be able to work out:
Register 103 = 230.5V
Register 104 = 50.00Hz
Although you might be best trying to poll either Modbus TCP on the ethernet port (If there is one)
Or connecting over a dedicated RS485 port for monitoring (again if there is one?)
You can use something like Gmodbus to request registers.
You could try these register addresses. These are from iobroker so not directly useable in HA I don’t think, but these are the mappings I find by trial and error:
{
"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"
}
}
Here’s a simplified list of interesting registers:
"modbus.0.inputRegisters.30051_Model":
"modbus.0.inputRegisters.30057_Serial":
"modbus.0.inputRegisters.30202_Battery_Voltage":
"modbus.0.inputRegisters.30204_Battery_Current":
"modbus.0.inputRegisters.30402_Grid_Voltage":
"modbus.0.inputRegisters.30407_Grid_Power":
"modbus.0.inputRegisters.30502_Inverter_Voltage":
"modbus.0.inputRegisters.30508_Inverter_Current":
"modbus.0.inputRegisters.30514_PV1_Voltage":
"modbus.0.inputRegisters.30516_PV2_Voltage":
"modbus.0.inputRegisters.30518_PV1_Current":
"modbus.0.inputRegisters.30520_PV2_Current":
"modbus.0.inputRegisters.30601_Inverter_Power":
"modbus.0.inputRegisters.30705_Today_feed_out":
"modbus.0.inputRegisters.30707_Today_feed_in":
"modbus.0.inputRegisters.30709_PV_Power":
"modbus.0.inputRegisters.30711_Batt_Power":
"modbus.0.inputRegisters.30715_Batt_Tot_Charge":
"modbus.0.inputRegisters.30717_Batt_Tot_Discharge":
"modbus.0.inputRegisters.30719_PV_Today_Power":
"modbus.0.inputRegisters.30801_Power_Consumption":
"modbus.0.inputRegisters.30901_Date_Time_Now":
"modbus.0.inputRegisters.31008_Battery_Temperature":
"modbus.0.inputRegisters.31021_Battery_SoC":
"modbus.0.inputRegisters.31025_Battery_Health":
what inverter was this mapped for ?
Its a Q.HOME ESS HYB G2
Hello,
it’s probably not a HA topic, but HA at least helps with visualization.
For days I have been observing that my storage empties increasingly fast from about 4am, although the house consumption is constant. From my point of view, this means that the consumption must take place somewhere in the QCells system, but where it is no longer measured.
Does anyone know this phenomenon and has a tip on what to do about it?
Thanks in advance!
Astrabody what country are you located?
Some of the the modbus registries entries are the same on my unit as you posted, but some differ.
Might be slightly different in each country?
Are you also trying to work out modbus registry data? If so we should chat and share info.
If you are interested PM me.
Chawiby, are you signed up to a VPP?
does any company have access to your inverter?
Also do you have tracking of house power consumption in HA? never mind just re-read your post.
What are your qcells system specs, model, batt capacity, inverter kW’s.
Not important to know, but I’m curious.
I don’t know what a VPP is.
If it’s a kind of an energy cloud to which my storage is linked to, the answer is no.
Specs:
Q.VOLT HYB-G3-3P 15kW and Q.SAVE BAT-G3 12,0 kWh