Pour les volets via le fichier customize.yaml j’ai créée des attributes_templates (je viens de découvrir), une valeur de position que j’aimerai exploiter pour chaque mode
Je sais faire une automatisation qui balance une position unique (issue d’in sensor ou en dur) à tous les membres du groupe cover. En fait c’est natif.
alias: Gestion mode canicule
description: ""
trigger:
- platform: state
entity_id:
- input_select.mode_volets_canicule
condition:
- condition: state
entity_id: input_boolean.activation_chauffage
state: "off"
- condition: not
conditions:
- condition: state
entity_id: input_select.mode_volets_canicule
state: Normal
action:
- service: cover.set_cover_position
data:
position: 10
target:
entity_id: cover.ouvrants
mode: single
je sais envoyer la position specifique à chaque volet (en X appels séquentiels du service) en fonction du trigger
mais ce que je NE sais pas faire, c’est éviter de de faire les X appels consécutifs au service et je voudrais utiliser l’équivalent d’une boucle for pour toutes les entités du group directement.
Voilà, pas sur que ce soit aussi clair pour les lectures que ça l’est dans ma tête
Salut.
Effectivement c’est une bonne question, mais justement : non
Le cover.ouvrants c’est juste une liste d’entités (un groupe via les entrées dans l’ui)
Par ailleurs mes volets n’ont pas tous la même valeur à chaque fois pour les modes, en fonction du type de volet, de l’exposition etc j’ai plusieurs variations
Par exemple :
C’est moins direct que ce que j’imaginais mais ça fonctionne (plus besoin du cover.ouvrants) :
alias: Gestion modes Canicule
description: Determine la position des volets en fonction de l'état du mode canicule
trigger:
- platform: state
entity_id:
- input_select.mode_volets_canicule
condition:
- condition: state
entity_id: input_boolean.activation_chauffage
state: "off"
- condition: not
conditions:
- condition: state
entity_id: input_select.mode_volets_canicule
state: Normal
action:
- service: script.launch_mode_canicule
data: {}
mode: single
Il semble que ce soit possible, quand je regarde vite fait dans les outils de dev après avoir créé un group bidon dans le configuration.yaml :
sensor:
- platform: group
type: mean
entities:
- sensor.capteur_presence_exterieur_battery
- sensor.capteur_temperature_chambre_parents_battery
- sensor.interrupteur_domi_battery
- sensor.interrupteur_salle_de_jeu_battery
ce code me donne le OK :
{% set ns = namespace(test = []) %}
{% for x in expand('sensor.sensor_group_mean') if x.state | int(15) < 15 %}
{% set ns.test = ns.test + [x.name] %}
{% endfor %}
{% if ns.test | count == 0 %}
OK
{%- else -%}
Pile thermo - de 15% : {{ ' et '.join((ns.test | join(', ')).rsplit(', ', 1)) }}
{%- endif -%}
celui ci me donne la liste des sensors qui sont en dessous de 75 %
{% set ns = namespace(test = []) %}
{% for x in expand('sensor.sensor_group_mean') if x.state | int(15) < 75 %}
{% set ns.test = ns.test + [x.name] %}
{% endfor %}
{% if ns.test | count == 0 %}
OK
{%- else -%}
Pile thermo - de 15% : {{ ' et '.join((ns.test | join(', ')).rsplit(', ', 1)) }}
{%- endif -%}
Bon ok c’est pas exactement ce que tu veux mais tu as un exemple de boucle for.
C’est que je suis en train de mettre en place une liste de mes capteurs où la pile faiblit.