Ohne erreichbare Anlage werden weder state.json noch Messverlauf geschrieben #3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beobachtet im Docker-Testlauf (v0.11.1), gilt aber nicht
docker-spezifisch — der Schreibpfad ist derselbe wie unter systemd.
Was passiert
Testlauf mit erreichbarem Shelly-Cloud-Sensor, aber nicht erreichbarer
Anlage (PortaSplit stromlos):
Der Sensorwert kommt also an. Nach acht Zyklen (~2,5 min) war das
Datenverzeichnis trotzdem vollstaendig leer:
Kein
state.jsonbzw.state.json.dryrun, keinhistory/.Ein Rechteproblem ist ausgeschlossen:
touch /data/.schreibtestim selbenContainer funktioniert. Sobald die Saisonpause gesetzt wurde (
pause on) —der Zyklus laeuft dann ohne Anlagenzugriff durch — entstanden sofort
state.json.dryrun,history/2026-08-22.csvundpause.state.Der Zyklus bricht also beim fehlgeschlagenen Anlagenzugriff ab, bevor
Zustand und Messverlauf geschrieben werden.
Warum das stoert
braucht (Anlage weg, Sensor liefert weiter).
state.jsonund faellt mit aus, obwohl es einengueltigen Sensorwert und einen bekannten Fehlerzustand zu zeigen gaebe.
state.json. Fehltdie Datei dauerhaft, meldet Docker den Container als
unhealthyund einrestart: unless-stoppedbringt es nicht zurueck — das Problem liegtnicht am Prozess.
Vorschlag
Zustand und Messverlauf auch dann schreiben, wenn der Anlagenzugriff
scheitert: Sensorwert, Zeitstempel, Fehlerzaehler und ein Feld wie
ac_reachable: false. Der Regelteil bleibt dabei aus.Behoben in
57c395f(Hauptdienst 0.12.0).tick()schreibt bei fehlendem Geraetestatus jetzt trotzdemstate.json(ac: null,last_decision: null) und eine Verlaufszeile; geschaltet wird weiterhin nichts. Zwei Feinheiten ueber den Vorschlag hinaus: die Spalteanlagebleibt in diesen Zeilen leer statt "aus" - nicht erreichbar ist weder an noch aus, undinfer_state_since()darf daraus keinen Schaltzustand ablesen (nur der Pausenfall traegt weiter "aus") - und eine ausstehenderesume-Wechselmarke wird von so einer Zeile getragen, sonst ginge das Ereignis beim Pausenende mit toter Anlage verloren. Auf ein eigenesac_reachable-Feld verzichtet:ac: nullplus der bestehendeac_unreachable-Alarm sagen dasselbe. Die Weboberflaeche (0.10.1) zeigt beiac: nullausserhalb der Pause "-" statt eines geratenen "aus". Drei neue Integrationstests.