juamiso / ANT_BMS

Python Script for raspberry reading BMS Ant parameters via Bluetooth
38 stars 11 forks source link

Description

This is a set of python scripts used for controlling a DIY battery storage for a Photovoltaic based system. Two python scripts plus a iobroker installation on a raspberry pi.

bms_post.py is used to parse the information coming via bluetooth from a china made Battery Monitoring System which is taking care of a 16s LIFEPO 100Ah bank. The type of BMS is ANT (can be found on aliexpress) The script reads info from the serial port and sends it via simple_api to iobroker signals

si_control.py is the main control script: It reads some information directly from the pI (ADC converter reading battery pack voltage) as well as grid and photovoltaic powers (using TCP Modbus from a Fronius Inverter). Some signals are read from iobroker via simple_api.

There is a branched influxdb variant, which is simpler and more robust. It dows not need iobroker to run since it posts directly from the python script to the influxdb server

To be able to automatically connect to the bluetooth of the BMS this solution uses the following:

This is part of the si_control.py file

# Define Serial port (over bluetooth) for BMS
ser_blue = serial.Serial(
    port='/dev/rfcomm0',
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout = 0)

And in /etc/bluetooth/rfcomm.conf put

rfcomm0 {
    # Automatically bind the device at startup
    bind yes;

   # Bluetooth address of the device
    device AA:BB:CC:A1:23:45;

    # RFCOMM channel for the connection
    channel 0;

    # Description of the connection
    comment "BMS";
}