Zigbee: Capteur de qualité de l'air "Smart Air House keeper"

Ce n’est pas très compliqué, mais il faut le savoir.

Déjà, il faut être certain que la catégories/le type existent dans Gladys.


Il est conseillé de partir de la page de ton device TuYa TS0601_smart_air_house_keeper control via MQTT | Zigbee2MQTT, puis de regarder le détail de l’« expose » pour ta feature (nous ne gérons pas les options) :

Ici, tu peux voir que ta feature est de type « numeric », que le nom de son attribut est formaldehyd, et tu as même son unité µg/m³.


Côté service zigbee2mqtt, les features sont découpées par type de valeur (voir fichiers dans le folder server/services/zigbee2mqtt/exposes) :

  • binary
  • numeric
  • enum → liste de valeurs
  • composite → composition « complexe »

Puis, dans chacun de ces fichiers, tu as différents attributs dans un objet « complexe » :

  • type : le type z2m
  • writeValue : la manière de transformer une valeur Gladys vers z2m
  • readValue : la manière de tranformer une valeur de z2m vers Gladys
  • feature : les valeurs par défaut pour les features de ce type
  • names : le mapping entre l’attribut z2m et la feature Gladys

Dans ton cas, c’est l’attribut « names » qui t’intéresse.
Dans celui-ci, tu trouveras des sous-objets, organisés de la sorte :

  • clé = attribut z2m
  • valeur = objet
    • feature = la feature Gladys correspondant à l’attribut z2m (category / type sont les minimum à renseigner)

Les informations read_only et has_feedback sont déterminées à partir de l’attribut access de l’expose.
Les informations min / max, unit sont déterminées à partir des attributs du même nom de l’expose.

Les unit peuvent être génériques, à ajouter dans ce fichier server/services/zigbee2mqtt/utils/features/mapUnit.js.

Toute surcharge ajoutée dans pour le mapping de ta feature peut être forcée en ajoutant l’attribut forceOverride: true à la feature définie (cf linkquality du fichier numeric). Avec cette option, les attributs calculés « génériquement » seront surchargés s’ils sont définits dans ton mapping.


Je pense que tu as toutes les informations pour ajouter un mapping de feature « basique ».

Pour les cas complexes (enum ou composite), ce sera d’autres explications plus détaillées.


Dis moi si tu t’en sors avec ça @pierre-gilles

9 « J'aime »