Bonjour à tous !
J’essaie de mettre en place la gestion d’une led rgb sur mon esp32, en fonction du % de qualité de l’air intérieur.
Pour ce faire, j’ai un sensor qui calcule automatiquement la qualité de l’air intérieur exprimée en % (de la moins bonne 0% à la meilleure 100%)
Comme je suis une bille en automatisation, j’ai essayé une méthode un peu archaïque, qui fonctionne certe, mais j’aimerais améliorer, simplifier cela.
J’ai donc 4 automatisations qui vont changer la couleur (4 couleurs donc) de ma rgb, en fonction du %) :
Que pouvez-vous suggérer ? L’idéal serait avoir une seule automatisation, et si possible y intégrer un cycle de rafraichissement (5 min par exemple) et au lieu d’avoir seulement 4 couleurs, je sais pas si c’est possible d’avoir un dégradé plus précis.
Et du coup, dans tes actions, tu exécute l’action que tu souhaite en fonction de l’ID reçu.
Facile à mettre en place, et ça permet de regrouper les choses.
Pour le nombre de couleurs, c’est à toi de mettre autant de triggers (et d’id que souhaité)
En théorie, ça changera tout seul quand la valeur de ton sensor évoluera, pas besoin de minuterie en rabe
Et en lisant la doc, il y a même des variables que tu peux définir dans tes trigger. Il devrait donc être possible ta couleur dans la variable du trigger, et le l’utiliser telle quelle dans ton action en dessous
Hello !
Un énorme merci à toi pour ta contribution Ca me permet de comprendre un peu mieux la mécanique ! J’avais déjà exploré les ID, sans que j’arrive à ce que je voulais faire…
Par contre, cela ne fonctionne pas. J’ai adapté ton code de la façon suivante :
Alors en soi non. Actuellement ma valeur est de 88 , donc supérieure à 81. Mais oui tu as raison, il faudrait préciser des inférieur ou égal à / supérieur ou égal à et il manque aussi une plage de 61 à 21 que j’ai rajouté
C’est vraiment étrange. Je rencontre également des problèmes de déclenchement avec ton code.
Par contre, si je modifie les above et below pour ne plus avoir de trous dans la raquette, tout fonctionne à merveille…
Et je viens de tester, avec le code que tu as mis à jour, sans le moindre problème…
Je vais devoir invoquer des puissances obscures, ou avouer mon impuissance, désolé
Alors j’ai une piste… j’ai remplacé le sensor par un input comme toi et effectivement ca fonctionne !
Mais pourquoi cela ne marche pas avec mon sensor…
Voici la capture de l’état du sensor :
Pour le coup, je ne sais plus quoi te dire, tu devrais peut-être créer un nouveau sujet dédié à ce problème en particulier, d’autres plus compétents saurons peut-être t’aider…
Bon j’ai consulté mon amis chat gpt qui m’a trouvé une solution différente, et qui a l’air de fonctionner
La couleur est gérée dynamiquement avec 3 contraintes de couleurs (rouge à 0%, jaune à 50% et vert à 100%
Voici le code :
alias: LED NOTIFICATION C02
description: Gère la couleur de la LED RGB en fonction de la qualité de l'air
trigger:
- platform: state
entity_id: sensor.moyenne_qualite_air
action:
- service: light.turn_on
data_template:
entity_id: light.led_notif_2_my_light
rgb_color:
- >-
{% set sensor_value = states('sensor.moyenne_qualite_air') | int %}
{% if sensor_value == 0 %}
135
{% elif sensor_value <= 50 %}
{{ ((sensor_value / 50) * (255 - 135) + 135) | round(0) }}
{% else %}
{{ ((sensor_value - 50) / 50) * (40 - 255) + 255 | round(0) }}
{% endif %}
- >-
{% set sensor_value = states('sensor.moyenne_qualite_air') | int %}
{% if sensor_value == 0 %}
19
{% elif sensor_value <= 50 %}
{{ ((sensor_value / 50) * (205 - 19) + 19) | round(0) }}
{% else %}
{{ ((sensor_value - 50) / 50) * (180 - 205) + 205 | round(0) }}
{% endif %}
- >-
{% set sensor_value = states('sensor.moyenne_qualite_air') | int %}
{% if sensor_value == 0 %}
66
{% elif sensor_value <= 50 %}
{{ ((sensor_value / 50) * (106 - 66) + 66) | round(0) }}
{% else %}
{{ ((sensor_value - 50) / 50) * (99 - 106) + 106 | round(0) }}
{% endif %}
mode: single
Va comprendre, en tout cas j’ai trouvé une solution qui me convient totalement et qui fonctionne Et en prime au lieu d’avoir 3 couleurs, j’ai un calcul dynamique ! beaucoup plus jolie