Sélectionner une entité donnée depuis un device

Bonjour,

Pour expliquer le contexte, je cherche, lorsque n’importe quelle clim de la maison est activée, à passer cette dernière en mode silence.

Dans mon intégration (Gree), pour la passer en mode silence, c’est un trigger du device, et pas mon entité climate.

J’ai donc créé un groupe regroupant toutes les clims, et je me sert de ce groupe comme trigger au changement d’état.

Dans l’action, j’arrive à remonter de l’entity au device, puis à lister toutes les entités de ce device :

"{{ device_entities(device_id('climate.salon')) }}"

=>

Type de résultat: string
"['switch.b82f01fe_panel_light', 'switch.b82f01fe_quiet', 'switch.b82f01fe_fresh_air', 'switch.b82f01fe_xfan', 'climate.salon']"

Maintenant, mon problème c’est de sélectionner l’entity qui va me permettre d’activer le mode silence. Je ne connais pas l’entity id exact, j’ai uniquement un pattern qui me permettra de la détecter (« quiet »).

Une bonne âme pourrait-elle m’aider à retomber dessus SVP ? Je ne doit pas être très loin, mais je bloque :slight_smile:

Merci d’avance !

Salut,

Je suis pas sur que ce soit exactement ce que tu veux mais trouver les id des clim en fonctionnement, il y a plus simple :

  {% set entities = states['climate'] | selectattr('state', 'in',  ['heat','heat_cool','cool']) | map(attribute='entity_id') | list %}
  {{entities}}

Malheureusement, ça ne correspond pas à mon besoin, je vais le récupérer depuis une automatisation, où le trigger se fait sur le changement d’état de n’importe quel élément de mon groupe de clim.

Du coup, dans mon action, je vais devoir remonter de la clim qui a trigger l’action jusqu’au device, puis redescendre jusqu’à l’entity switch qui lui est associée :

"{{ device_entities(device_id(trigger.entity_id)) }}"

Mais par contre, ton map a l’air intéressant pour arriver à mes fins, tu aurais un lien vers sa doc quelque part STP ?

Merci d’avance :slight_smile:

J’ai pas vu de doc jinja sympa, mais map c’est juste un filtre.
map(attribute='entity_id') c’est filtrer toutes les entités qui disposent d’un attribut ‹ entity_id ›

Perso pour ce genre de « regroupement », je fais attention au nommage de mes entités :

  • lien entre un climate et un sensor (mes danfoss ne donnent pas l’info de la température locale, donc je l’injecte) avec le nom radiateur salon
  • Ou ajouter des attributs à une entité (sud)

J’ai donc trouvé la solution :

  - service: switch.turn_on
    target:
      entity_id: "{{ (device_entities(device_id(trigger.entity_id)) | select('search', 'quiet') | first) }}"

ça me permet donc de redescendre jusqu’à l’entité qui contient « quiet » dans son id :slight_smile:

Maintenant, il ne me reste plus qu’à comprendre comment trigger mon automation sur le changement d’état d’une des entités du groupe, mais ça va faire l’objet d’un sujet à part :slight_smile:

Merci en tout cas !