flespi: echtes Lesen statt Zwischenspeicher, und kein Gleichstand ohne Grundlage

Der Waechter meldete am 04.09.2026 "stimmt ueberein" fuer
trip_scenario.ign_off_timeout: 900 gegen unsere Konstante NACHLAUF_S = 900.
Das Geraet hat dort 0 - das Trip-Szenario ist abgeschaltet. flespis
Zwischenspeicher trug den Stand vom 01.09. 13:15, dreieinhalb Tage alt.
Der Eigentuemer hat es aufgedeckt: "die gelesenen werte sind veraltet".

Zwei Aenderungen:

1. "Jetzt lesen" leert erst den Zwischenspeicher der ueberwachten
   Einstellungen (DELETE /gw/devices/{id}/settings/{name} - die
   API-Entsprechung des Panel-Knopfes "clear cache and synchronize"; loescht
   den gespeicherten Wert, nicht den im Geraet) und holt dann neu.
   Einstellungen mit einem AUSSTEHENDEN Wert werden uebersprungen: dasselbe
   DELETE wuerde ihn verwerfen, und die Aenderung kaeme nie an - wie
   1003/1004, die am 04.09. acht Stunden in der Warteschlange standen.

2. `abweichung` ist dreiwertig: true, false und **null (kein Urteil)**. Null
   steht dort, wo ein Vergleich nichts aussagt - der Wert wurde nie vom
   Geraet bestaetigt, oder es ist gerade eine Aenderung unterwegs. Dazu
   traegt jede Zeile `gemeldet_am` (flespis `updated`), und beide
   Oberflaechen zeigen es an: "bestaetigt 01.09.2026 (4 T. alt)" bzw.
   "nie bestaetigt".

Ein stiller Gleichstand mit einem veralteten Wert ist schlimmer als gar kein
Vergleich: er behauptet Sicherheit, wo keine ist.

tsc sauber, 271 Tests, vite build sauber, Panel als Modul geparst,
py_compile sauber, audi_ha_test auf 2026.9.4.26 ohne Traceback.
This commit is contained in:
2026-09-05 01:11:23 +02:00
parent 9ac69cdf44
commit 5621b818cc
7 changed files with 175 additions and 21 deletions
+13 -1
View File
@@ -255,7 +255,15 @@ export interface DongleWert {
offen: unknown;
/** Unser eigener Wert, sofern es einen zu vergleichen gibt. */
unser: number | null;
abweichung: boolean;
/** Dreiwertig: true weicht ab, false stimmt überein, **null kein
Urteil** — der Wert wurde nie vom Gerät bestätigt, oder es ist
gerade eine Änderung zu ihm unterwegs. Bis zum 04.09.2026 war das
ein Bool, und `false` behauptete Übereinstimmung auch gegen einen
tagealten Wert. */
abweichung: boolean | null;
/** Wann das Gerät diesen Wert zuletzt bestätigt hat (flespis
`updated`) — null heißt: nie. */
gemeldet_am?: string | null;
}
export interface DongleStand {
@@ -264,6 +272,10 @@ export interface DongleStand {
anzahl?: number;
werte?: DongleWert[];
abweichungen?: number;
/** Zeilen ohne Urteil: nie bestätigt oder gerade unterwegs. */
unbekannt?: number;
/** Welche Zwischenspeicher dieser Abruf geleert hat. */
geleert?: string[];
/** Wie viele der gezeigten Werte noch zum Gerät unterwegs sind. */
offen?: number;
fehler: string | null;