Je travaille sur la solution sofar2mqtt pour récupérer mes valeurs d’onduleur. J’ai réussi à me dépatouiller avec le topic MQTT, je dispatch mes informations mais il y a une valeur que je voudrais améliorer, à savoir l’état de service de l’onduleur.
A ce jour je reçois soit 0, soit 1 ou 2 ou 3… mais je voudrais convertir ces états en « texte » type WAITING, CHECKING, ON GRID, FAULT, etc…
Je ne vois pas trop comment m’y prendre. J’ai pensé à faire un automatisation :
Quoi mettre en déclencheur ?
Condition aucune
Action
Si Etat_onduleur = 0 alors écrire Waiting
Si Etat_onduleur = 1 alors écrire Checking
Si Etat_onduleur = 2 alors écrire Sur secteur
donc si je comprends bien tu as créé un Texte MQTT qui récupère cette valeur. (le Yaml que tu as partagé)
Si c’est bien ça, la solution est un peu plus simple et directe.
Dans value_template, tu peux ajouter de la logique pour convertir le chiffre en texte.
« else » ne peut pas avoir de condition.
Soit c’est un « elif » que tu met pour faire le test avec « 7 ».
Soit tu met un else sans test. D’ailleurs vaut mieux ajouter une else quoi qu’il arrive, si jamais ton intégration ne marche pas ou n’est pas démarrée au moins tu aura une valeur.
Ok merci de cette précision.
J’avais toujours l’erreur, j’ai modifié le % par ce caractère : ℅ comme un C slash O, l’erreur a disparu mais l’information n’est pas remontée, j’ai « unavailable »
Alors en effet j’ai supprimé le unique id (mis en commentaire à vrai dire). Par contre je ne comprend pas… le fait de mettre ou pas « unique_id » provoque quoi finalement ? Car le topic mqtt est le même et mon entité également ? Désolé pour cette question bête probablement…
Deuxième point, j’ai dégagé les " " et ça fonctionne.
{% if value_json.running_state == 0 %}
Waiting
{% else %}
J’ai plus qu’à rajouter les autres test logique alors.
unique_id de base tu n’as pas vraiment besoin de le définir. Mais c’est ce qui en arrière plan permet au système de savoir si on parle de la même entité ou pas… Donc comme tu avais créé au début avec une id… et une 2eme fois sans, il a considérié que ce n’était plus la même entitié.
Pour les " " comme c’était du MQTT et ne connaissant pas ton JSON, je pensais que c’était du texte, mais visiblement c’est un entier, donc normal qu’il n’y en ait pas besoin…
dans le cas où je suis en défaut N°4 et 5, je crée une automatisation de ce style :
Selon entité « etat_onduleur »
passe de n’importe état
à « Defaut »
Alors envoie notif telegram.
Ca semble correct ?
alias: Onduleur-check-state
description: ""
trigger:
- platform: state
entity_id:
- text.etat_onduleur
from: null
to: Defaut
condition: []
action:
- service: telegram_bot.send_message
data:
message: Onduleur en défaut
mode: single