[Matter] Añadir la gestión de COV

Descripción

Gestionar los sensores de COV en la integración Matter


Para información, ¡yo me encargo!

@mutmut, ¿debo usar esta escala dyson? ¿Cuándo lo piensas?

:slight_smile:

Los COV parecen no tener unidades en el Dyson, pero sí en µg/m³ o kPa para otros sitios, y esto depende del tipo de COV que se analice.
Diría que nos basamos en el baremo de Dyson, por falta de un baremo oficial global.

Sí, no usa unidades y matterbridge usa el atributo LevelValue y existe un enum en matter.js con low, médium, high y critical. Voy a encontrar la correspondencia en gladys para la visualización de colores

@Nagromdark ¿la PR no es definitiva, supongo?

¡Atención! Creo que estás modificando un comportamiento que tenemos en Gladys:

Si el Dyson no devuelve el valor de VOC, sino solo una escala de VOC, crea una nueva característica especialmente para eso :slight_smile:

No estoy completamente de acuerdo :blush:
De hecho, ya existe una característica VOC_SENSOR con la que tienes una unidad de medida (cuando miras en los dispositivos mqtt, por ejemplo)
Y la característica VOC_INDEX_SENSOR, como su nombre indica, es un índice, por lo que no tiene unidad, por lo que getVocIndexColor era raro. Tal vez haya que ver en qué contexto se añadió

Si miramos dónde se utiliza la funcionalidad « VOC_INDEX_SENSOR », vemos que se usa en Zigbee2mqtt a través de la característica « voc_index » que es utilizada por este dispositivo:

Lo tengo en mi casa y envía un valor de VOC entre 1 y 500, lo que corresponde al Índice de VOC de Sensirion, que es un índice de VOC un poco diferente de un valor bruto de concentración:

Por lo tanto, es algo definido y diferente de un valor clásico de VOC.

Creo que habrá que crear una tercera funcionalidad :grinning_face_with_smiling_eyes:

Oh punaise cómo voy a nombrarlo yo, VOC_INDEX_SENSOR_2 jajaja​:joy:

Creo que tu caso es tan específico que no hay que dudar en llamarlo VOC_DYSON_INDEX_SENSOR ^^

O algo relacionado con Matter, ¿está relacionado con Matter o con Dyson?

Está más relacionado con matter, ya que es una enumeración

Efectivamente, en el caso de Dyson, la featureMap tiene « numericMeasurement: false », por lo que es solo una escala propia de Matter. Habrá que ver en la especificación de Matter si es una escala estándar o si se la han inventado :smiley:

Si realmente es una característica no estándar de Matter, pon « MATTER » en el nombre de la característica, no me importa.

He hecho un nuevo push, dime si está bien

¡Gracias!

Pregunta: ¿Es « LevelValue » un valor genérico de Matter, potencialmente utilizado para otros sensores? ¿Es específico para los COV?

Otra pregunta: ¿Por qué mostrar el número de Matter en el distintivo? No le dice nada al usuario.

En mi opinión, hay que mostrar un texto, como se hace para:

const BADGE_VALUE_CONVERTERS = {
  [DEVICE_FEATURE_CATEGORIES.RISK]: {
    0: 'sin-riesgo',
    1: 'riesgo-bajo',
    2: 'riesgo-medio',
    3: 'riesgo-alto'
  }
};

De hecho, podríamos reutilizar este funcionamiento.

No, no es específico para los COV, también se utiliza para el NO2, por ejemplo.

Voy a ver cómo hacerlo más genérico y también para el texto a mostrar

Vale, pero me gustaría que la categoría siga siendo específica de los COV, para que Gladys « sepa » que se habla de COV, es útil después para las integraciones y para la IA de Gladys :slight_smile:

¿Es esto mejor?

Para el nombre de la funcionalidad no estoy muy seguro:

Sí, es mucho mejor :slight_smile:

Por cierto, ¿de dónde viene la traducción « débil »? No la veo en el código de la PR.

No estoy seguro de que el usuario necesite saber que es un índice especial Matter.

Podríamos darle un nombre simple « Índice COV », y renombrar el otro índice para llamarlo « Índice COV Sensirion » / « Índice VOC Sensirion » para representar mejor la realidad, por ejemplo.

¿Qué opinas?