[Matter] Ajouter la gestion des COV

Description

Gérer les capteurs de COV dans l’intégration Matter


Pour info je suis sur le coup !

1 « J'aime »

@mutmut, dois-je utiliser ce barème dyson ? Quand penses tu ?

:slight_smile:

Les COV semblent être sans unités sur le Dyson mais en µg/m³ ou kPa pour d’autres sites, et cela dépend du type de COV que l’on analyse.
Je dirais qu’on part sur le barème dyson, faute de ne pas avoir un barème officiel global.

Oui il n’utilise pas d’unité et matterbridge utilise l’attribut LevelValue et il existe une enum dans matter.js avec low, médium, high et critical. Je vais trouver la correspondance dans gladys pour l’affichage des couleurs

1 « J'aime »

@Nagromdark ta PR n’est pas définitive j’imagine ?

Attention je pense que tu modifie un comportement qu’on a dans Gladys :

Si effectivement le Dyson ne renvoie pas la valeur de VOC, mais juste une échelle de VOC, créé une nouvelle feature spécialement pour ça :slight_smile:

Je suis pas tout à fait d’accord :blush:
En fait il existe déjà une feature VOC_SENSOR avec laquelle tu as une unité de mesure (quand tu regardes dans les appareils mqtt par exemple)
Et la feature VOC_INDEX_SENSOR, comme son nom l’indique c’est un indice donc y’a pas d’unité donc le getVocIndexColor était chelou. Faut peut-être retrouver dans quel cadre ça été rajouter

Si on regarde où est utilisée la fonctionnalité « VOC_INDEX_SENSOR », on voit que c’est utilisé par Zigbee2mqtt via la feature « voc_index » qui est utilisée par cet appareil :

Je l’ai chez moi et il envoie bien une valeur de VOC entre 1 et 500, ce qui correspond au Sensirion’s VOC Index, qui est un index de VOC un peu différent d’une valeur brute de concentration :

Donc c’est bien quelque chose de défini et différent d’une valeur de VOC classique.

Il va falloir créer une 3ème fonctionnalité je pense :grinning_face_with_smiling_eyes:

Oh punaise comment je vais nommer ça moi, VOC_INDEX_SENSOR_2 mdr😂

Je pense que ton cas est tellement spécifique qu’il faut pas hésiter à nommer ça VOC_DYSON_INDEX_SENSOR ^^

Ou alors un truc lié à Matter, c’est lié à Matter ou Dyson là ?

C’est plutôt lié à matter, car c’est une enum

Effectivement, dans le cas du Dyson, la featureMap a « numericMeasurement: false », donc c’est bien juste un barème propre à Matter. À voir quand même dans la spec Matter si c’est un barème standard ou si c’est sorti de leur chapeau :smiley:

Si c’est vraiment une feature Matter non standard, mets « MATTER » dans le nom de la feature, ça ne me choque pas.

J’ai push de nouveau, dis moi si c’est bon

Merci !

Question : Est-ce que le « LevelValue » est une valeur générique de Matter, potentiellement utilisée pour d’autres capteurs ? Est-ce que c’est spécifique aux VOC ?

Autre question : pourquoi afficher le chiffre venant de Matter dans le badge ? Ça ne parle pas à l’utilisateur.

À mon avis, il faut afficher un texte, comme ce qui est fait pour :

const BADGE_VALUE_CONVERTERS = {
  [DEVICE_FEATURE_CATEGORIES.RISK]: {
    0: 'no-risk',
    1: 'low-risk',
    2: 'medium-risk',
    3: 'high-risk'
  }
};

D’ailleurs, on pourrait réutiliser ce fonctionnement.

Non ce n’est pas spécifique aux voc, il est également utilisé pour le NO2 par exemple.

Je regarde pour rendre ça plus générique du coup et aussi pour le texte à afficher

1 « J'aime »

Ok, par contre je veux bien que la catégorie reste spécifique VOC, pour que Gladys « sache » qu’on parle de VOC, c’est utile ensuite pour les intégrations et pour l’IA de Gladys :slight_smile:

Est-ce que ça c’est mieux :

Pour le nom de la fonctionnalité je sais pas trop :

Oui, c’est beaucoup mieux :slight_smile:

Par contre, d’où vient la traduction « faible » ? Je ne la vois pas dans le code de la PR.

Pas sûr que l’utilisateur ait intérêt à savoir que c’est un indice spécial Matter.

On pourrait lui donner un nom simple « Indice COV », et renommer l’autre indice pour l’appeler « Indice COV Sensirion » / « Sensirion VOC index » pour mieux représenter la réalité par exemple.

Tu en penses quoi ?