Bonjour,
J’utilise pour avoir la température de sortie des fumées de ma chaudière à bois un capteur IR MLX90614 qui fonctionne sur un bus I2C d’un ESP8266. La remontée de le température se fait bien sauf que de temps en temps le MLX90614 envoi une information erronée de l’ordre de 900 à 2500°C. Sachant que la plage normale de température se situe en dessous des 350°C comment puis-je faire pour que les valeurs supérieures a 350°C ne soient pas prise en compte ?
Le capteur remonte en MQTT et il est déclaré dans la configuration.yaml
sensor:
- name: "Temperature Fumées chaudière"
unique_id: temperature_fumees_chaudiere
state_topic: "CHAUDIERE/FUMEES/Fumees"
state_class: measurement
device_class: temperature
unit_of_measurement: "°C"
suggested_display_precision: 1
Merci par avance pour votre aide…
Si tu utilises ESPHome tu peux tester ça :
filters:
- lambda: |-
if (x < 350.0) {
return x;
} else {
return 351.0;
}
Bob
1 « J'aime »
Bonjour.
Merci pour ton retour, mais j’utilise MQTT pour remonter les informations du capteur, mais ça me donne une piste, je vais essayer de voir comment adapter ça a mon système.
1 « J'aime »
Bonjour,
Pourquoi utiliser MQTT , au lieu de l’api ?
Après l’option filters que te propose @Bob , s’applique sur tout les sensors esphome.
Quel code tu utilises pour ton sensor MQTT sur esphome ?
1 « J'aime »
Je n’utilise pas ESPHOME, mon capteur qui est sur ESP8266 est programmé pour remonter les données simultanément en MQTT et en HTTP vers un deuxième serveur de secours (JEEDOM).
la prog de l’ESP pour remonter vers HA.
Après coté HA j’ai déclaré simplement le capteur dans la configuration :
sensor:
- name: "Temperature Fumées chaudière"
unique_id: temperature_fumees_chaudiere
state_topic: "CHAUDIERE/FUMEES/Fumees"
state_class: measurement
device_class: temperature
unit_of_measurement: "°C"
suggested_display_precision: 1
Jusqu’ici pas de problème les valeurs de température remontent bien, dans HA
Sauf qu’il arrive que le capteur retourne des valeurs erronées (1000, 2500 °C) je veux donc supprimer ces valeurs erronées.
1 « J'aime »
Il faudrais alors tester avec le template pour sensor MQTT. Un truc dans le genre:
sensor:
- name: "Temperature Fumées chaudière"
unique_id: temperature_fumees_chaudiere
state_topic: "CHAUDIERE/FUMEES/Fumees"
state_class: measurement
device_class: temperature
unit_of_measurement: "°C"
suggested_display_precision: 1
value_template: >-
{% if value_json.temperature|float(0) <= 140 %}
{{ value_json.temperature | round(0) }}
{% else %}
nan
{% endif %}
1 « J'aime »
*Joker, je n’utilise que ESPHome pour mes ESP32 et aucun ESP8266.
Bob
Ok , je vais fouiller cette solution, j’ai vu également qu’il existe des filtres, mais je découvre …il faut que je comprenne les différents filtres possibles ça a l’air d’être velu comme truc… je découvre tous les jours que HOME ASSISTANT offre énormément de possibilité …
y’a peut être la solution par là :
Bon j’avance sur le sujet des filtres de « valeur aberrante »…
si je comprends bien le fameux filtre OUTLIER :
Windows _size c’est le nombre des dernières valeurs prisent en compte.
Radius s’explique de la manière suivante; si l’écart entre la valeur mesurée et la moyenne des n dernières valeurs est supérieure au seuil donné par « radius » alors le filtre prendra la dernière valeur à la place de la valeur considérée comme fausse !
Dans mon cas pour la température des fumées :
Mon raisonnement est-il le bon ?