MQTT - Comment éviter les valeurs "nulles" d'un capteur?

Bonjour,

Mon problème

J’ai intégré un capteur de température/hygrométrie zigbee dans home assistant via zigbee2mqtt.
De ce capteur je ne souhaite qu’exploiter les valeurs de température et d’humidité pour alimenter deux graphes dans un dashboard.
Ca fonctionne mais les graphes obtenus ont des « trous » et en analysant les messages MQTT je pense avoir trouvé la cause que j’explique plus loin.
Je me demande donc si il y un moyen simple de contourner le problème où si je dois utiliser un template comme ci-dessous pour chaque type de capteur afin d’éviter cela ?

- platform: template
  sensors:
    temp_serre_temperature:
        friendly_name: "Custom Temp_serre_temperature"
        unit_of_measurement: °C
        value_template: >
          {% if states('sensor.temp_serre_temperature') != 'unknown' %}
            {{ (states('sensor.temp_serre_temperature')) }}
          {%- endif %}

Je ne dois pas être le premier à intégrer des capteurs via zigbee2mqtt :slight_smile: donc merci d’avance pour vos lumières !

Explication

Lorsque le capteur actualise ses valeures, il envoi un paquet via zigbee pour chaque catégorie de mesure (temperature, humidité et pression), soit 3 paquets dans la même seconde.
A réception de chacun de ces messages zigbee génère et envoi un message MTQTT en positionnant la bonne variable avec la valeur réceptionnée, mais positionne à null toutes les autres. (cf : debug ci-dessous)
De ce fait si par exemple la valeur température est le 3ème paquet reçus, mon graphe d’humidité à un trou car sa dernière valeure est « null ».

Zigbee2MQTT:debug 2023-08-29 11:32:56: Received Zigbee message from 'Temp_serre', type 'attributeReport', cluster 'msRelativeHumidity', data '{"measuredValue":7632}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2023-08-29 11:32:56: Received Zigbee message from 'Temp_serre', type 'attributeReport', cluster 'msPressureMeasurement', data '{"measuredValue":1001,"scale":-1,"scaledValue":10010}' from endpoint 1 with groupID 0
Zigbee2MQTT:info  2023-08-29 11:32:56: MQTT publish: topic 'zigbee2mqtt/Temp_serre', payload '{"battery":null,"humidity":76.32,"last_seen":"2023-08-29T09:32:56.264Z","linkquality":18,"pressure":null,"temperature":null,"voltage":null}'
Zigbee2MQTT:info  2023-08-29 11:32:56: MQTT publish: topic 'zigbee2mqtt/Temp_serre', payload '{"battery":null,"humidity":null,"last_seen":"2023-08-29T09:32:56.264Z","linkquality":18,"pressure":1001,"temperature":null,"voltage":null}'
Zigbee2MQTT:debug 2023-08-29 11:37:58: Received Zigbee message from 'Temp_serre', type 'attributeReport', cluster 'msTemperatureMeasurement', data '{"measuredValue":2689}' from endpoint 1 with groupID 0
Zigbee2MQTT:info  2023-08-29 11:37:58: MQTT publish: topic 'zigbee2mqtt/Temp_serre', payload '{"battery":null,"humidity":null,"last_seen":"2023-08-29T09:37:58.414Z","linkquality":15,"pressure":null,"temperature":26.89,"voltage":null}'

Ma configuration


[center]## System Information

version core-2023.6.3
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.11.4
os_name Linux
os_version 5.10.103-v8+
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4844
Installed Version 1.31.0
Stage running
Available Repositories 1277
Downloaded Repositories 24
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 2
resources 16
views 31
mode storage
Recorder
oldest_recorder_run 25 août 2023 à 15:24
current_recorder_run 29 août 2023 à 10:53
estimated_db_size 74.70 MiB
database_engine sqlite
database_version 3.41.2
[/center]

Re-bonjour,

Je me réponds à moi même :slight_smile: mais ça peut également intéresser quelqu’un d’autre !

Dans la configuration zigbee2mqtt de ce capteur, le paramètre debounce était positionné à 0
Ce qui fait qu’à chaque paquet zigbee reçu un paquet MQTT était généré et configuré immédiatement.

En positionnant cette valeur à 2 par exemple, cela indique à zigbee2mqtt d’attendre au minimum 2 seconde avant d’envoyer le paquet MQTT avec les différentes valeurs reçues combinées dans un seul paquet.

Bon je ne sais pas si je suis bien clair, mais cette fois c’est bon le paquet MQTT contient bien toutes les valeurs et cela solutionne le problème que j’ai mentionné.

2 « J'aime »