Netatmo Service

Ich habe Claude gefragt, und laut ihm gibt es zwei Probleme:

  1. Ein wahrscheinlich kaputter OAuth-Refresh seit der Migration zu undici (Bearer auf einem abgelaufenen Token, Bug eingeführt in diesem PR: https://github.com/GladysAssistant/Gladys/pull/2256).
  2. Eine „Alles löschen“-Richtlinie, sobald ein Refresh fehlschlägt, die jeden vorübergehenden Fehler in eine dauerhafte Abmeldung verwandelt.

@Terdious Ich stehe dir zur Verfügung, falls du Hilfe beim Beheben brauchst :slight_smile:

Danke an alle für euer Feedback!

Bei mir war es 0:30 Uhr.

Hallo zusammen!

Genau, bei mir auch!

Entschuldigung für die Verzögerung, ich habe seit zwei Wochen nicht am PC gearbeitet, meine Eltern sind zu Hause. Und ich habe mir Anfang der Woche einen Bänderriss plus Prellung am Daumen und Zeigefinger zugezogen. :face_with_peeking_eye::face_with_peeking_eye:

Ich versuche, das am Wochenende zu prüfen.

Danke an @pierre-gilles für die erste Analyse… und entschuldige für das Einführen des Bugs.

Kein Problem @Terdious, es brennt nicht…

Gute Besserung!

Oh Mist! Soll ich am Montag einen Pull Request machen? Ich könnte nicht testen, aber ich kann Claude darauf ansetzen :joy:

Hallo!

Ich bin dabei.

Ich habe gesehen, insbesondere auf HA, dass es keinen Authorization-Header für /oauth2/token geben sollte. Ich nutze die Gelegenheit auch, um die Benutzerinformationsrückgabe während einer erneuten Verbindung auf der Setup-Seite zu verbessern.

PR hier erstellt:

Ich habe die Gelegenheit genutzt, um eine zweite PR zu erstellen, um die bestehende Rückmeldung zu verbessern. In einigen Fehlerfällen wurde die Integration nicht als getrennt erkannt und blieb visuell auf „Verbunden“ stehen, selbst wenn dies nicht der Fall war (z. B. wenn die Erkennung fehlschlug). Ich nutze die Gelegenheit, um die Funktion der automatischen Wiederverbindung zu nutzen. PR2:

Danke @Terdious!

Alles klar bei mir, ich habe den ersten PR gemerged. Danke, dass du dir die Zeit genommen hast, das zu prüfen und die Korrekturen vorzuschlagen :folded_hands:

Für den zweiten PR, da er auf dem ersten basiert, gibt es jetzt einige Konflikte. Könntest du den Master rebase, um sie zu lösen?

Danke! :grinning_face_with_smiling_eyes:

Gern geschehen, das ist normal!

Das ist für mich in Ordnung beim zweiten PR, es ist rebase.

Zur Info besteht die Änderung darin, auch den automatischen Reconnect-Zyklus auszulösen, wenn Netatmo den Zugriffstoken ablehnt. Ohne dies führte das Klicken auf „Aktualisieren“ auf der Entdeckungsseite oder das Abrufen der Werte, wenn die Netatmo-Anwendung deaktiviert ist, zu keiner Fehlermeldung.

Jetzt haben wir eine klare Information über den aktuellen Reconnect-Status auf allen Seiten der Integration. Die Versuchszyklen sind: 30s → 60s → 120s → 300s, dann unendlich wiederkehrende 300s.



Das ist für mich in Ordnung, es ist gemerged und wird in der nächsten Version von Gladys veröffentlicht :slight_smile:

Danke für alle diese Korrekturen :raising_hands:

Die Korrekturen sind in Gladys Assistant 4.80 verfügbar:

Danke @Terdious für die Korrekturen :slight_smile:

Hallo zusammen! :waving_hand:

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 :grinning_face_with_smiling_eyes:).

Die 4 PRs (in der empfohlenen Merge-Reihenfolge)

1. #2620 — Erkennung von Geräten ohne Strom :red_circle: 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 :slightly_smiling_face: 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 :video_camera:

Super !!! Danke @Terdious für die Riesenarbeit, die du leistest :star_struck:

Danke @mutmut,

Ich gestehe, heute weniger als früher eigentlich … Ich mache hauptsächlich Driving und Prompting für die KI. Korrekturlesen während des Codings, Testen im Flug, Feedback und Reflexion/Validierung!!^^ Danach vollständiges Testen und Angabe der Richtungen, die eingeschlagen werden sollen. Besonders viel Recherche in Foren und auf GitHub, um der KI immer wieder zu sagen, dass sie sich auf bereits geführte Diskussionen, Erfahrungen aus der Vergangenheit und Design-Entscheidungen beziehen soll.

Bei Netatmo konnte ich ihm viele Quellen aus der Vergangenheit geben, Reviews von Pierre-Gilles, Fehler von mir usw., damit wir diese nicht wiederholen oder den falschen Weg einschlagen. Es scheint gut zu funktionieren! Aber erst die Reviews zeigen es ^^ Denn er macht immer noch Fehler :sweat_smile: und vor allem wegen mir, verpasse ich welche. Aber weniger als wenn ich komplett alleine programmiert hätte.

Genial, danke für diese PRs! Ich halte dich auf dem Laufenden, sobald ich sie mir angesehen habe :slight_smile: