Hello,
ça fait quelque temps que je stocke mes diverses expérimentations en Jinja, et il était temps de les partager
Mais surtout, n’hésitez pas à manger la doc, elle est vraiment de mieux en mieux faite et de plus en plus complète !
Afficher toutes les entités des domaines 'light' et 'switch' d'une pièce
{# Parcours toutes les entités de la zone bureau, puis les filtre par domaine #}
{% for myElt in (expand(area_entities('bureau')) | selectattr('domain', 'in', ['switch', 'light'])) %}
{{ myElt.entity_id }}
{% endfor %}
OU BIEN (même si je pense que la première version est plus performante) :
{# Parcours toutes les entités de domaine light ou switch, puis les filtre par la zone bureau #}
{% for myElt in ((states.light | list + states.switch | list) | selectattr('entity_id','in',area_entities('bureau'))) %}
{{ myElt.entity_id }}
{% endfor %}
Afficher toutes les entités d'une pièce du domaine 'light'
{% set myEntities = (expand(area_entities('salon')) | selectattr('domain', 'eq', ('light'))) |list %}
{% for myEntity in myEntities %}
{{ myEntity.domain }} - {{ myEntity.entity_id }} - {{ myEntity.name }}
{% endfor %}
Jouer avec les pièces
{# Liste des pièces #}
{{ areas() }}
{# Nom de la pièce qui contient une entité #}
{{ area_name('climate.bureau') }}
{# ID de la pièce qui contient une entité #}
{{ area_id('switch.prise_chauffage_sdb_bas') }}
{# Liste des entities d'une pièce #}
{{ area_entities('salon') }}
Toutes les entités d'une intégration
{{ integration_entities('gree') }}
{# En filtrant sur les résultats #}
{{ integration_entities('versatile_thermostat') | select('match', 'climate') | list }}
Savoir si un élément est contenu dans une liste
{# Est-ce que "donald" est contenu dans la liste ['riri', 'fifi', 'loulou'] => Retourne un booléen #}
{{ ['riri', 'fifi', 'loulou'] | select('eq', 'donald') | list | count > 0 }}
Récupère toutes les entity d'un device à partir d'une des entity_id de ce device
{# entity_id => device_id => all devices entities #}
{{ expand(device_entities(device_id('climate.salon'))) }}
Récupère un entity_id 'soeur' au sein d'un device à partir d'un autre entity_id
{# ici, on part de 'sensor.humidite_bureau', on remonte aux entités du device "père", on recherche les entités qui commencent par "sensor.etat_batterie" et on retourne la première occurence #}
{{ device_entities(device_id('sensor.humidite_bureau')) | select('match', '^sensor.etat_batterie') | first }}
Lister toutes les entity_id contenues dans un groupe
{{ expand('group.climate_all') | map(attribute='entity_id') | list }}
Récupère le device id à partir d'un entity_id
{{ device_id('climate.salon') }}
Supprimer les éléments vides dans une liste
{{ ['bonjour', '', '', 'les', '', '', 'enfants'] | select('!=', '') | list }}
capitalize puis str_replace
{## Retourne "Riri et fifi" #}
{{ 'riri_et_fifi' | capitalize | replace('_', ' ') }}
En espérant que ça puisse aider du monde Et n’hésitez pas si vous avez des retours.