🚀 philips-air 2.0.0 ist da — Modellauswahl, zwei neue Geräte und der HTTP-Pfad ist wieder heil
Hallo zusammen,
philips-air hat gerade die 2.0.0 bekommen — die größte Änderung seit Langem, und die erste, bei der ich euch bitten muss, nach dem Update einmal kurz in die Instanzeinstellungen zu schauen. Warum, steht weiter unten unter „Was ihr tun müsst".
🔧 Warum überhaupt eine Major
Die neueren Geräte (CX3550, CX7550, AC3221) sprechen zwar alle das lokale verschlüsselte CoAP, aber sie belegen dieselben internen Codes mit unterschiedlicher Bedeutung. Solange alle Zuordnungen in einer gemeinsamen Tabelle lagen, konnte immer nur eines dieser Geräte richtig funktionieren — beim jeweils anderen landeten die Werte an der falschen Stelle oder gar nicht.
Deshalb ist die Zuordnung jetzt pro Modell aufgebaut: Es gibt einen gemeinsamen Teil für alles, was nur gelesen wird (Sensoren, Filter, Geräteinfo), und obendrauf genau eine Steuerungstabelle für das eingestellte Modell. Zwei Modelle sind nie gleichzeitig aktiv, und damit können sich die Codes auch nicht mehr in die Quere kommen.
✨ Was neu ist
Neue Einstellung „Gerätemodell": AC2889, AC3221, CX3550, CX7550 oder Generic — der Adapter zeigt danach die Bedienelemente, die dein Gerät wirklich hat
AC3221 (Luftreiniger der neuen Generation) wird unterstützt — An/Aus, Lüfterstufe und -modus, Displayhelligkeit, Kindersicherung, Signalton und mehr, dazu die Messwerte (PM2.5, Allergen-Index, Temperatur, Luftfeuchte) und die Reststunden von Vorfilter und NanoProtect-Filter
CX7550/01 (Smart Tower Fan 7000 series) wird unterstützt — alle 12 Stufen, AutoAdapt, Sleep, „Natural Breeze", Schwenken, schreibbarer Timer, Displayeinstellungen und Raumtemperatur
Der Adapter warnt im Log, wenn das gewählte Modell nicht zum angeschlossenen Gerät zu passen scheint
Werte, die der Adapter nicht kennt, sammelt er unverändert unter unknownStates.*
Schalter reagieren jetzt auch, wenn ein Skript oder eine Visualisierung den Text "true"/"false" statt eines echten Ja/Nein-Werts schreibt
Der HTTP-Pfad funktioniert wieder. Geräte, die über HTTP sprechen (zum Beispiel AC2729 und AC3829), verbanden sich seit 1.4.0 überhaupt nicht mehr und meldeten nur fetch failed (UND_ERR_SOCKET). Ursache war eine Umstellung der HTTP-Bibliothek im Juni; die Anfragen gehen jetzt wieder so raus, wie diese Geräte sie erwarten
Ebenfalls behoben: Geräte am HTTP-Protokoll schrieben bei jedem gesendeten Befehl Cannot parse: undefined ins Log
⚠️ Was ihr nach dem Update tun müsst
1. Gerätemodell auswählen. Die neue Einstellung steht nach dem Update auf AC2889. Wer ein anderes Gerät betreibt, stellt das Modell einmal in den Instanzeinstellungen um — sonst zeigt der Adapter die Bedienelemente eines fremden Modells, und die Werte des eigenen Geräts landen unter unknownStates. Der Admin zeigt euch dazu vor dem Update auch eine Hinweismeldung.
Welches Modell zu welchem Gerät gehört:
Dein Gerät
Auswahl
AC2889 und die übrigen klassischen Luftreiniger, zum Beispiel AC1214, AC2729, AC2939, AC3059 oder AC3829
AC2889
AC3221
AC3221
CX3550/01 Standventilator
CX3550
CX7550/01 Turmventilator
CX7550
alles andere, oder wenn ihr unsicher seid
Generic
Der Eintrag AC2889 deckt die ganze klassische Familie ab, weil diese Geräte alle dieselben Klarnamen senden (pwr, om, mode und so weiter) — ihr braucht dort also nicht euer exaktes Modell in der Liste zu suchen.
Unsicher, in welche Gruppe euer Gerät gehört? Verbindet einmal mit Generic und schaut in den Objektbaum unter unknownStates: Klarnamen wie pwr oder pm25 heißen „klassisches Gerät", Codes wie D03102 heißen „neue Generation".
2. Nur CX3550: Die Datenpunkte heißen jetzt anders. Beim CX3550 hießen sie bisher cxFanMode, cxOscillation und so weiter. Die cx-Vorsilbe fällt weg, die Datenpunkte heißen jetzt generisch (fanMode, oscillation, …). Skripte, Visualisierungen und Blockly-Bausteine, die auf die alten cx*-Namen zeigen, laufen danach ins Leere und müssen einmal angepasst werden. Die alten cx*-Objekte bleiben als Leichen im Objektbaum stehen und können von Hand gelöscht werden.
📡 Nebenbei: CoAP oder HTTP?
Die meisten Geräte werden über CoAP erreicht, das ist die Voreinstellung. Einige ältere — AC2729 und AC3829 zum Beispiel — antworten nur über HTTP. Aus dem Modellnamen ist das leider nicht ableitbar: Der AC2889 spricht CoAP, der ähnlich alte AC2729 nicht. Wenn die Verbindung also nicht zustande kommt, lohnt sich der Wechsel des Protokolls in den Instanzeinstellungen, bevor ihr weiter sucht.
🙏 Danke
Diese Version steckt voller Messungen und Tests an Geräten, die ich selbst nicht habe. Danke an @dr.-bakterius für die komplette Testrunde am CX7550/01, an MatthiasBosch für das Debug-Log des AC3221, an @tukey42 für die Bestätigung des HTTP-Fixes am AC3829 und an Holly86 für den CX3550/01.
🧪 Wo ich noch Rückmeldung brauche
Für den CX3550/01 habe ich bisher nur Holly86(GitHub) gefunden — bei dem Modell sind die Datenpunkt-Namen umgestellt worden. Wenn ihr so ein Gerät habt: Schaut nach dem Update bitte kurz, ob alle Bedienelemente noch das tun, was sie sollen, und meldet euch hier oder als Issue auf GitHub.
Dasselbe gilt für alle anderen Modelle: Wenn Werte unter unknownStates auftauchen, die euch sinnvoll erscheinen, schickt mir ein Debug-Log.
PS: sind holly86 und MatthiasBosch (beide Github Namen ) hier auch unterwegs. Bitte mal hier melden ggf. auch im Chat. Danke.
Die offenen Issues sehe ich mir die Tage dann an.
Viele Grüße
Tom