Repository navigation
Releases
v0.6.5
Please update directly to this version. It completes the fix from v0.6.4.
Fix: partial days in the daily statistic
The daily history was requested from "now minus 30 days" to "now". The portal then returns the first day as a partial day that starts at the time of the request. With a poll every 6 hours, the daily statistic (…_daily) got up to four extra rows per day at the wrong time. The v0.6.4 repair summed these rows up, which made the daily totals too high.
- The daily request now starts and ends at local midnight, and only complete days are imported.
- Rows from partial days that are already stored are set to 0 kWh, so they no longer appear in day or month totals. They cannot be deleted through the recorder import.
Fix from v0.6.4: negative values at 00:00 in the energy dashboard (#9)
Every history update restarted the cumulative sum at 0. Now it continues the sum that is already in the recorder.
Automatic repair
After the update, restart Home Assistant (HACS asks for it; reloading the integration does not load the new code). On the first poll after the start, the integration recomputes all its statistics once from the stored values, which also fixes the existing negative hours. No data is fetched again and nothing needs to be fixed by hand. The log shows Meter …: recomputed cumulative statistic sums. You may need to reload the energy dashboard in the browser. The repair also runs again for installations that already ran v0.6.4.
Also included
- The statistics import works again on Home Assistant below 2025.11 (from v0.6.4).
has_meanis only sent to Home Assistant versions below 2025.4.
No breaking changes.
🤖 Generated with Claude Code
v0.6.4 (withdrawn, use v0.6.5)
Superseded by v0.6.5. In this version the repair also summed up partial days in the daily statistic. Please update to v0.6.5. After the update, restart Home Assistant; reloading the integration is not enough.
Fix: negative values at 00:00 in the energy dashboard (#9)
After the first backfill, the energy dashboard could show a large negative value for the 00:00 hour on some days, even for meters that only consume. The cause: every history update restarted the cumulative statistic sum at 0. Every poll re-checks the last two days, so the sum dropped at 00:00 of the first re-checked day, and one more broken hour was added every day.
- History updates now continue the sum that is already in the recorder. Days that are re-checked or filled in later no longer cause a jump.
- Automatic repair: on the first poll after the update, the integration recomputes the sums of all its existing statistics (daily, hourly, 15 min) once from the stored hourly values. No new data is fetched and nothing needs to be fixed by hand. To start the repair right away, reload the integration. The log then shows
Meter …: recomputed cumulative statistic sums. You may need to reload the energy dashboard in the browser.
Fix: statistics import on Home Assistant below 2025.11
The statistic metadata contained fields that the recorder only accepts from HA 2025.4 (mean_type) or 2025.11 (unit_class). On older versions, every statistics import failed with an error in the log, so no history was imported at all. The integration now sends these fields only when the installed HA version supports them. The minimum version is still 2025.1.
No breaking changes.
🤖 Generated with Claude Code
v0.6.3
New Plotly dashboard example
The bundled Plotly Graph Card example (examples/plotly_netze_bw.yaml) has been redesigned:
- Grid balance: consumption as bars pointing up, feed-in pointing down, in average kW per hour. The tooltip shows kWh and kW.
- Daily totals in kWh above every fully loaded day
- Range buttons for 24 h / 3 days / 7 days (default 3 days)
- Data gaps are hatched, and the period for which Netze BW has not delivered data yet is dotted. Missing hours are no longer drawn as 0 kWh bars.
- Night shading now also works when the card is opened at night
Only the two statistic IDs need to be filled in. The "Last hourly history point" entities are no longer required. See the README for the screenshot and how to find the IDs.
Other changes
- The integration is now shipped as a release ZIP (
netze_bw_portal.zip), which HACS installs and counts as a download - Repository housekeeping (CODEOWNERS, license badge)
No changes to the integration code, no breaking changes.
🤖 Generated with Claude Code
v0.6.2
New: "Statistic IDs" diagnostic sensor
Recorder statistic IDs (needed for dashboard cards like the bundled Plotly example) are built from the internal installation ID plus direction and cannot be derived from entity names. Each meter device now exposes a diagnostic sensor "Statistic IDs" / „Statistik-IDs":
- State: the hourly statistic ID (
netze_bw_portal:..._hourly) — ready to copy into cards - Attributes: the daily, hourly and 15-minute variants
The README and the Plotly example now point to this sensor as the easiest way to find the IDs (#3).
No breaking changes.
🤖 Generated with Claude Code
v0.6.1
Brand asset cleanup
- Brand images (icon) are now shipped exclusively in
custom_components/netze_bw_portal/brand/, the location Home Assistant 2026.3+ serves via the local brands proxy API — the redundant repo-rootbrand/copy and a strayicon.pngwere removed - Added a hi-dpi
icon@2x.png(512×512) - README logo now uses an absolute URL so it renders in the HACS readme view
No functional changes. Note: the integration icon in the Home Assistant UI requires Home Assistant 2026.3 or newer.
🤖 Generated with Claude Code
v0.6.0
Breaking change: bidirectional meters now get separate consumption and feed-in devices
Fixes #3 — bidirectional meters (Zweirichtungszähler) previously only reported feed-in data when Netze BW delivered both value types through a single installation, or through two ambiguous installations.
Changes
- Each meter direction is now its own device: Bezug (grid consumption) and Einspeisung (feed-in)
- Works for all known portal variants: one installation per direction, one installation with both value types, and duplicate installations both claiming both value types (collapsed deterministically to one pair)
- Statistic IDs and entity unique IDs now include the direction, so the two directions can never collide
Upgrade notes
Entity, device and statistic IDs change with this release. After updating:
- Reload the integration (a restart works too)
- Remove the orphaned old entities/devices
- Re-select the new statistics in the Energy Dashboard
History is re-imported automatically from the portal for the configured backfill window (default 30 days).
🤖 Generated with Claude Code
v0.5.4
What's changed
- Hardened API requests with explicit timeouts and retry handling for transient 429/502/503 failures.
- Tightened config flow credential validation and auth-user response parsing.
- Improved history backfill error handling and added regression tests for the new reliability paths.
v0.5.3
v0.5.2
Handle expired portal sessions more robustly by retrying 401 responses after a bounded reauthentication with exponential backoff. Distinguish temporary login server failures from real authentication errors so maintenance windows do not permanently stop the integration. Add regression tests for single-retry reauth, bounded backoff, shared reauth under concurrent 401s, and align history logic tests with the current fetched-date API.
v0.5.1 — Fix HACS & Hassfest validation
Fixes
- Remove invalid
domainskey fromhacs.json - Add
recordertoafter_dependenciesinmanifest.json - Fix
manifest.jsonkey order (hassfest requirement:domain,name, then alphabetical)