Est-ce possible d'effectuer une boucle sur base d'une liste d'appareils?

Bonjour,

Je souhaite créer l’automatisation suivante: arrosage de mon jardin.
J’ai pour ce faire 10 électro-vannes connectées mais je ne peux en allumer qu’une seule à la fois pour cause de manque de pression.

Donc basiquement, pour chaque électro-vanne, j’aimerai effectuer les actions suivantes:

  1. couper toutes les électro-vannes (c’est un script)
  2. allumer l’électro-vanne
  3. attendre 15 min

Et puis recommencer avec l’électro-vanne suivante, tout simplement.

Mon soucis, c’est que je ne sais pas comment créer un array contenant mes électro-vannes et boucler dessus: 1 tour = 1 électro-vanne allumée.

Pourriez-vous m’aider?

(sachant que les 10 électro-vannes sont identiques, donc c’est vraiment juste l’id qui change, l’action est la même)

Merci d’avance !

Slt…
Avec les automations tu peux faire un peu ce que tu veux, c’est juste une question de mise en forme.

Tant que çà, pas de cumul sur une sortie( ha oui problème de pression)
Je crois pas mal d’exemple sur le forum !

Pour moi

L’automatisation est plus évoluée , mais montre seulement une partie , en mode éditeur visuel !


Je te donne une exemple comment faire une boucle.
Ici je crée des zones pour des stations autour de moi (mobile)

Le template dans le ‹ repeat/for_each › fournis le liste avec ‹ items ›
Ensuite tu peux mettres tes action dans ‹ sequence ›

alias: Create Dynamic Station Zones
description: ""
trigger:
  - platform: time_pattern
    minutes: /5
condition: []
action:
  - repeat:
      for_each: >-
        {{states.zone |selectattr('entity_id', 'search',
        'station_')|map(attribute='entity_id') | list }}
      sequence:
        - action: zone.delete
          data:
            entity_id: "{{ repeat.item }}"
  - repeat:
      for_each: "{{ state_attr('sensor.stations_at_10km', 'stations') | list  }}"
      sequence:
        - action: zone.create
          data:
            radius: 100
            icon: mdi:gas-station-in-use-outline
            name: "{{ 'station_' + repeat.item.name }}"
            latitude: "{{ repeat.item.latitude }}"
            longitude: "{{ repeat.item.longitude }}"
mode: single

Je vais me renseigner sur la syntaxe mais j’avoue ne pas comprendre d’où vient ta liste.

Je pense que tu cherches trop compliquer a vouloir faire une boucle. Quand tu auras x automatisation avec x appareil ou entité… pour t’y retrouver tu vas galérer je pense.
Tu devrais plutôt faire un simple script d’arrosage et puis appeler celui ci depuis ton automatisations.
Exemple sur des volet roulants mais principe identique.

alias: fermeture_volet_appart
sequence:
  - action: cover.close_cover
    target:
      entity_id:
        - cover.volet_cuisine
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - action: cover.close_cover
    target:
      entity_id:
        - cover.volet_mat
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - action: cover.close_cover
    target:
      entity_id:
        - cover.volet_nono
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
mode: single
icon: mdi:shuttle
description: ""

de ici … …

Je pense que tu doit faire qqc comme

{{states.sensor |selectattr('entity_id', 'search',
        'QQC_QUI_IDENTIFIE _TOUT_TES_VANNES')|map(attribute='entity_id') | list }}

Au lieu d’un Template, peut-être ça marche aussi si tu fait creer une groupe avec tes vannes? Pour moi ça ne va pas car les zones sont dynamique

Au final, c’était assez simple !

repeat:
  sequence:
    - action: notify.telegram_maison
      metadata: {}
      data:
        message: Démarrage {{ repeat.item }}
    - action: switch.turn_on
      metadata: {}
      data: {}
      target:
        entity_id: switch.{{ repeat.item }}
    - delay:
        hours: 0
        minutes: 15
        seconds: 0
        milliseconds: 0
    - action: script.turn_on
      metadata: {}
      data: {}
      target:
        entity_id: script.fermer_toutes_les_electro_vannes
    - delay:
        hours: 0
        minutes: 0
        seconds: 10
        milliseconds: 0
  for_each:
    - electro_vanne_avant
    - electro_vanne_jardin
    - electro_vanne_1
    - electro_vanne_2
    - electro_vanne_3
    - electro_vanne_4
    - electro_vanne_5
    - electro_vanne_6

Oui ça marche aussi mais t’as demandé une solution par boucle, pas hard-codé
EDIT… c’est une semi-boucle :slight_smile:

Je me suis mal exprimé alors, désolé :wink:

Pas grave…ça marche pour toi et c’est le but :slight_smile:
T’as essaié de faire une groupe…je suis juste intéressé