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.
[image]Good day,I have a problem reading the charger current. 777 is listed in the modbus TCP address list, but venus reports an error.
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!
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?
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
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.
"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?
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.
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
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 192.168.1.116: 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?
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.
Any help is appreciated. Thanks !!
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 !)
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?
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?
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 com.victronenergy.systems.
According to CCGX-Modbus-TCP Register-list.xlsx, the only writing-enabled registers com.victronenergy.systems 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?
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 https://www.home-assistant.io/more-info/statistics/
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?
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('10.186.47.212', port='502')
result = client.read_input_registers(800, 2)
decoder = BinaryPayloadDecoder.fromRegisters \
Serial = decoder.decode_string(size=6)
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
2nd MPPT charger connected to VE.Direct 2 port. show different value.
According to the "CCGX-Modbus-TCP-register-list.xlsx"
|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:
[image]According to the register list:
||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?
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?!
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,
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.
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
Grid Meter ET112
AC-Coupled SMA Inverter on AC1
name: Inverter Current
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.
The GX Modbus-TCP Manual (https://www.victronenergy.com/live/ccgx:modbustcp_faq) keeps talking about an excel spread sheet, but I can't find it. The above manual also has a link for white papers that would include the spread sheet (https://www.victronenergy.com/support-and-downloads/technical-information), but it's not there either.
The GX Modbus-TCP Manual includes the following example: "The Modbus-TCP reply will contain 2302. Divide it by 10, as specified in cell E3, and then you have the voltage: 230.2 Volts AC."
Does anyone know where I can find this excel spread sheet? TIA...
The register spreadsheet does not seem to have a register number associated with Aux1 or Aux2 input on vebus unless I am missing something?
I have wired up a switch for testing but can not, for the life of me, figure out how to find it using modbus
Starting to regret my decision to go with a colour GX over a Cerbo but I am hoping I can still access the signal via the aux input on the master inverter.
I am just after some guideance on how to do this with modbus as there doesnt seem to be a register for it in the spreadsheet.
Incase there is a better way (I am assuming relay on GX is output only) I am attempting to read a ripple control unit to determine congestion and export under a special exporters contract I am setting up with my electricity retailer to get better rates than the generic spot price.
problem: gridmeter connect and disconnect randomly
modbus unit ID is not visible in menu:
problem in this video:
carlo gavazzi ET340.
3 x multiplus 2. (3 fase)
ESS with only ACin connected.
modbus unit ID is not showing.
1. To have electricity for as long as possible.
2. To use as much renewable energy as possible.
1. To have electricity for as long as possible.
- Load shedding / Unstable Grid
- Cloudy weather
Load shedding after 4am is the worst. Because State of Charge (SoC) is low and it might be cloudy or winter which means PV might only be available later. So SoC shouldn't be set too low in order to reach the first objective, but it can't be too high either in order to reach the second objective.
- High Loads during low SoC
My geyser has a 3000W element and the storage I use is a 7100W capacitor. When the geyser switches on at night then there is sometimes a voltage drop below a critical level and the system faults with a low battery alarm. Grid is then used.
One could set the minimum SoC to 40% and have the grid supply the remaining wattage. This helps, but what happens to the 40%?
2. To use as much renewable energy as possible.
All about how the load and inverter is going to being managed.
During about my first year I was not using ESS and would only switch over to the grid if the SoC was too low, sometimes I had to go fully back onto the grid because the geyser switched on. But ESS helps, although I want to use as little from the grid as possible.
It is mid day and enough power is stored. I would rather use the stored power than the grid power to make up the balance of what PV cannot provide. .
If somebody switches on the stove or toaster and other loads that makes the inverter want to use power from the grid then a/some/all controlled loads should be switched off so that power from the grid is used on the uncontrolled load.
Reference to modes:
Determine minimum SoC:
Using mode 3 to control the discharge.
Grid setpoint is on 30W, but grid is being used instead of stored energy.
What is required in order to maintain the minimum SoC and control the battery discharge at the same time?
Min SoC = controlled by software
Battery discharge setpoint = controlled by software
Grid Setpoint = maintains the min SoC / supplies what battery + PV can't / outside inverter spec
I'm running the GX software on a Pi and have Modbus TCP enabled. I consume values in Home Assistant and it all works very well. Nice graphs for the SmartSolar charger, automatic kick in of a mains charger then the battery is low (using z-wave switches) etc etc, really happy with it all.
But, I just can't find a register that mirrors the VA values from the GX console for the Smart Phoenix 3000/24, certainly not at the resolution that shows. Does the GX software round the values (they're usual zero on low loads when the GX is showing 7-10VA)?
Thanks in advance for any tips.
I have 2 of S/E SE5000 on 2 phase rural grid (180 degree phase). one SE5000 is connected to a Multiplus 2 with an 8Kw Zenaji battery, as UPS also. Solaredge recomended separating the linking in this configuration. (System working fine)
I have an Emoncms server that has data from an IoTaWatt monitor. I want to read the battery state off the CCGX, & have already enabled Sunspec on the 2 of SE5000 (currently both on ID 126). The CCGX sees both of the SE5000´s, & lists their network addresses. Modbus is enabled on the CCGX, as werll as Auto scan. No Modbus devices are listed, however. I need to get this working so I can get the battery status (& info from the SE5000´s too if possible: would love access to the Optimiser data for instance, but first the battery status!
Emoncms has this assistance:
but of course no data until the CCGX sees the Modbus devices (Emoncms is configured as recommended)
One issue I may find is from my reading, only one SE5000 can be accessed on dev 126.