Releases: teian/smalog
Release list
v0.3.0 — fewer questions, steadier dashboard
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 outcomeunsupported. - A refused query is asked once, then remembered. The refusal is stored per
inverter in the newinverter_query_supporttable, 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
- GHCR:
ghcr.io/teian/smalog:v0.3.0 - Docker Hub:
fgehann/smalog:v0.3.0 - GHCR latest:
ghcr.io/teian/smalog:latest - Docker Hub latest:
fgehann/smalog:latest - Platforms:
linux/386,linux/amd64,linux/arm/v7,linux/arm64
v0.2.0 — Bluetooth data collection
First release in which Bluetooth data collection actually works against real
inverters, plus a security fix in the MQTT dependency chain.
Bluetooth
- Requests are addressed per inverter, the way SBFspot does it: spot values
with control byte0xA0in a frame toaddr_unknown, archive commands with
0xE0in a frame addressed to the inverter itself, both carrying the
device's SUSyID and serial instead of theanywildcards. The previous
broadcast form left most queries unanswered. - Replies larger than one Bluetooth frame are reassembled. Such a reply
arrives split over several L1 frames whose continuations carry raw payload
behind their own header; both halves used to be discarded, so archive, DC and
AC queries ran into the 30-second retry budget every cycle. - The shipped systemd unit permits
AF_BLUETOOTH. Without it the client
could not even open a socket (os error 97). An existing installation can
either reinstallpackaging/smalog.serviceor add the override documented in
the README. - Raw frame capture for protocol debugging: set
capture_filein a
Bluetooth inverter entry, or run
smalog test-bluetooth --all --capture <file>. Every L1 frame is appended in
both directions as a hex line, before de-escaping and reassembly. Dropped
reply frames are now logged with the reason they were dropped.
Security
The MQTT client moved from the unmaintained rumqttc 0.25.1 to
rumqttc-v4-next. That clears four rustls-webpki advisories — one high
(GHSA-82j2-j2ch-gfr8, panic on a malformed CRL BIT STRING), one moderate and
two low — which are fixed only in the 0.103 line that no rumqttc release
depends on. The connection remains plain TCP; TLS is now a feature flag away on
a patched webpki.
Migration tool
migrate-sbfspot names the missing URL scheme when --source or --target
is given as a bare filesystem path, instead of quoting the leading directory as
a database engine. Engine errors now show complete example URLs.
Toolchain
Builds on Rust 1.97.1. The declared minimum supported Rust version is 1.89.
Upgrading
Install the package or binary for your architecture as usual. Bluetooth users
should reinstall the systemd unit (or apply the RestrictAddressFamilies
override) — otherwise the service still cannot open a Bluetooth socket.
Full changelog: v0.1.0-rc.1...v0.2.0
What's Changed
- read Bluetooth inverters again: SBFspot addressing, fragment reassembly, AF_BLUETOOTH by @teian in #6
- swap the MQTT client for rumqttc-v4-next and build on Rust 1.97.1 by @teian in #7
- release 0.2.0 by @teian in #8
Full Changelog: v0.1.0-rc.1...v0.2.0
Docker images
- GHCR:
ghcr.io/teian/smalog:v0.2.0 - Docker Hub:
fgehann/smalog:v0.2.0 - GHCR latest:
ghcr.io/teian/smalog:latest - Docker Hub latest:
fgehann/smalog:latest - Platforms:
linux/386,linux/amd64,linux/arm/v7,linux/arm64
v0.1.0-rc.1 — first release candidate
What's Changed
- feat(diagnostics): System dashboard area for poll transmissions and application log by @teian in #1
- feat(packaging): Debian packages for Raspberry Pi (armhf, arm64) by @teian in #2
- ci(release): tie the release tag to the crate version by @teian in #3
- fix(docker): rebuild workspace crates instead of linking the stubs by @teian in #4
- chore(ui): build on Node 24, the current LTS line by @teian in #5
New Contributors
Full Changelog: https://github.com/teian/smalog/commits/v0.1.0-rc.1
Docker images
- GHCR:
ghcr.io/teian/smalog:v0.1.0-rc.1 - Docker Hub:
fgehann/smalog:v0.1.0-rc.1 - Platforms:
linux/386,linux/amd64,linux/arm/v7,linux/arm64