Synthèse Lumières

Petit code pour avoir le nombre de lumières allumées sur le total ainsi que leur nom :

animate

Mise à jour du post avec la prise en compte de browser_mod pour exclure les écrans qui sont considérés comme des lampes (et qui n’ont pas d’attribut friendly_name) :

sensor:
  - platform: template
    sensors:
      toutes_les_lampes:
        friendly_name_template  : >
          {% set domain = 'light' %}
          {% set state = 'on' %}
          {# Définition du `namespace` afin de pouvoir récupérer la valeur définie dans la boucle #}
          {% set light = namespace(is_light=0, is_on=0) %}
          {%- set entities = (states[domain]| map(attribute='entity_id') | list ) -%}
          {%- for entity in entities -%}
            {% if not ( is_state_attr(entity,'type','browser_mod') or is_state(entity,'unavailable')) %}
              {% set light.is_light = light.is_light + 1 %}
              {% if is_state(entity,'on') %}
                {% set light.is_on = light.is_on + 1 %}
                {%- if loop.last %}
                  {{ state_attr(entity,'friendly_name') }}
                {% else %}
                  {{ state_attr(entity,'friendly_name') }},
                {%- endif %}
              {%- endif %}
            {%- endif %}
          {%- endfor -%}
          {{light.is_on}}/{{light.is_light}}
        value_template: >
          {% set domain = 'light' %}
          {% set state = 'on' %}
          {%- set entities = (states[domain] | selectattr('state','eq', state) | map(attribute='entity_id') | list ) -%}
          {%- for entity in entities -%}
            {% if not is_state_attr(entity,'type','browser_mod') %}
              {%- if loop.last %}
                 {{ state_attr(entity,'friendly_name') }}
              {% else %}
                 {{ state_attr(entity,'friendly_name') }},
              {%- endif %}
            {%- endif %}
          {%- endfor -%}

source initiale

2 « J'aime »

La même chose (synthèse) avec les ouvertures :

Je trouve ca génial, c’est le genre de petit code qui peuvent vraiment aider à apprendre HA.

Par contre tu aurais des exemples d’utilisation (car a par apprendre, je ne vois pas a quoi ca peut servir) ?

Sur une vue/ un message de synthèse comme l’indique le titre su sujet… :wink:

Mais personnellement, cela me sert plus quand je mets l’alarme, cela m’indique les ouvertures en défauts, ça évite de chercher.

Ensuite, cela permet de demander si tu souhaites tout de même mettre l’alarme et donc savoir qu’elles ouvertures shunter.

@Clemalex bonjour très utile pour certaine automatisation, peut on également filtrer afin de ne prendre en compte les lumières d’une certaine pièce ?

Vous remerciant d’avance

Je partirais plus sur la définition d’un groupe et l’utilisation du filtre expand.

Je crois qu’il existe des exemples sur le forum. Sinon j’en fournirai un :+1:

La première chose à faire est de lire la documentation pour comprendre de quoi je parle :

Retrouvé ! :heart:

Bonjour,
Y a t il moyen de remplacer la virgule de séparation par un saut de ligne ?

1 « J'aime »

Oui :

sensor:
  - platform: template
    sensors:
      toutes:
        friendly_name_template  : >
          {% set domain = 'light' %}
          {% set state = 'on' %}
          {# Définition du `namespace` afin de pouvoir récupérer la valeur définie dans la boucle #}
          {% set lights = namespace(on="") %}
          {%- set entities = (states[domain]| map(attribute='entity_id') | list ) -%}
          {%- for entity in entities -%}
            {% if not ( is_state_attr(entity,'type','browser_mod') or is_state(entity,'unavailable')) %}
              {% if is_state(entity,'on') %}
                {%- if lights.on == '' %}
                  {% set lights.on = state_attr(entity,'friendly_name') %}
                {% else %}
                  {% set lights.on = lights.on + "\n" + state_attr(entity,'friendly_name') %}
                {%- endif %}
              {%- endif %}
            {%- endif %}
          {%- endfor -%}
          {{ lights.on}}
        value_template: >
          {% set domain = 'light' %}
          {% set state = 'on' %}
          {# Définition du `namespace` afin de pouvoir récupérer la valeur définie dans la boucle #}
          {% set light = namespace(is_light=0, is_on=0) %}
          {%- set entities = (states[domain]| map(attribute='entity_id') | list ) -%}
          {%- for entity in entities -%}
            {% if not ( is_state_attr(entity,'type','browser_mod') or is_state(entity,'unavailable')) %}
              {% set light.is_light = light.is_light + 1 %}
              {% if is_state(entity,'on') %}
                {% set light.is_on = light.is_on + 1 %}
              {%- endif %}
            {%- endif %}
          {%- endfor -%}
          {{light.is_on}}/{{light.is_light}}
1 « J'aime »

Merci ta réponse toujours très efficace.
Mais il y a quelque chose que je ne comprends pas.

Quand j’utilise :

type: entities
entities:
  - entity: sensor.tous_les_capteurs_ouvrants
    secondary_info: last-changed
title: Ouvrants

Je n’ai pas les sauts de ligne (juste un espace)

Et lorsque j’utilise

type: markdown
content: '{{state_attr(''sensor.tous_les_capteurs_ouvrants'',''friendly_name'')}}'

J’ai bien les sauts de lignes
J’ai le même comportement avec Firefox, Edge et l’appli Android.

C’est le fonctionnement de la carte il me semble…

Elle vire les sauts de lignes pour les remplacer…

Les sauts sont également supprimés dans les notifications