KapfenbergDrei Orte, ein AlltagNetz und MesstechnikEinstieg und Betrieb

Kapfenberg stand an einem Tag

Die dritte Installation war die schnellste — nicht weil ich besser war, sondern weil die ersten beiden aufgeschrieben waren. Plus eine Messung ohne Anlass.

Kapfenberg war die dritte Instanz, einen Tag nach Wien und drei Wochen nach Meran. Sie stand an einem Tag.

Nicht, weil ich schneller geworden wäre. Sondern weil Meran und Wien jede Falle schon getreten hatten und jemand sie aufgeschrieben hat.

Trotzdem sind an diesem Tag drei Dinge dazugekommen, die es vorher nicht gab.

Das Add-on reicht nicht — es fehlt eine Zeile

Home Assistant hat ein Add-on namens „Terminal & SSH“. Installieren genügt nicht.

Ohne die Portabbildung 22/tcp: 22 ist es nur ein Terminal im Browser. Eine Zeile in der Add-on-Konfiguration entscheidet darüber, ob man von außen mit einem Schlüssel hineinkommt oder ob man für jeden Befehl die Oberfläche aufmachen muss.

Der Schlüssel selbst ist ein ed25519, angelegt am Einrichtungstag — und zwar in der Bash, nicht in der PowerShell. Warum das wichtig ist, steht im Meraner Artikel: Dort hat genau das einen halben Abend gekostet.

unknown_error heißt nicht „fehlgeschlagen“

Das Skript, das das Add-on installieren sollte, brach ab:

Supervisor POST /store/addons/core_ssh/install fehlgeschlagen:
{'code': 'unknown_error', 'message': ''}

Eine leere Meldung, ein Abbruch. Das Add-on war trotzdem installiert.

Die Erklärung ist unspektakulär und folgenreich: Die benutzte Schnittstelle meldet unknown_error, sobald die Antwort des Supervisors kein JSON ist. Das passiert bei einer Installation ebenso wie beim Abrufen eines Protokolls. Der Aufruf hat gewirkt — nur die Rückmeldung kam nicht durch.

Daraus ist eine Regel für alle Skripte in allen drei Wohnungen geworden:

Nach einem schreibenden Aufruf wird der Zustand nachgemessen, nicht der Rückgabewert geglaubt. Ein unknown_error ist kein Abbruchgrund.

Ein Rückgabewert ist eine Behauptung über das Ergebnis. Der Zustand ist das Ergebnis.

Die erste Integration kam ungefragt

Am Pi hing ein Zigbee-Stick. Ich hatte ihn nicht gesucht: Home Assistant hatte ihn per USB erkannt und den Einrichtungsdialog schon offen stehen.

Das ist bequem und genau deshalb heikel. Ein neues Zigbee-Netz hätte alle Geräte abgehängt, die vorher schon an diesem Stick angelernt waren.

Also eine Rückfrage, bevor der Dialog fortgesetzt wurde: Ist der Stick fabrikneu? Er war es. Erst danach wurde das Netz angelegt.

Ein Dialog, der von selbst aufgeht, ist keine Empfehlung. Er ist nur ein Dialog.

Übrigens zeigt der serielle Pfad auf die Geräte-Kennung, nicht auf ttyUSB0. Die Nummer kann sich nach einem Neustart verschieben, die Kennung nicht — ein Detail, das sich erst rächt, wenn ein zweites USB-Gerät dazukommt.

Die Messung, die zwei Monate lang nichts genützt hat

Am Einrichtungstag war noch kein einziges Gerät am Stick. Trotzdem habe ich nachgemessen, ob sich Zigbee und WLAN ins Gehege kommen — beide teilen sich das 2,4-GHz-Band:

Frequenz
WLAN, Kanal 1 (an allen drei Verstärkern gleich) 2402–2422 MHz
Zigbee, Kanal 20 2450 MHz

Kein Überlapp, 26 MHz Abstand. Der Kanal, den die Software sich selbst ausgesucht hatte, war zufällig der bestmögliche. Ein Befund ohne jeden Nutzen an diesem Tag, aufgeschrieben in drei Zeilen.

Am 7. November war er plötzlich Geld wert. Beim Wechsel auf eine andere Zigbee-Software schlug deren Dialog Kanal 11 vor und hatte ihn bereits geschrieben:

Zigbee-Kanal 11   2405 MHz   mitten im belegten WLAN

Für dieses Haus die schlechtestmögliche Wahl. Umgestellt auf 20, bevor das erste Gerät angelernt war.

Hätte da schon eines gehangen, hätte es ein Neuanlernen gekostet. Und wäre es gar nicht aufgefallen, hätte das Haus monatelang ein Zigbee-Netz im WLAN-Rauschen betrieben — und ich hätte später die Reichweite verdächtigt, die Batterien, die Wände. Alles falsch, und alles plausibel.

In Meran lag das WLAN auf Kanal 11, und dort war Zigbee 20 genau die falsche Wahl. Dieselbe Empfehlung, zwei gegenteilige Ergebnisse — weil es keine Empfehlung ist, sondern eine Messung.

Wozu SSH überhaupt — und die Ironie dabei

SSH war kein Selbstzweck. Die http:-Sektion in der Konfigurationsdatei lässt sich über die Schnittstelle nicht schreiben; es gibt keinen Endpunkt dafür. Ohne Dateizugriff keine Absicherung des Fernzugriffs, also SSH.

Und noch am selben Tag stellte sich heraus, dass diese Sektion seit einer bestimmten Fassung ohnehin nichts mehr bewirkt — die Einstellung wandert einmalig in einen internen Speicher, und ab da gewinnt der.

Der Hinweis wurde hier aufgeschrieben, mitsamt dem Satz, dass Wien und Meran genauso betroffen sind. Wien wurde zehn Tage später aktualisiert, und ich habe ihn nicht gelesen — das hat einen ganzen Abend gekostet.

Der Grund, aus dem ich SSH eingerichtet habe, war hinfällig, bevor der Schlüssel eine Woche alt war. Der Zugang war es nicht.

Geblieben ist er für das, was ich nicht geplant hatte: Protokolle lesen. Was der eingebaute Umweg nicht herausgibt, holt ein Einzeiler über SSH direkt vom Gerät.

Was ich dir rate

  1. Prüf die Portabbildung, nicht nur die Installation. Ein Add-on, das läuft, ist noch kein Zugang von außen.
  2. Glaub keinem Rückgabewert. Miss nach einem schreibenden Aufruf den Zustand, besonders wenn die Fehlermeldung leer ist.
  3. Beantworte eine ungefragte Einrichtung mit einer Rückfrage. Ein Dialog, der von selbst aufgeht, weiß nichts über das, was du schon hast.
  4. Miss den Funkkanal am ersten Tag, auch wenn noch nichts dranhängt. Es kostet drei Zeilen.
  5. Schreib den Hinweis für die Schwesterinstallation auf — und lies ihn danach auch.

Und was heißt das?

Von diesem Tag ist keine einzige Automatisierung übrig. Es gab noch nichts zu automatisieren — 25 Entitäten, ein leeres Zigbee-Netz, ein Terminal.

Übrig sind: eine Regel über Rückgabewerte, eine Rückfrage, die ein Netz gerettet hat, und drei Zeilen über Funkkanäle, die zehn Wochen lang überflüssig aussahen.

Das ist der Unterschied zwischen der ersten Installation und der dritten. Nicht Geschwindigkeit, nicht Routine — sondern dass die ersten beiden aufgeschrieben sind. Zweimal hat mich das an diesem Tag einen Umweg gespart. Und einmal hat es mich zehn Tage später einen gekostet, weil ich meine eigene Notiz nicht gelesen habe.