I’m running an MPPT charger connected to a Cerbo GX. I want to read the DC voltage and DC current via Modbus and use them in Home Assistant. But no matter which registers and unit IDs I use, I’m not getting any output.
The DBUS output looks like this:
dbus -y com.victronenergy.solarcharger.ttyS7 / GetValue
value = {‘Capabilities/Capabilities1’: 134868854,
‘Connected’: 1,
‘CustomName’: ‘’,
‘Dc/0/Current’: 0.6000000238418579,
‘Dc/0/Voltage’: 51.900001525878906,
‘DeviceInstance’: 280,
‘DeviceOffReason’: 0,
‘Devices/0/CustomName’: ‘’,
‘Devices/0/DeviceInstance’: 280,
‘Devices/0/FirmwareVersion’: 345,
‘Devices/0/ProductId’: 41048,
‘Devices/0/ProductName’: ‘SmartSolar Charger MPPT 150/35’,
‘Devices/0/ServiceName’: ‘com.victronenergy.solarcharger.ttyS7’,
‘Devices/0/VregLink’: ,
‘ErrorCode’: 0,
‘FirmwareVersion’: 345,
‘GroupId’: 10,
‘HardwareVersion’: ,
Does anybody knows how the get this values?
I assume you’ve looked closely at the register list here:
https://www.victronenergy.com/upload/documents/CCGX-Modbus-TCP-register-list-3.70.xlsx
ttyS7 on a Cerbo GX should have a VRM device instance of 279.
For modbus, you must use Unit ID 226 , which is documented on the second sheet in the excel file.
I would expect to read the DC voltage and current from registers 771 and 772 .
Register 771 need to be multiplied by 0.01 to get volts.
Register 772 needs to be multiplied by 0.1 to get amps.
If you’ve done all of that, and still get nothing, you can check for modbus errors in the console.
Also see
Thank you for your response. I am aware of the Modbus Register list, but no matter which combination of Unit ID, Device instance and adress i am using, i get no data.
Maybe i understand something wrong, but for example unit ID 227 / address 33 (Multiplus Switch Position) or Solar Power unit 100 and address 850 are working properly as expected, wenn using Modbus.
I ended up reading the missing values via MQTT.
Maybe that MPPT Register are not mapped to modbus?!?
They should be mapped.
When you attempt a read from one of those addresses, do you get a modbus error or are you reading zeros?
If you cannot check for read errors from your end, check the following page on the console (I conveniently have an error showing there).
This is the error you should get if they are not mapped.
This is what i get when using Device ID 226, and Address 771:
OK, so check under the Available Services menu up one level and see if 279 shows up in the list. Maybe it was assigned a different number.
Or it wasn’t assigned at all.
Sorry, I’m on the new GUI. I don’t think that changed.
In the DBUS command in the first post, you can see that the charger should have unit ID 280.
This is also displayed as available services:
But Unit ID: 280 with Adress 771 did also not work. But there is no error displayed in the cerbo menu. I think this is because the cerbo did not accept a connection on this ID.
As far as i know, 280 is a not usable value as Device ID. Modbus tools also refuse to connect to this ID.
Strange that it is 280.
However, according to the mapping table in the excel file (second sheet), 280 corresponds to modbus Unit Id 215 .
Unit IDs are byte sized and only go up to 255, so they had to remap the number.
Okay, it could be due to my firmware version. It’s v2.90. Instance 280 isn’t listed in the corresponding Excel sheet either.
I don’t know if it’s worth updating the firmware. Everything’s working perfectly. Who knows if it will still be working after an update
Unit ID 215 give me this:
botfixer:
Okay, it could be due to my firmware version. It’s v2.90. Instance 280 isn’t listed in the corresponding Excel sheet either.
I don’t know if it’s worth updating the firmware. Everything’s working perfectly. Who knows if it will still be working after an update
Ahhh, yes that is very old firmware, and that would definitely explain it.
If everything is working, and you are happy with it, you should probably leave it alone.
It certainly isn’t worth it just for the Modbus issue.
1 Like