Skip to content

v0.3.0 — fewer questions, steadier dashboard

Latest

Choose a tag to compare

@teian teian released this 19 Aug 13:42
· 5 commits to main since this release
ec95313

Follow-up to 0.2.0: the poll cycle stops asking inverters for values they do
not have, and the dashboard stops blanking itself on every refresh.

Diagnostics

  • "Nicht verfügbar" is no longer reported as "keine Antwort". An inverter
    that lacks a value answers SMA error 21; both transports swallowed that into
    an empty result, so a definitive answer looked like a failure. Such an
    exchange now carries the outcome unsupported.
  • A refused query is asked once, then remembered. The refusal is stored per
    inverter in the new inverter_query_support table, and later cycles skip the
    query instead of spending a round trip on an answer that will not change.
    They still record it, at 0 ms, so the dashboard keeps showing why a value is
    absent. On a small single-phase inverter that removes four queries per cycle:
    phase-wise AC power, grid-relay status, temperature and grid metering.
  • Entries expire after 30 days, so a firmware update that adds a value is
    picked up on its own. DELETE FROM inverter_query_support; forces an
    immediate re-probe.

Web dashboard

The periodic poll emptied the chart and the diagnostics tables before
refetching, and a failed poll emptied the status cards — twice a minute the
dashboard looked like it was reloading. Views now keep their content while the
next payload is fetched and clear only when the range, inverter or period
actually changes. Chart series animate once and then swap values silently. A
failed poll keeps the last reading and shows an offline badge in the header.

Tooling

scripts/build-packages.sh builds the same archives and Debian packages as the
release workflow, into dist/, without publishing a release. See
docs/operations.md.

Upgrading

The diagnostics ring's outcome constraint gained a value, so a database
carrying the previous version has that ring recreated on first start: recent
transmission rows are lost, nothing canonical is. The canonical schema gains
inverter_query_support through migration 0002, applied automatically.

Bluetooth users coming from a hand-installed unit: 0.2.0 fixed
RestrictAddressFamilies, and a unit in /etc/systemd/system/ still wins over
the packaged one.

Full changelog: v0.2.0...v0.3.0

What's Changed

  • build the release packages locally by @teian in #9
  • tell a refused query apart from a silent one, and stop re-asking it by @teian in #10
  • update the dashboard in place instead of blanking it every 30 seconds by @teian in #11
  • release 0.3.0 by @teian in #12

Full Changelog: v0.2.0...v0.3.0

Docker images