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