[Session 2026-06-19] Heizraum-Knoten Kessel-Ausgang + MQTT-Broker auf mosquitto #119

Open
opened 2026-06-19 18:47:02 +00:00 by orbitalo · 0 comments
Owner

Was wurde gemacht

  • Heizraum-Knoten (ESP32) um Kessel-Schaltausgang (GPIO16, Relais, NC-failsafe, Watchdog, Display) erweitert; 5 digitale Eingaenge mit millis()-basierter Entprellung (100-Hz-tauglich) fertiggestellt.
  • Mehrere Bugfix-Runden als Supervisor begleitet (Cline hat implementiert/geflasht): Relais-Logik invertiert (kritisch, sicherheitsrelevant), On-Confirm-Entprellung killte gepulste Signale, Serial-Firehose gedrosselt, FW-Version-Marker per Build-Flag.
  • Hartnaeckiger "cmd/kessel kommt nicht an"-Bug end-to-end diagnostiziert und geloest.
  • FW-Endstand: Commit 557aafc (verifiziert via heizraum/state/fw).

Aenderungen an Infrastruktur

  • CT 143: Dedizierter mosquitto 2.0.21 (systemd) als produktiver MQTT-Broker auf 192.168.178.36:1883 installiert.
  • ioBroker mqtt.0 auf Port 1884 verschoben (nur intern).
  • ioBroker mqtt.2 neu als Client-Bridge zum mosquitto (subscribe heizraum/#) → fuettert ioBroker-Objekte. mqtt.1 (openWB) unveraendert.
  • OpenMemory aktualisiert: veralteter Eintrag "1883 = ioBroker mqtt.0" geloescht, neue Architektur + Learning gespeichert.

Erkannte Probleme

  • Root-Cause (geloest): ioBrokers eingebauter MQTT-Broker-Adapter ist fuer Geraete-Pub/Sub UNGEEIGNET — Live-Publishes wurden unzuverlaessig an Subscriber zugestellt, vom Geraet publizierte retained-States (state/kessel) nicht propagiert. Bewiesen durch unabhaengigen mosquitto_sub, der ebenfalls Live-Messages verlor.
  • Diagnose-Falle: Serial-Log [KESSEL] Befehl: ABSCHALTEN war kein Live-Beweis — es war die retained-Message beim Subscribe (anderer Pfad). Kostete ~4 unnoetige Firmware-Runden.
  • Kosmetik: FW-Marker hing zeitweise einen Commit zurueck (Build vor Commit); am Ende behoben.

Naechste Schritte

  • Roundtrip ist live gruen (cmd 1->state 1, cmd 0->state 0, ungueltige Payloads ignoriert, Safe-State 0). Keine offene ESP-Arbeit.
  • Optional/geplant: Anti-Takt-Automatik in ioBroker (Brennerstarts/h zaehlen -> Sperrzeit erzwingen + Push), Auswertung Waermetrassen-Verlust Nebengelass (ΔT nur bei laufender Pumpe auswerten, fuer kWh zusaetzlich Durchfluss noetig).
  • Motivation/Kontext: Kessel-Takten aus der Ferne (User war letzten Winter in Takeo/Kambodscha) — jetzt fernueberwach- und schaltbar.

Lessons Learned

  • Bei "Befehl kommt nicht an"-Problemen ZUERST den Broker mit zwei dummen CLI-Clients (mosquitto_pub/sub) gegentesten, bevor die Firmware mehrfach umgebaut wird.

Betroffene Systeme

CT 143 (ioBroker/mosquitto, pve-mu-3), ESP32 Heizraum-Knoten, Repo orbitalo/heizraum-knoten, OpenMemory (CT 122)

## Was wurde gemacht - Heizraum-Knoten (ESP32) um Kessel-Schaltausgang (GPIO16, Relais, NC-failsafe, Watchdog, Display) erweitert; 5 digitale Eingaenge mit millis()-basierter Entprellung (100-Hz-tauglich) fertiggestellt. - Mehrere Bugfix-Runden als Supervisor begleitet (Cline hat implementiert/geflasht): Relais-Logik invertiert (kritisch, sicherheitsrelevant), On-Confirm-Entprellung killte gepulste Signale, Serial-Firehose gedrosselt, FW-Version-Marker per Build-Flag. - Hartnaeckiger "cmd/kessel kommt nicht an"-Bug end-to-end diagnostiziert und geloest. - FW-Endstand: Commit `557aafc` (verifiziert via `heizraum/state/fw`). ## Aenderungen an Infrastruktur - **CT 143:** Dedizierter **mosquitto 2.0.21** (systemd) als produktiver MQTT-Broker auf `192.168.178.36:1883` installiert. - **ioBroker mqtt.0** auf Port **1884** verschoben (nur intern). - **ioBroker mqtt.2** neu als Client-Bridge zum mosquitto (`subscribe heizraum/#`) → fuettert ioBroker-Objekte. mqtt.1 (openWB) unveraendert. - OpenMemory aktualisiert: veralteter Eintrag "1883 = ioBroker mqtt.0" geloescht, neue Architektur + Learning gespeichert. ## Erkannte Probleme - **Root-Cause (geloest):** ioBrokers eingebauter MQTT-Broker-Adapter ist fuer Geraete-Pub/Sub UNGEEIGNET — Live-Publishes wurden unzuverlaessig an Subscriber zugestellt, vom Geraet publizierte retained-States (state/kessel) nicht propagiert. Bewiesen durch unabhaengigen mosquitto_sub, der ebenfalls Live-Messages verlor. - **Diagnose-Falle:** Serial-Log `[KESSEL] Befehl: ABSCHALTEN` war kein Live-Beweis — es war die retained-Message beim Subscribe (anderer Pfad). Kostete ~4 unnoetige Firmware-Runden. - **Kosmetik:** FW-Marker hing zeitweise einen Commit zurueck (Build vor Commit); am Ende behoben. ## Naechste Schritte - Roundtrip ist live gruen (`cmd 1->state 1`, `cmd 0->state 0`, ungueltige Payloads ignoriert, Safe-State 0). Keine offene ESP-Arbeit. - Optional/geplant: Anti-Takt-Automatik in ioBroker (Brennerstarts/h zaehlen -> Sperrzeit erzwingen + Push), Auswertung Waermetrassen-Verlust Nebengelass (ΔT nur bei laufender Pumpe auswerten, fuer kWh zusaetzlich Durchfluss noetig). - Motivation/Kontext: Kessel-Takten aus der Ferne (User war letzten Winter in Takeo/Kambodscha) — jetzt fernueberwach- und schaltbar. ## Lessons Learned - Bei "Befehl kommt nicht an"-Problemen ZUERST den Broker mit zwei dummen CLI-Clients (mosquitto_pub/sub) gegentesten, bevor die Firmware mehrfach umgebaut wird. ## Betroffene Systeme CT 143 (ioBroker/mosquitto, pve-mu-3), ESP32 Heizraum-Knoten, Repo `orbitalo/heizraum-knoten`, OpenMemory (CT 122)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: orbitalo/homelab-brain#119
No description provided.