2026-05-02 23:12:29 +02:00
2026-05-02 23:12:29 +02:00
2026-05-02 23:12:29 +02:00
2026-05-02 23:12:29 +02:00
2024-05-14 09:22:06 +02:00
2021-02-03 11:19:58 +00:00
2026-05-02 23:12:29 +02:00
2026-05-02 23:12:29 +02:00
2026-05-02 17:40:31 +02:00

bmspy

bmspy is a tool to get information from a xiaoxiang-type BMS system, using some sort of serial connection.

It can display the information as text, in JSON, or export the data continuously to InfluxDB or a Prometheus exporter.

Multiple BMS/UPS devices can be connected at once. Each is identified by a name, and data from all of them (or just one) can be pushed to InfluxDB or Prometheus in the same connection, with each measurement tagged with the UPS name.

To install: git clone https://git.treehouse.org.za/tim/bmspy cd bmspy poetry install

Or, to install with influxdb and/or prometheus support: poetry install -E influxdb -E prometheus

Running the server

The server daemon reads from one or more serial devices and makes the data available over a Unix socket.

Single device (defaults to /dev/ttyUSB0):

poetry run bmspy-server

Multiple devices, with optional names (default name is derived from the device path, e.g. ttyUSB0):

poetry run bmspy-server -d network:/dev/ttyUSB0 -d nas:/dev/ttyUSB1

To run via systemd, copy bmspy-server.service to /etc/systemd/system, adjust WorkingDirectory and the ExecStart line as needed, then enable and start it:

cp bmspy-server.service /etc/systemd/system
$EDITOR /etc/systemd/system/bmspy-server.service
systemctl daemon-reload
systemctl enable bmspy-server
systemctl start bmspy-server

Running a client

To print a summary of all connected UPSes:

poetry run bmspy

To show only a specific UPS:

poetry run bmspy --ups network

To push data for all UPSes to InfluxDB (each measurement is tagged ups=<name>):

poetry run bmspy-influxdb --url https://influx.example.com --org myorg --token mytoken

To push data for a single UPS only:

poetry run bmspy-influxdb --ups network --url ...

InfluxDB connection details can also be supplied via environment variables (INFLUXDB_V2_URL, INFLUXDB_V2_ORG, INFLUXDB_V2_TOKEN) instead of command-line flags.

S
Description
bmspy can be used to get information from a xiaoxiang-type BMS system.
Readme CC-BY-SA-4.0 353 KiB
Languages
Python 100%