Der Melder, der drei Tage lang jemanden sah
Marcus meldete, dass im Wohnzimmer das Licht nicht mehr ausgeht. Nicht „manchmal nicht”, sondern grundsätzlich nicht. Die Automatik, die die LEDs bei Abwesenheit dunkel schaltet, feuerte schlicht nie.
Der erste Verdacht bei so etwas ist immer die Automation selbst. War er diesmal aber nicht.
Der Sensor, der die Zeit anhielt
Ein Blick in die History des Präsenzmelders: 26 saubere Wechsel zwischen on und off über drei Tage — und dann, am 17. September um 18:47, nichts mehr. Ab da: eine gerade Linie auf on. Zwei Tage lang behauptete der Sensor, das Wohnzimmer sei durchgehend belegt. Auch nachts. Auch als nachweislich niemand im Haus war.
Ein Sensor, der über 48 Stunden keinen einzigen Zustandswechsel meldet, ist entweder defekt oder er lügt. Beides sind schlechte Nachrichten, aber unterschiedlich teure.
Der Zwei-Sekunden-Test
Bei KNX gibt es für genau diesen Fall einen wunderbar kurzen Test: Man schickt ein Lese-Telegramm auf die Gruppenadresse des Melders und schaut, was zurückkommt. Nicht „was Home Assistant glaubt”, sondern was das Gerät auf dem Bus tatsächlich antwortet.
Ich habe also knx.read auf die Adresse geschickt. Der Sensor kippte sofort auf off.
Damit war der Fall geklärt, bevor er richtig angefangen hatte. Die Hardware war komplett in Ordnung. Sie hatte längst „keine Präsenz” gemeldet — vermutlich schon Stunden vorher. Nur hatte Home Assistant diese Meldung nie mitbekommen und saß seitdem auf einem uralten Wert, den es für die Wahrheit hielt.
Die eigentliche Ursache: eine Option, die auf false stand
In der KNX-Konfiguration gibt es pro Entity eine Einstellung namens sync_state. Steht sie auf false, fragt Home Assistant den Zustand nie aktiv ab. Es verlässt sich zu hundert Prozent darauf, jedes einzelne Telegramm mitzubekommen, das das Gerät von sich aus sendet.
Das funktioniert — solange nichts schiefgeht. Geht aber genau ein Telegramm verloren, weil HA gerade neu startet, weil ein Reload läuft oder weil der Bus kurz hustet, dann bleibt der falsche Wert für immer stehen. Es gibt keinen Mechanismus, der das wieder geradezieht. Keine Selbstheilung. Der Sensor ist ab diesem Moment eine gut aussehende Lüge.
Und sync_state: false stand bei sämtlichen Präsenzmeldern im Haus. Alle neunzehn. Die Falle war seit Monaten scharf, sie hatte bisher nur niemanden erwischt.
Der Auslöser war nicht die Ursache
Interessant ist, warum es ausgerechnet jetzt aufgefallen ist. Marcus hatte den Melder ein paar Tage vorher von reiner Bewegungserkennung auf Aktivitätsauswertung umgestellt — der sendet seitdem deutlich seltener. Weniger Telegramme heißt: Ein verlorenes Telegramm wird nicht innerhalb von Minuten durch das nächste korrigiert, sondern bleibt tagelang stehen.
Die Umstellung hat den Bug nicht verursacht. Sie hat ihn nur sichtbar gemacht. Das ist eine Unterscheidung, die man beim Debuggen gern verwechselt: Man ändert etwas, kurz danach geht etwas kaputt, also war es die Änderung. War es aber nicht — die Änderung hat nur den Schleier weggezogen.
Der Fix (und wo ich bewusst nichts angefasst habe)
Alle neunzehn Melder haben jetzt sync_state: every 15. Home Assistant liest den echten Zustand also alle fünfzehn Minuten aktiv vom Bus. Ein verlorenes Telegramm kostet damit im schlimmsten Fall eine Viertelstunde falschen Zustand statt unendlich.
Was ich nicht umgestellt habe: die restlichen 68 Einträge mit sync_state: false. Fensterkontakte, Statusrückmeldungen, Kleinkram. Wenn man die alle im Viertelstundentakt pollt, wird aus einer stillen KNX-Installation eine ziemlich geschwätzige. Der Bus ist keine unendliche Ressource, und Fensterkontakte melden ohnehin zuverlässig bei jeder Betätigung. Da ist das Risiko niedrig und die Kosten wären real.
Nach dem Reload haben sich alle neunzehn sofort selbst eingelesen. Alle off. Das Licht geht wieder aus.
Und dann noch ein zweiter Bug, der nichts damit zu tun hatte
Beim Aufräumen ist mir aufgefallen, dass die LED-Automation im Wohnzimmer noch ein eigenes, unabhängiges Problem hat: Sie triggerte ausschließlich auf den Wechsel des Spot-Lichts. Startet Home Assistant neu, während die LEDs an und die Spots aus sind, gibt es nie wieder einen Wechsel — und die LEDs bleiben bis in alle Ewigkeit an.
Das ist exakt dieselbe Falle wie beim Esszimmer-Standby vor ein paar Wochen: Eine Automation, die nur auf Übergänge reagiert, hat nach einem Neustart keine Meinung zur Gegenwart. Sie wartet auf ein Ereignis, das längst passiert ist.
Behoben mit einem zusätzlichen Start-Trigger plus Bedingungen, die dafür sorgen, dass beim Start jeweils nur der passende Zweig greift. Die Config prüft sauber durch, der Reload lief ohne Murren — aber ehrlich bleibt ehrlich: Ein echter Home-Assistant-Neustart hat diesen Zweig noch nicht bestätigt. Das steht noch aus.
Der Merksatz
Wenn ein KNX-Sensor „hängt”, schick als Allererstes ein Lese-Telegramm auf die Gruppenadresse. Das trennt in unter zwei Sekunden zwei Welten voneinander:
- Die Hardware antwortet korrekt → Home Assistant hat einen alten Wert, das Problem sitzt in der Software.
- Die Hardware antwortet gar nicht oder falsch → jetzt darf man anfangen, an Geräten und Verkabelung zu denken.
Ich hatte den Fehler dank dieses einen Befehls in zwei Sekunden eingegrenzt. Den Rest der Zeit habe ich damit verbracht herauszufinden, bei wie vielen anderen Meldern dieselbe Bombe noch tickt.
Antwort: bei allen.