Hallo zusammen! 
Das Netatmo-Projekt geht weiter! Bevor wir mit der Entwicklung der Integration der Kameras (der alte PR #2032, automatisch wegen Inaktivität geschlossen — ein neues, dediziertes Thema kommt sehr bald) wieder starten, haben wir beschlossen, zunächst den aktuellen Service zu bereinigen: eine vollständige Überprüfung der Service-Historie, gefolgt von einer Reihe gezielter Korrekturen.
Ergebnis: 4 PRs, alle getestet und unter realen Bedingungen auf meiner Installation validiert (Thermostat, etwa ein Dutzend Ventile, Relais, Wetterstation und ihre Module — darunter mehrere Geräte absichtlich ohne Strom, was übrigens einen schönen Bug aufgedeckt hat
).
Die 4 PRs (in der empfohlenen Merge-Reihenfolge)
1. #2620 — Erkennung von Geräten ohne Strom
zuerst zu mergen
Ein einziges Modul ohne Strom in Ihrem Haus (z. B. das Relais einer Wärmepumpe, die außerhalb der Heizsaison abgeschaltet ist) reichte aus, um die Entdeckungseite komplett einzufrieren (Notwendigkeit, die Seite neu zu laden), mit einem Gerät namens „undefined“. Diese Module werden jetzt sauber aus der API (Name, Raum) neu aufgebaut, mit einer klaren Nachricht „Gerät nicht erreichbar… (Code: 6)“ angezeigt, als offline markiert und können weiterhin registriert werden — ihre Werte werden wieder hochgeladen, sobald sie wieder mit Strom versorgt werden.
2. #2617 — Werte von null gehen nicht mehr verloren
0 mm Regen, 0 °C, Wind aus Nord (0°), Böen mit 0 km/h… wurden als „fehlende“ Werte behandelt (ersetzt durch möglicherweise unterschiedliche Backup-Daten oder als leere Zustände gesendet). Das ist korrigiert: eine Null ist ein echter Wert, und kein Phantomzustand wird mehr gespeichert, wenn die Daten tatsächlich fehlen.
3. #2618 — Robustheit der Verbindung
- ein fehlgeschlagener Thermostatbefehl stürzt den Service nicht mehr lautlos ab: der Fehler wird jetzt korrekt weitergeleitet und protokolliert (Server-Logs + Service-Status sichtbar auf den Integrationsseiten). Anmerkung: Das Gladys-Dashboard zeigt noch keine Befehlsfehler an — das ist eine allgemeine Einschränkung des Gladys-Kerns (asynchrone Architektur der Aktionen), diese PR legt die Voraussetzung dafür, dass eine zukünftige visuelle Rückmeldung möglich wird;
- das Zugriffstoken wird bei 80 % seiner Lebensdauer aktualisiert (früher: genau bei Ablauf, mit einem Fenster für ein abgelaufenes Token);
- die Gerätewerte werden sofort nach der OAuth-Verbindung abgerufen (früher: bis zu 2 Minuten Wartezeit);
- Ende der Funktionen mit der Bezeichnung „Minimum in undefined“ für Module ohne Raum.
4. #2619 — Interne Refactorisierung (basierend auf #2617)
Die 8 duplizierten Update-Dateien werden durch eine einzige deklarative Tabelle ersetzt: -370 Codezeilen, keine Verhaltensänderung (die gesamte Testreihe läuft ohne eine einzige erwartete Wertänderung). Es ist vor allem die Grundlage, die die Hinzufügung zukünftiger Gerätetypen — die Kameras! — viel einfacher machen wird.
Qualität
Testabdeckung von 100 % auf dem gesamten betroffenen Code, Checklisten abgearbeitet, CodeRabbit-Hinweise bearbeitet (3 korrigiert, der Rest mit Begründung abgelehnt).
@pierre-gilles alles ist bereit für die Überprüfung
Empfohlene Merge-Reihenfolge: #2620 → #2617 → #2618 → #2619 (die #2620 ist in den drei anderen Branches enthalten, da sie für die Tests unerlässlich ist; sobald sie gemerged ist, werden ihre Diffs entsprechend reduziert. Die #2619 ist auf die #2617 gestapelt).
Fortsetzung im nächsten Kapitel: die Wiederaufnahme der Netatmo-Kameras, mit einem dedizierten Thema 