Commit Graph

21 Commits

Author SHA1 Message Date
tim ff578f1889 Add typing, as well as a new UPS type that should be inherited by all new models 2026-05-02 18:08:55 +02:00
tim 973dc9bc96 Fix formatting 2026-05-02 17:40:31 +02:00
tim ad58fc8bc2 Add debugger 2026-05-02 17:40:31 +02:00
tim 4f54b9be36 Extract out classes that should be common to all UPS models 2026-05-02 17:40:31 +02:00
tim f2ffc4568a Add multi-device support
server.py
  - --device is now repeatable (-d ups1:/dev/ttyUSB0 -d ups2:/dev/ttyUSB1). Bare paths (/dev/ttyUSB0) auto-name from the last path component (ttyUSB0).
  - Maintains {name: {ser, data, timestamp}} per UPS — each device has independent data freshness.
  - GET response is now {ups_name: JBDUPS}. Accepts optional ups key in the request to return only one.

client.py
  - read_data() gains ups=None parameter — pass a name to filter server-side, or omit for all.
  - Always returns {ups_name: JBDUPS}.

influxdb.py
  - influxdb_create_snapshot() iterates {name: JBDUPS} and tags every InfluxDB point with ups=name.
  - influxdb_export() / bmspy-influxdb gain --ups to export only a specific UPS.

__init__.py
  - bmspy CLI gains --ups to display only a named UPS.
  - Displays each UPS under a === name === header.
2026-05-02 17:40:31 +02:00
tim 827f59cf49 Update from influxdb_client to influxdb_client_3 2026-05-02 17:40:31 +02:00
tim a782e19563 Update Python minumum version to allow new dependencies
Add a manual pin to typing-extensions >= 4.13, as lower versions that might already be installed will break on Python >= 3.14
2026-05-02 17:40:31 +02:00
tim 4b13450b65 Refactor data dict into a proper JBDUPS class. 2026-05-02 17:40:31 +02:00
tim b672c9f5ae Add UPS functionality 2024-05-14 09:22:06 +02:00
tim af97e393f6 Improve documentation, and improve systemd service files 2024-05-09 09:43:06 +02:00
tim cae4d1b0a4 Use JSON for serialising requests/responses, rather than pickle, to make C integration easier 2024-05-09 09:42:59 +02:00
tim dab791fb79 Refactor into a client/server model, to enable multiple clients to access the BMS data 2024-04-30 17:28:14 +02:00
tim 81fa555402 Fix invalid call 2024-04-28 13:53:18 +02:00
tim ae26cdf3c6 Shift functions around for poetry 2024-03-21 20:58:30 +02:00
tim be75d8fd88 Convert to using poetry to run bmspy 2024-03-19 22:28:39 +02:00
tim 2815665d2f Add some debugging when DB libraries are not found 2024-03-19 22:14:16 +02:00
tim 10bf0b4f1e Whitespace cleanups; rename InfluxDB field from "gauge" to "value"
... this abandons Prometheus "compatibility" for a better fit with InfluxDB naming.
2021-07-23 21:29:57 +02:00
tim 4e68925d34 Fix some issues with raw values 2021-07-22 14:55:14 +02:00
tim c174022d98 Add influx exporter
... as well as turning debug and ser into global variables (for ease of cleanup). Influx, unlike Prometheus, requires typed values, so a raw_value field has been added to the data structure: value is a string, raw_value keeps its type.
2021-07-22 02:57:27 +02:00
tim 951013f0b8 Add bms.py. 2021-02-03 13:23:18 +02:00
tim 0ac9c62ddb Initial commit 2021-02-03 11:19:58 +00:00