0.4.0: the meter transports that fit this house

TEL-04 and TEL-05 merged without a version bump, so Home Assistant would not
have offered the update - the same trap DEPLOY-01 caught at 0.2.1, recurring
because merging a feature does not touch the version.

ha_signed reads one signed entity. homewizard_local polls the meter's own API,
where every HTTP response is a genuine arrival - the property the firmware
watchdog needs, and the one HA cannot provide for a repeated reading.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
glenn schrooyen
2026-08-26 01:31:54 +02:00
co-authored by Claude Opus 5
parent 08f17f65dd
commit c70239cac2
2 changed files with 31 additions and 1 deletions
+30
View File
@@ -1,5 +1,35 @@
# Changelog
## 0.4.0
**TEL-04.** `meter_source: ha_signed` reads a single *signed* power entity, which
is the shape a HomeWizard P1 publishes. Both transports 0.3.0 shipped require two
unsigned registers and refuse negatives, so neither fits the meter installed here.
**TEL-05.** `meter_source: homewizard_local` polls the meter's own local API
directly. This exists because of something the HA paths cannot do: Home Assistant
fires no state change for a repeated reading and exposes no arrival signal at
all, so `sensor.p1_sample_age_s` on those transports measures time since the
*value changed*, not since the meter *reported*. Real captured data has gaps of
42 s and 97 s between changes on a perfectly healthy meter - long enough for a
30 s staleness threshold to command 0 W for no reason. Every HTTP response to the
local API is a genuine arrival, so the age means what it says.
Verified on the rig against a literally constant 350.0 W for 70 s - the exact
state where the HA path recorded zero samples in 45 s - with 14 arrivals and the
age never exceeding the poll cadence.
Set `p1_host` to the meter's address and `meter_poll_s` (default 5 s, matching
the meter's own ~5 s update). Still defaults to `off`; nothing changes for an
install that does not opt in.
Freeze detection is separate and deliberately not thresholded: a meter answering
200 OK with a stale number *is* arriving, so no arrival stamp can flag it. The
energy registers carry that as `unchanged_s`, surfaced on the status line for a
human to read rather than alarmed on - at a converged -10 W a 1 Wh register needs
about six minutes to move, so any threshold would false-trip at the target
operating point.
## Unreleased
**TEL-05.** A fourth `meter_source`, `homewizard_local`, which polls a
+1 -1
View File
@@ -1,5 +1,5 @@
name: GoodWe RS485 Controller
version: "0.3.0"
version: "0.4.0"
slug: goodwe_controller
description: >-
Drives a GoodWe ES/BP battery inverter over RS485 by emulating its smart