Je débute sur l’intégration MQTT et je ne sais pas trop comment créer un sensor.cotech-367959_temperature (je ferai de même pour les autres entités) par rapport aux données que je reçois sur MQTT, notamment comment filtrer mon sensor sur le model et l’id:
A noter qu’après avoir copié ton code, j’ai bataillé longtemps sur ce piège, je ne comprenais pas pourquoi j’avais des erreurs: {℅ endif %} le premier caractère n’est pas un pourcent, c’est un truc bizarre c/o
Je pense que ce qui se passe, c’est que sur le même topic MQTT, tu as semble-t-il différents messages.
Un ou plusieurs de ces messages ne contiennent pas model et/ou id.
Ce qui fait qu’à la réception de ce(s) message(s), l’évaluation de ta condition est indéfinie, et donc par ricochet, ton sensor.
Idéalement, un topic = un message.
Si c’est bien ça le soucis, alors pour corriger, si tu as la main sur l’émetteur de ces messages, tu peux essayer de suivre la règle plus haut.
Si tu n’as pas la main là dessus, il y a le filtre is_defined qui permet de vérifier qu’un champ de value_json est bien défini.
Je ne l’ai jamais utilisé mais ça donnerait peut-être quelque chose comme ça:
{% if (value_json.model | is_defined) and (value_json.model == "Cotech-367959") and (value_json.id | is_defined) and (value_json.id == 208) %}
{{ value_json.temperature_C | round(1) }}
{% else %}
{{ states(sensor.temperature_station_meteo) }}
{% endif %}
Ça me paraît pas mal comme explication, à voir si c’est vraiment ça.
à mon avis il y a 2 soucis …
La syntaxe, il manque les quotes {{ states("sensor.temperature_station_meteo") }}
Après le sensor unique_id: "sensor.temperature_station_meteo"qui s’applique la valeur à lui-même je suis pas certain que ce soit une bonne pratique ni ce que c’est censé faire
Je ne sais pas si tu utilises rtl433tomqtt pour recevoir tes senseurs, mais avec celui-ci je recoit les données sous 2 formats, un json qui regroupe tout les données d’un emetteur ou un topic pour une donnée
Dans cet exemple, il suffit de déclaré le topic rtl_433/rtl433tomqtt/devices/Nexus-TH/2/159/temperature_C pour avoir uniquement la température.
il suffit de repérer les bon ID => TH/2/159/