Choose libmosquitto and an own HA discovery layer

D14: libmosquitto from Debian, shipped in the package (Qt MQTT needs the
exact Qt version; nothing on the Frame). D15: own device-based discovery
layer on Qt's JSON classes. Document the libraries per requirement and
what the Frame provides (Qt modules, OpenSSL 3.2.1, glibc 2.39).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 19:50:39 +02:00
co-authored by Claude Opus 5.5
parent ba6302a4c0
commit ed8b2237bd
3 changed files with 110 additions and 4 deletions
+14 -2
View File
@@ -13,8 +13,8 @@ CLAUDE.md ("Working rules").
Phase 2 for the MVP scope (D8: MQTT connection + discovery + availability, the MVP sensors, a
basic notification). Design topics, proposed order:
1. Q4: MQTT client library (licence, availability on SteamOS, TLS/login, Qt event-loop
integration, deployment).
1. ~~Q4: MQTT client library~~: done, libmosquitto (D14). Remaining for the design: Qt
event-loop integration, shipping the library in the package (build + `install.sh`).
2. Component structure: configuration, MQTT/discovery layer, sensor sources, notification
service; how they fit into `Dashboard` (the app class).
3. HA entity model: topics, discovery payloads, availability, device grouping (CON-2/3/5,
@@ -31,6 +31,18 @@ whether they constrain the MVP architecture.
### 2026-10-05: requirements approved
- User approved REQUIREMENTS.md including the priorities (D13). Phase 2 started.
- Q4 decided: libmosquitto, shipped in the package (D14). Qt MQTT ruled out: private Qt API
requires the exact Qt version. Checked on the Frame: no MQTT library installed; libssl/
libcrypto 3 and libcjson 1 present.
- HA discovery: own small layer on QJson, device-based discovery (D15); hacpp and the
embedded libraries rejected.
- Checked on the Frame which Qt modules, plugins and audio/network tools exist; library list
per requirement in REQUIREMENTS.md Appendix C. Notable: Qt WebEngine and Qt WebSockets are
present (relevant for Q2/Q3).
- libmosquitto ABI check: Debian's 2.0.21 needs at most `OPENSSL_3.0.0`/`GLIBC_2.34`; the
Frame has OpenSSL 3.2.1 and glibc 2.39. No libcjson dependency. D14 holds.
- Stay with the Debian build container: an Arch container wouldn't match SteamOS's own package
versions (private repos, rolling Arch) and has no arm64 multiarch for cross builds.
### 2026-10-04/05: project set-up and requirements