Skip to content

optio50/Victron_Modbus_TCP

Repository files navigation

Victron_Modbus_TCP

Victron Modbus TCP & MQTT Example

Confirmed working with pymodbus 3.6.3

These file's are based on a system that has victron equipment in an "ESS" system. Multiplus, Solar charger, BMV

Regarding the GX MQTT keepalive.
run the keep-alive on the cerbo (or Pi) its self.

The file's are provided above, named Keep-Alive.py and Forever.py
The Keep-Alive.py is run via a kind of pseudo monitoring script (forever.py).
Place both files in the cerbo /data directory and make sure they are set executable. edit the /data/rc.local file (nano rc.local) and make an entry that looks like this

#!/bin/bash   
sleep 30   
/data/forever.py /data/keep-alive.py &

ctrl+o to write the file to disk and ctrl+x to exit
reboot the cerbo and the keep-alive should do its job.
the sleep command is to ensure the cerbo has had time to accomplish a full startup routine.

If you want to run the keep-alive in the script instead of the standalone keep-alive you will need the MQTT request in the update_value function with a counter or timer.

An example of the Victron TCP Modbus.
If you intend to use this example for yourself it will require tweaking a few things.

For starters you should download the victron xlsx register file from https://github.com/victronenergy/dbus_modbustcp/blob/master/CCGX-Modbus-TCP-register-list.xlsx
Check the tabs for the relevant information. Especially tab #2 Unit ID Mapping

Change the GX device IP address. Port is standard 502

Check Instance #'s from Cerbo GX and cross referenced to the unit ID in the Victron TCP-MODbus register xls file.

Change the the instance #'s to their correct values

You likely dont have the 3 temperature sensors included. Change the variable to turn them on and off.

alt text

alt text

PyQT5-Multiple-Chargers.py
PyQT5-Multiple-Chargers.ui
alt text
alt text

TK-VictronSolar.py
alt text

PyQT5-No-Multiplus-Single-Charger-JBD-BMS.py
This file is for a Raspi and a single Victron SmartSolar Charger. Also includes a Serial UART BMS (JBD in my case).
I have no idea if this works with the other compatiable BMS's. I only have a JBD.
Venus OS Serial BMS info
https://github.com/Louisvdw/dbus-serialbattery
USB Serial interface https://overkillsolar.com/product/usb-module-for-bms/
The connector included did not fit my BMS, YMMV. I cut the BMS BlueTooth cable in half and soldered the UART wire's to the connector wire's
alt text

To install
git clone https://github.com/optio50/Victron_Modbus_TCP
cd Victron_Modbus_TCP
chmod +x MODBUS_Example.py
chmod +x MQTT_Example.py
pip3 install paho-mqtt
pip install pymodbus
Change the VRMid and ip address, turn the analog sensors on or off in the script.
./MODBUS_Example.py
or
./MQTT_Example.py

To use the PyQt files you will need to.

pip install paho-mqtt
pip install pglive
install PyQT5 with your package manager.
such as sudo apt install python3-pyqt5
and sudo apt install python3-pyqt5.qtwebengine

The PyQT5-Multiple-Chargers.py and PyQT5-Multiple-Chargers.ui are PYQT5 files that are used together.
Same with PyQT5-Single-Charger.py and PyQT5-Single-Charger.ui
Just run the .py file and the .ui file will auto load.
execute in the cloned directory as the icon file is in that location.
Your system theme / font will dictate the style and appearence of the Pyqt program.

You must have the correct Victron equipment. such as Multiplus with ESS, BMV, Solar charger, Venus GX device.

Releases

No releases published

Packages

No packages published

Languages