Zigbee: Luftqualitätssensor „Smart Air House keeper“

Hallo @AlexTrovato!

Ich habe einen Zigbee-Luftqualitätssensor (Smart Air Housekeeper) gekauft, um die Luftqualität in meiner Wohnung zu überwachen, denn in Bangkok ist es momentan nicht so gut :smiley:

Auf der Seite von Zigbee2mqtt wird alles erkannt:

Der gesendete JSON-Status:

In Gladys habe ich aber noch keinen PM2.5- oder Formaldehyd-Wert:

Was wäre der richtige Weg, um das ordnungsgemäß zur Zigbee2mqtt-Integration hinzuzufügen?

Ich könnte es selbst machen, aber ich wollte deine Meinung dazu hören :slight_smile:

Das ist nicht sehr kompliziert, aber man muss es wissen.

Zuerst muss man sicherstellen, dass die Kategorie/der Typ in Gladys existiert.


Es wird empfohlen, von der Seite deines Geräts auszugehen: Tuya TS0601_smart_air_house_keeper control via MQTT | Zigbee2MQTT, dann die Details der „Exposition“ für dein Feature zu betrachten (wir verwalten keine Optionen):

Hier siehst du, dass dein Feature vom Typ „numeric“ ist, dass der Name seines Attributs formaldehyd lautet und du sogar seine Einheit µg/m³ hast.


Auf der Seite des zigbee2mqtt-Dienstes werden die Features nach Wertetypen aufgeteilt (siehe Dateien im Ordner server/services/zigbee2mqtt/exposes):

  • binary
  • numeric
  • enum → Liste von Werten
  • composite → „komplexe“ Zusammensetzung

Dann, in jeder dieser Dateien, hast du verschiedene Attribute in einem „komplexen“ Objekt:

  • type: der z2m-Typ
  • writeValue: die Art und Weise, wie ein Gladys-Wert in z2m umgewandelt wird
  • readValue: die Art und Weise, wie ein z2m-Wert in Gladys umgewandelt wird
  • feature: die Standardwerte für die Features dieses Typs
  • names: die Zuordnung zwischen dem z2m-Attribut und dem Gladys-Feature

In deinem Fall ist es das Attribut „names“, das dich interessiert.
Darin findest du Unterobjekte, die wie folgt organisiert sind:

  • Schlüssel = z2m-Attribut
  • Wert = Objekt
    • feature = das Gladys-Feature, das dem z2m-Attribut entspricht (Kategorie/Typ sind die Mindestangaben)

Die Informationen read_only und has_feedback werden aus dem Attribut access der Exposition bestimmt.
Die Informationen min/max, unit werden aus den gleichnamigen Attributen der Exposition bestimmt.

Die unit können generisch sein und in dieser Datei hinzugefügt werden: server/services/zigbee2mqtt/utils/features/mapUnit.js.

Jede zusätzliche Überschreibung, die für die Zuordnung deines Features hinzugefügt wird, kann erzwungen werden, indem das Attribut forceOverride: true zum definierten Feature hinzugefügt wird (siehe linkquality in der Datei numeric). Mit dieser Option werden die „generisch“ berechneten Attribute überschrieben, wenn sie in deiner Zuordnung definiert sind.


Ich denke, du hast alle Informationen, um eine „basische“ Feature-Zuordnung hinzuzufügen.

Für komplexe Fälle (enum oder composite) werden andere, detailliertere Erklärungen folgen.


Lass mich wissen, ob du damit klarkommst @pierre-gilles

Das ist wunderschön erklärt

Das ist sehr klar @AlexTrovato, danke, dass du dir die Zeit genommen hast :slight_smile:

Ich denke, diese Nachricht könnte irgendwo gespeichert werden, falls wir Entwickler haben, die uns helfen wollen, mehr Zigbee-Geräte zu integrieren!

@pierre-gilles
Es wäre gut, ein kleines Tutorial zu erstellen, denn es stimmt schon, dass dies der fehlende/frustrierende Teil ist, um zu sehen, ob man helfen kann, da man nicht immer die Zeit hat, den gesamten Forum durchzublättern, um hier und da die notwendigen Informationen zu sammeln, während diejenigen, die das notwendige Wissen haben, mit geringem Aufwand und in kurzer Zeit ihr Wissen durch ein Tutorial teilen können und dies anschließend die Entwicklungsmöglichkeiten durch andere vervielfacht! Wissen ist nur wertvoll, wenn es geteilt wird :wink: