Zum Inhalt springen
labkompass

Logbuch#homeos#energie#api#monitoring

Energie im Sekundentakt: Push statt Poll — und eine Spalte, die nur bremsen konnte

Von Niclas Hennrich · veröffentlicht · geschehen am


BuildIm Einsatz

Selbst gebaut und in Betrieb genommen. Gehört zum Vorhaben HomeOS — Control Center mit drei Säulen.

Messtakt der Steckdosen
5 s
Samples je Minute und Serie
6
Echte Quellen im Stream
5

Die Vergangenheit meines Energieverbrauchs lag längst sauber in VictoriaMetrics — drei Jahre Retention, Kalendertage aus den Zählerserien, keine zweite Ablage. Was fehlte, war die Gegenwart: Die Live-Ansicht holte sich den Energiefluss alle zehn Sekunden per Poll, und zwischen zwei Abfragen stand die Zahl still. Ich wollte den Steckdosen beim Arbeiten zusehen.

Drei Hebel, kein Neubau. Erstens ein eigener Push-Kanal per Server-Sent Events, der nach jedem Poll-Zyklus der Geräte feuert — die Quelle ist der vorhandene Geräte-Poller, nicht ein zweiter Weg zu den Steckdosen. Zweitens der echte Messtakt: Die Shellys liefern alle fünf Sekunden einen Wert, also darf der Stream auch alle fünf Sekunden sprechen. Drittens die Historie im Zehn-Sekunden-Raster, damit ein Chart der letzten Stunde nicht aus Stichproben besteht.

Die wichtigste Regel dabei: Push und Poll erzählen dieselbe Wahrheit. Der Stream schickt exakt das Antwortformat des bisherigen Endpunkts, inklusive Herkunft und Qualität je Wert. Im Frontend war der Wechsel damit ein Hook-Tausch, keine zweite Datenlogik — und bricht der Stream ab, fällt die Seite auf den Poll zurück, statt eingefrorene Zahlen zu zeigen.

Der Fund nebenbei. Der Poll-Takt war konfigurierbar, und ein früherer Audit hatte diese Attrappe „repariert". Halb: Der Wert wurde gelesen, aber nur angewandt, wenn er den Takt verlangsamte. Schneller ging nie. Eine Einstellung ist erst dann echt, wenn beide Richtungen nachweislich wirken — diesen Test gibt es jetzt.

Zweiter Stolperstein: Ein unendlicher SSE-Stream durch den Test-Client von FastAPI hängt dessen Portal beim Schließen. Die Lösung ist Struktur, nicht Trick: Der Generator ist eine Modulfunktion, die der Test direkt fährt; die Route bleibt ein dünner Wrapper.

Im Betrieb: Frames alle fünf Sekunden, fünf echte Quellen, Werte in Bewegung (528 → 535 → 533 W beim ersten Blick), exakt sechs Samples je Minute in der Historie. Ohne Zuschauer wird nicht gerechnet und nicht serialisiert — die Lehre aus einem älteren Audit, bei dem ein Sekunden-Poller 86 400 Requests am Tag erzeugte, gilt hier von Geburt an.