Modbus TCP Image

Modbus TCP

Cerbo GX & SmartSolar MPPT communication problem


I've got small issue with communication beetwen mppts and cerbo.

10 mppts are connected to cerbo by ve.can.

MPPTs got their own unit ID : from 1 to 9 so thats ok, but the last mppt got unit ID 100 - same as the

com.victronenergy.system .


I dont know it is correct.

I'm a commisioner and thats my first time with mppt.

I want to communicate cerbo with automation server by modbus tcp.

Unit ID is slave addres of device for modbus, right ?

mac-1 asked
wkirby commented ·

2 Answers

Modbus Mapping Solar Yield

i am trying to get the data from the solar Panel in Home Assistance

i am using Modbus TCP

i got many field in my system but i cannot get the Today's Yield Wh

com.victron.solarcharger ; "Todays Yield" ; Address: 784

System has 2 SmartSolarCharger MPPT 150/75/15 and 100/50


Any help would be appreciated

fenix asked
oyvind answered ·

1 Answer

MPPT unit ID wrong

Hi, All

I have two similar systems and same configuration, 3 MPPT with one lynx shunt. However, in one system shunt unit ID is 1 and other system shunt unit ID is 100

Another big issue is one MPPT unit ID is 259 which I cannot find in the map.



john2019 asked
tnt369 answered ·

1 Answer

Victron Qauttro (x3) with Fronius 3phase (x1); Zero feed-in per phase not working.

We have installed a 3-phase system consisting of 3 x Victron 8 Kva's and Fronius Symo 20.0-3-M. The phase’s are not balanced by default as loads don't draw at same time. The problem is now that with one phase drawing higher loads than other two, the Fronius is throttling to the highest phase from loads, the two other phases (equivalent to the one or more loads being fed by Fronius via the Victron’s) then is being feed into the grid past the Victron energy meter.

How can we limit this feed into grid?


Tcp is enabled, PV inverter has been assigned, but at the TCP finds no IP address. Even if we enter the address in manually it does not change the feed into grid. All settings on Fronius match. Out of ideas to try and make this work.

jaqibar asked
jaqibar answered ·

3 Answers

Modbus TCP register 820 returning 64k not minus numbers Cerbo GX


im seeing the data returned from my

Product Cerbo GX

Firmware version v2.73

when using Modbus register 820 +64k when it should be showing minus numbers, so when the register should be showing exporting numbers eg minus im getting +64k which is odd.

the Spreadsheet for this int16 should be

-32768 to 32767

But I'm getting 0 to 65535


is this a bug in v2.73?



Noisy Boysie asked
tnt369 commented ·

1 Answer

emulating EM24 ethernet meter via modbusTCP server

Hello all,

I have been trying to include a 3rd party generator into the VRM.

For this I set up a modbusTCP server and populated it with the data from the generator
(modbus memory map as defined in this doc => EM24_E1 (Ethernet) COMMUNICATION PROTOCOL (Version 0 Revision 1.2)).

I could detect the emulated meter and connect to it as described here:

It shows up in the device list as "CG EM24 Ethernet Energy Meter" and after configuring the device as "PV inverter", the data (U,I,P) also show up in the widgets and dashboard as intended.

What I do not understand, however, is why the device in the remote console shows as "Not Connected" and all data in the associated submenue (AC Phase 1, ... AC totals, ... Energy L3) show "--" (no value).

REM: no intention to replace the 485 connected ESS grid-meter ET340 - the emulation is actually just intended for correct viewing of the setup in the dashboad/advanced overview.

FW-version is 2.73

Thanks a lot for any any help and suggestion!

Kind regards - Volker

Volker asked
markw-1 commented ·

0 Answers

Comment connaitre la quantité d'energie (Kwh) transitant par les batteries ?


Dans la cadre d'une utilisation domotique, je récupère un certain nombres d'informations sur Home assistant via Modbus. Je souhaiterai récupérer les quantités d'énergie stockées et déstockées bar les batteries (en kWh, en Wh, ..., je connais déjà les puissances "instantanées" de charge et décharge en W)). Ces informations sont à priori disponibles mais pas avec le Bus-can.

Pouvez vous me confirmer, comme je l'ai lu sur le forum anglais, qu'il est possible d'installer un SmartShunt de le connecter en, de récupérer les informations sur les flux d’énergie mais de ne pas l'utiliser comme BMS ?

Existe-il un autre moyen d'accéder à ces informations ?

Ma configuration

  • Multiplus II 5000
  • Cerbo gx
  • Batteries pylontech


grichka asked
Thierry Cortassa (Victron Energy Staff) answered ·

1 Answer

Modbus TCP address 777 problem


Good day,I have a problem reading the charger current. 777 is listed in the modbus TCP address list, but venus reports an error.
Do you have any idea where the problem is?

Thank you

Pavel Richter asked
seriusrod answered ·

3 Answers

Unidentified network when connecting my computer to cerbo GX for Grafana dashboard

I have connected my cerbo GX device to my computer in order to setup the Grafana dashboard. however, my computer does not identify the network, and does not show any data on my computer.

I am very new to Modbus TCP and appreciate your help.

dashti1995 asked
Ulrich answered ·

1 Answer

High grid voltage and throttling with Multiplus II in Australia

During peak solar times around the middle of the day, my MultiPlus II sometimes will disconnect from the grid in times of high voltage (as required), because it does not throttle back the power being exported (soon enough).

Powercor say my grid voltage is within specification, yet I find it usually is not possible to export 5kW to the grid without exceeding high voltage limits. (Maybe they keep the grid voltages high on purpose!)

To me, the problem lies with throttling back PV sources.....and I question whether it is the Grid code, V1-V4 values for Volt-Watt response curve that trigger the throttling?


My settings (pictured) do not match those that my distributor (Powercor) recommend, where they say V3=253 and V4=259.

In my case, I have a DC-coupled MPPT charger which does throttle back, albeit a little late....

Also I have an AC-coupled Fronius inverter which I was told before commissioning that it would be controlled via frequency shifting. This I believe cannot happen whilst connected to the grid and instead can only happen through a Modbus TCP connection. Throttling will work using Modbus, but again too late!

--> What settings will allow throttling to occur sooner?

Furthermore, when using Modbus the GX device shows the Fronius connection as (sunspec) and the Fronius status as "Running(Throttled),
versus not using Modbus it shows the Fronius connection as (solarapi) and the status as "Running".

When using Node-RED to retrieve data, sunspec & solarapi behave differently - with solarapi giving better information for Status and Error codes.

--> Can we use Modbus for throttling, and also use the solarapi connection?

Any help appreciated!

smart-home asked
David answered ·

1 Answer

Modbus Condition that started the generator

With a Siemens logo, a few relays want to switch based on the start stop generator function.

If I now want to read the conditions of the start I get the following message (see attachment).


I have also tried to read the manual start. I then give start address 3501 and then I get no error and my relay of the Logo does switch. Does anyone know what is going wrong or what the correct starting address is?

js92 asked
js92 answered ·

4 Answers

Cerbo GX and Phonix Inverter via Modbus TCP ID226 not responding

We try to read datas from the inverter (connected on VE.Direct1). Cerbo show ID 226:


But when I try to read data from the inverter (see below) via Modbus

ID: 226
Adr: 3


I always get this message, not datas will received?


But when I read via ID100 from the bus (e.g. parameter 840) I receive the actual DV voltage form the inverter.

What could maybe the reason for ID 226 not working?

Thanks in advance

P.S. We updated the Cerbo GX with the latest version before we started.

skaterudo asked
skaterudo answered ·

2 Answers

"AC Coupled PV - feed-in excess" set to "OFF", does not change AC Out frequency for PV inverter when on-grid.

"AC Coupled PV - feed-in excess" set to "OFF", does not change AC Out frequency for PV inverter when on-grid.

I have a PV inverter coupled on AC OUT 1, and the AC frequency shift works well when not connected to the grid.

But when connected to grid, the AC OUT frequency does not function as expected to throttle down the PV inverter to prevent feed-in excess to grid - it incorrectly keeps the AC OUT frequency unchanged at 50Hz and the excess PV power is (unwanted) fed back into the grid, even with "AC Coupled PV - feed-in excess" set to "OFF" in the ESS setup in the Cerbo GX. I also tried "AC Coupled PV - feed-in excess" set to "ON" with "Limit system feed-in" to "ON", but with "Maximum feed-in" set to "0W" - but excess PV power still get fed back into the grid since AC OUT frequency does not change to throttle down the PV Inverter, when connected to grid.

(Again, when not connected to grid, frequency control works perfect. Only when connected to grid, I cannot get the system to NOT feed in excess PV into grid.)

It is like "AC Coupled PV - feed-in excess" set to "OFF" is not respected at all.

Any ideas out there perhaps? Or what am I missing here?

plaaspondok asked
Phil Gavin commented ·

4 Answers

ModbusTCP - GX - Pheonix Inverter 3000/24

I'm using Home Assistant and the GX software running of a PI. I've a SmartSolar 150/35 and Phoenix 3000/24 connected via USB to the GX. All works well...ish.

The GX sees both devices and the console shows power values for both. The inverter values bounce around as you'd expect.

The issue is reading the values via ModbusTCP for the inverter. I've got the unit ID (238) right but regardless of the register the GX log says it's invalid. For ref I'm trying to read 3102. Now I can use unit 100 (system) and address 817 and it works BUT, it rounded. Power of 14VA shown on the GX will read as 0W. 80VA shows as 72W. It's like it'll only show multiples of 72....odd.

I can read the SmartSolar values directly with its unit ID (239) so I know that I can reference devices other than system.

I'm a bit lost with this, so any help would be great.

thatphilbrettguy asked
thatphilbrettguy commented ·

0 Answers

Fronius Ohmpilot in a Victron environment


I am rather new to Victron and a young user of Victron. Have my setup at home gathering everything together.
3 x Multiplus II 5000
1x MPPT RS 450/200
1x Cerbo GX
and a Modbus EM24 Smartmeter

My main question is I would love to use the Ohmpilot to heat up my boiler. But the question is if I somehow get this setup going via Modbus on the Cerbo GX. Or if I need something else to get it going.
Your help is very much appreciated. Many thanks, patrik

ppr asked
ppr answered ·

3 Answers

Victron integration with home assistant using Modbus TCP

I'm currently trying to integrate my victron setup into home assistant, but when I turn on the Modbus on my CCGX I keep getting the message:

ERROR "Error processing function code 3, unit id 126, start address 40000, quantity 2, src Modbus address 40000 is not registered"

My setup is a MG50 with fronius 8kw, victron mppt 250/100, 10kva Quattro, 13.8kwh BYD LiFePO4 battery, CCGX with firmware version v2.73.

Please any idea on how to resolve this?

ijeamaka-omayeka asked
ijeamaka-omayeka commented ·

1 Answer

How to extract the battery state from cerbo GX using modbus tcp ( python)

Hello everyone,

I have a python script for getting several values from the cerbo gx using the modbus tcp protocol.

All the registers i used was from the modbus register list provided by victron. For example, i accessed the values like

Load = client.read_input_registers(860, 1)

Solar Voltage = client.read_input_registers(776,3,unit=226)

Unfortunately im not able to read any batterystate. The register used in the modbus list is 844, but i dont get any readings, such 0,1, or 2 . This is what i use.

batterystate= client.read_input_registers(844,1)

Any help is appreciated. Thanks !!

joel-cherian asked
shaneyake commented ·

1 Answer

EM24 Smart Meter read out over Modbus TCP/IP


the Smart Meter connection to the Victron controller via Modbus RTU (RS485) is only wisely in case you have a short Way between the Smart Meter and the Victron Controller.

In case you have a long way or different buildings the connection over TCP/IP is required.

To prevent to install a separate RS485 Bus Cable. (using structured cabling !)

Installation Example:

#######Buildings-A############ ###Buildings-B###

EM24 -->RS485-->Modbus TCP Gateway---------TCP/IP---------------->CerboGX

Now the Question:

How can i add the Smart Meter Connection via Modbus TCP/IP to my Cerbo GX?

(FW 2.60)

jxa asked
pau1phi11ips commented ·

3 Answers

ESS Mode 2/3 via API

I am reading ESS Mode2/3 can be controlled via Modbus. Anyone managed to do it via an API instead of Modbus? I can see VRM has the readonly data, but confirming that I can't set the values via VRM and a local device on the network needs to Modbus in the values over TCP?

kc-au asked
shaneyake answered ·

2 Answers

Modbus-TCP register for generator no net KWH

@mvader (Victron Energy)

Hi is there any reason why we cant have net energy received in the TCP list for the generator? like there is for the grid?

Screenshot 2021-09-26 at 13.09.42.png

offgridsolutions asked
offgridsolutions edited ·

0 Answers

CCGX - DVCC -> How to Limit Charge Voltage using ModBus-TCP

I've noticed the addition in DVCC the ability to limit the managed battery charge voltage to a value of my liking. I am very happy, that this is finally possible now.
Now, I would like to set this maximum charge voltage using Home Assistant.

Inside my Modbus TCP services, I have access to
According to CCGX-Modbus-TCP Register-list.xlsx, the only writing-enabled registers are the CCGX-relay-states.

Is there any possibility set the Maximum Charge Voltage per Modbus TCP from Home Assistant? If yes, what is the register of this service?

Michael Timler asked
shaneyake commented ·

2 Answers

Victron info in Home Assistant Energy dashboard

With the new release of the Energy dashboard in Home Assistant, I've been trying to surface the Victron data into it.

But I'm using modbus TCP to get data from my installation (through the Venus GX).. and those sensors apparently don't have the state_class attribute defined for them (which is ok i guess, as modbus is a generic protocol) but i also can't add such in the modbus sensor configuration in HA.. so this does not work. Link

Is there any other way (than using modbus) to get information from Venus GX in a way it would be useful in the Energy dashboard from Home Assistant?

rares-vasilescu asked
rares-vasilescu commented ·

1 Answer

Modbus: trying to read Serial in register 800

I'm trying to read register 800, Serial [char(6)] via Modbus. I'm not sure what this looks like, but I get "Serial: b'508c'" from the following code. Does this look right to you?

from pymodbus.constants import Defaults
from pymodbus.constants import Endian
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
from pymodbus.payload import BinaryPayloadDecoder
Defaults.Timeout = 25
Defaults.Retries = 5
client = ModbusClient('', port='502')
result = client.read_input_registers(800, 2)
decoder = BinaryPayloadDecoder.fromRegisters \
(result.registers, byteorder=Endian.Big)
Serial = decoder.decode_string(size=6)
print("Serial: ",Serial)

Thank you.

edgargw22 asked
edgargw22 commented ·

0 Answers

Venus GX - Modbus TCP - incorrect values for "User yield"?


I am connecting via Modbus TCP to a local Venus GX.
Everything works fine except for the readout value of Register 790 - "User Yield"

The "Victron Connect" app shows the CORRECT values and the readout works as expected
BUT the
2nd MPPT charger connected to VE.Direct 2 port. show different value.

According to the "CCGX-Modbus-TCP-register-list.xlsx"

Unit ID /DeviceInstance Remark
245 258 CCGX VE.Direct 2 port, Venus GX VE.Direct 1 port (ttyO2)
243 260 Venus GX VE.Direct 2 port (ttyO4)

I compared the readout via QMod Master and here are the results .
the first charger shows the correct value via Modbus:


The 2nd one shows different values:


According to the register list:

Address Type Scalefactor Range
790 uint16
10 0 to 6533.6

The readout value is at least 1 digit to short!
The value should have been ~ 72670 or so

This is not critical
but I was wondering if this is just a "small bug" in the
ModBus TCP mapping on the "Venus GX" ?

As far as I can tell, all the other values seem to give the correct values!

Can anyone confirm this behavior or am I wrong here?

Best regards

juergen pflug asked
juergen pflug answered ·

3 Answers

Temperatursensor am Cebro GX über Modbus-TCP


in einem Schaltschrank wird eine Victron-Batterieüberwachung für die USV-Anlage verwendet. Diese soll verschiedene Daten über Modbus-TCP an die Steuerung im Schrank übergeben.

(Smart Shunt, Cebro GX, Touch GX und 4* Temperature Sensor Quattro, MultiPlus and GX Device)

Frage: Ist es möglich, die 4 Temperatureingänge vom Cebro GX über die Modbus-TCP Anbindung weiterzugeben?

In der Modbus-TCP Register List, finde ich nur die Auswertung für com.victronenergy.temperature, welche wohl nur einen Sensor liest?!

nils-g asked
netrange answered ·

1 Answer

Will the Unit ID number of a BlueSolar Charger change at night if there is no battery connected?


I have an installation of 12 BlueSolar chargers connected to 1 Cerbo GX via an actively powered USB-hub. Unfortunately, as I came to realize, the instance number of each one of them changes randomly when the modules do not generate power (usually at night) since I dump their power output onto a bank of power resistors through the battery output. My question is, will the Unit IDs of the solar chargers change as well when the modules lose power if there is no battery connected to them? In the end what I want is to be able to differentiate the PV power output of each module, so if the Unit ID number of each solar charger changes daily, I cannot address them via Modbus TCP. Is there a solution I am missing that does not involve using a battery? Would it be possible to connect a DC power supply to the battery output and dump the PV power through the load output to prevent the solar charger from disconnecting from the Cerbo GX, as well as the change of instance number and of Unit ID?

Looking forward to your enlightening answers,


juan-f-mtz asked

0 Answers

ESS and Fronius : Feed-in Limiting active turns to NO when grid is lost.

I noticed that the Feed-in Limited active status turns to NO when grid is lost that almost made my house burn as the fronius could not limit the power and my batteries were already full, the batteries got overcharged !



Any other requirements needed ? Fronius Primo 3.16, Cerbo 2.70-17, Multiplus v282, modbus tcp OK.

josephm asked
josephm answered ·

3 Answers

Modbus - Energy Used Values (From Grid / To Grid)

I have been trying to replicate the information as displayed on VRM from the values available on Modbus, but have not been very successful. I have found a few posts/questions which touches on this, but I have not been able to succeed.

Use Case: These values will be captured in HA. By substracting the two values from one another I would like to regulate the PV generation to keep the "From Grid" value just above zero. The calculations in HA is the easy part, but getting the correct values to work with seems challenging.

1. Is it possible to recreate these values from VRM?


2. If so, could it be possible to assist with the registers/dbus paths used to achieve this.

Any assistance will be greatly appreciated.


Victron Multiplus II

MPPT 250/100

Grid Meter ET112

Pylontech Batteries

AC-Coupled SMA Inverter on AC1

ekkesa asked

0 Answers

I get negative values when reading "inverter current" via modbus, can I adjust that ?

name: Inverter Current

hub: victron

slave: 236

register: 3100

unit_of_measurement: A



martijn-heeroma asked

0 Answers

Modbus Address 33 / Inverter Only - enabled in ESS configs


i've set this 'sub-mode' in the past for 1 or 2 days just to verify that internal consumers (incl. genset starting) works and cause no overload conditions. My current undestanding is that that setting address 33 to 'Inverter Only' the systems works as if the grid is dead, but the grid (AC-IN) is physically connected and is alive - but ignored. Now i would like to run in that mode for a longer period (still the basic configuration is ESS) so from a MP point of view it looks like a long term grid outage - what are the implications when doing so ? Charging will continue through 2 MPPTs - daily charging is enough in summer times to compensate the nightly battery drain.

best regards,


martghh asked

0 Answers

201 Posts
168 Users

Topic Experts

41 Points
Rob Howdle
20 Points
0 Points