|
2 | 2 |
|
3 | 3 | ## Next |
4 | 4 | - **Breaking:** Rebrand project from "B2500 Meter" to "AstraMeter" (formerly b2500-meter). Package renamed to `astrameter`, CLI commands are now `astrameter` and `astra-sim`. Docker image moved from `ghcr.io/tomquist/b2500-meter` to `ghcr.io/tomquist/astrameter`. Home Assistant users must update their app repository URL to `https://github.com/tomquist/astrameter#main`. |
5 | | -- Added MQTT Insights: optional `[MQTT_INSIGHTS]` section publishes internal state (grid power, targets, saturation, consumer topology, EMA-smoothed poll interval) to MQTT with Home Assistant Device Discovery and per-consumer active/pause control, manual target override, auto/manual target toggle, force efficiency rotation button, and Shelly battery offline availability; auto-configured in HA app when Mosquitto is installed |
6 | | -- Added 3-phase support for Tasmota powermeter: comma-separated `JSON_POWER_MQTT_LABEL` / input / output labels ([#136](https://github.com/tomquist/astrameter/issues/136)) |
7 | | -- Added multi-phase support for MQTT powermeter: multiple topics (`TOPICS`) or multiple JSON paths (`JSON_PATHS`) from a single topic ([#208](https://github.com/tomquist/astrameter/issues/208), [#280](https://github.com/tomquist/astrameter/pull/280)) |
8 | | -- Added support for emulating a *CT002/CT003*, which is recommended to steer multiple devices, with opt-in efficiency optimization for multi-battery setups: concentrates power on fewer batteries at low demand to avoid inefficient low-power operation, with hysteresis, time-based rotation for fairness, probe-based handoffs that keep the previous battery online until the promoted battery shows meaningful output, smooth fade transitions after a successful probe, and saturation-aware forced rotation when an active battery is stuck at near-zero output (`MIN_EFFICIENT_POWER`, `EFFICIENCY_ROTATION_INTERVAL`, `EFFICIENCY_FADE_ALPHA`, `EFFICIENCY_SATURATION_THRESHOLD`, `SATURATION_DECAY_FACTOR`, `SATURATION_GRACE_SECONDS`, `SATURATION_STALL_TIMEOUT_SECONDS`). `EFFICIENCY_SATURATION_THRESHOLD` now defaults to 0.4 (previously 0, disabled) so full/empty batteries are swapped out automatically; batteries that produce meaningful output but lag behind a fluctuating target are no longer falsely flagged as saturated; newly promoted batteries now get an explicit probe window that keeps grid tracking stable while slow real-world ramp-up is evaluated, while mid-interval saturation detection still catches batteries that stop following their target after the handoff. |
9 | | -- Added HomeWizard P1 powermeter support via the device WebSocket API with token and serial configuration ([#231](https://github.com/tomquist/astrameter/pull/231)), including optional `VERIFY_SSL` to disable TLS certificate verification on trusted networks when needed ([#254](https://github.com/tomquist/astrameter/pull/254)) |
10 | | -- Added SMA Energy Meter / Sunny Home Manager support via Speedwire multicast protocol with auto-detection and per-phase power readings ([#231](https://github.com/tomquist/astrameter/pull/252)) |
11 | | -- Added SML powermeter support for power readings from a smart meter over a local serial port (Smart Message Language / IR head), with optional per-phase OBIS overrides ([#229](https://github.com/tomquist/astrameter/pull/229)) |
12 | | -- Switched the Home Assistant powermeter integration from REST polling to the WebSocket API and improved missing/non-numeric sensor state handling ([#232](https://github.com/tomquist/astrameter/pull/232), [#193](https://github.com/tomquist/astrameter/pull/193)) |
13 | | -- Added optional Marstek cloud auto-registration for managed fake `ct002` and `ct003` devices at startup ([#237](https://github.com/tomquist/astrameter/pull/237)) |
14 | | -- Added battery activity info logs for Shelly emulation to report detection, inactivity, and reconnection events ([#241](https://github.com/tomquist/astrameter/pull/241)) |
15 | | -- Added `POWER_OFFSET` and `POWER_MULTIPLIER` transforms for any powermeter, including per-phase calibration, sign flipping, and phase nulling support, plus improved validation and logging with support for `POWER_MULTIPLIER = 0`, one-time phase-mismatch warnings, and preserved exception chaining for invalid float lists ([#250](https://github.com/tomquist/astrameter/pull/250)) |
| 5 | +- Added CT002/CT003 emulation for steering multiple Marstek storage devices over the Marstek CT UDP protocol, with opt-in efficiency optimization that concentrates power on fewer batteries at low demand and rotates fairly over time (`MIN_EFFICIENT_POWER`, `EFFICIENCY_ROTATION_INTERVAL`, and related tuning options) |
| 6 | +- Added MQTT Insights: optional `[MQTT_INSIGHTS]` section publishes internal state (grid power, targets, saturation, consumer topology) to MQTT with Home Assistant Device Discovery, per-consumer active/pause control, manual target override, and Shelly battery offline availability; auto-configured in the HA app when Mosquitto is installed |
| 7 | +- Added HomeWizard P1 powermeter support via the device WebSocket API with optional `VERIFY_SSL` ([#231](https://github.com/tomquist/astrameter/pull/231), [#254](https://github.com/tomquist/astrameter/pull/254)) |
| 8 | +- Added SMA Energy Meter / Sunny Home Manager support via Speedwire multicast with auto-detection and per-phase readings ([#252](https://github.com/tomquist/astrameter/pull/252)) |
| 9 | +- Added SML powermeter support for smart meters over a local serial port (IR head), with optional per-phase OBIS overrides ([#229](https://github.com/tomquist/astrameter/pull/229)) |
| 10 | +- Added multi-phase support for Tasmota (`JSON_POWER_MQTT_LABEL`) and MQTT (`TOPICS` / `JSON_PATHS`) powermeters ([#136](https://github.com/tomquist/astrameter/issues/136), [#280](https://github.com/tomquist/astrameter/pull/280)) |
| 11 | +- Added `POWER_OFFSET` and `POWER_MULTIPLIER` transforms for any powermeter, including per-phase calibration, sign flipping, and phase nulling ([#250](https://github.com/tomquist/astrameter/pull/250)) |
| 12 | +- Added optional Marstek cloud auto-registration for managed fake CT devices at startup ([#237](https://github.com/tomquist/astrameter/pull/237)) |
| 13 | +- Switched the Home Assistant powermeter integration from REST polling to the WebSocket API ([#232](https://github.com/tomquist/astrameter/pull/232)) |
16 | 14 | - Added `LOG_LEVEL` environment variable support for Docker and CLI runs ([#174](https://github.com/tomquist/astrameter/pull/174)) |
17 | | -- Reduced throttling output noise by replacing unconditional `print` calls in `ThrottledPowermeter` with structured logging (`logger.debug` for routine wait/fetch/cache messages; failures remain at error level) ([#251](https://github.com/tomquist/astrameter/pull/251)) |
18 | | -- Improved Shelly UDP server robustness by adding socket timeouts to avoid hangs during shutdown and testing ([#233](https://github.com/tomquist/astrameter/pull/233)) |
19 | | -- Fixed Modbus `UNIT_ID` handling and clarified Home Assistant entity ID configuration in the docs ([#191](https://github.com/tomquist/astrameter/pull/191), [#195](https://github.com/tomquist/astrameter/pull/195)) |
20 | | -- CI-built container images embed **`GIT_COMMIT_SHA`**; startup logs the git commit and `/health` JSON includes **`git_commit`** when set |
21 | | -- **Developer tooling:** Python **3.10+**; **uv** + **pyproject.toml** replace Pipenv; application code lives under **src/astrameter/**; **ruff**, **mypy**, and **pytest** (see [CONTRIBUTING.md](CONTRIBUTING.md)); CLI entry point **`astrameter`**; Docker and Home Assistant app images install the wheel and use the same command instead of `python main.py`. |
22 | 15 | - Added timestamps to application log lines ([#260](https://github.com/tomquist/astrameter/pull/260)) |
| 16 | +- CI-built container images embed `GIT_COMMIT_SHA`; startup logs the git commit and `/health` JSON includes `git_commit` when set |
| 17 | +- Fixed Modbus `UNIT_ID` handling ([#191](https://github.com/tomquist/astrameter/pull/191)) |
23 | 18 |
|
24 | 19 | ### Breaking |
25 | 20 | - The Home Assistant app no longer publishes images for 32-bit ARM (`armhf` / `armv7`). Installations must use a 64-bit Home Assistant OS or supervisor environment (`amd64` or `aarch64`), consistent with Home Assistant dropping 32-bit support. |
|
0 commit comments