Synthèse Lumières

Bonjour à tous,

Tout d’abord, veuillez m’excuser pour la question de… débutant…
J’aimerais revoir intégralement mon interface HA, en ajoutant, pour commencer, la synthèse des lumieres allumées.
J’ai créé un fichier template : synthese_lumieres.yaml dans « /config/template/ », avec le code de @Clemalex
Et là, c’est le drame… Je ne sais pas ce que je dois faire après

Encore désolé, pour cette demande…

Merci beaucoup pour votre aide précieuse !

Bonsoir

Merci pour le travail, qui me donne un peu de fil à retordre ce soir :wink:

Je cherche à faire la liste des lumières allumées en excluant tous les groupes de lumières mais aussi tout ce qui est abusivement typé lumière !

En fait mes entités qui sont des lumières sont toutes nommées light.ecl_xxxxx

Code en cours de travail :

    toutes_les_lampes:
      friendly_name_template: >
        {% set domain = 'light' %}
        {% set state = 'on' %}
        {# Définition du `namespace` pour le friendly_name_template #}
        {% set friendly_light = namespace(is_light=0, is_on=0) %}
        {%- set entities = (states[domain] | map(attribute='entity_id') | list ) -%}
        {%- for entity in entities -%}
          {% if not (entity.startswith('light.grp_') or is_state_attr(entity, 'type', 'browser_mod') or is_state(entity, 'unavailable')) %}
            {% set friendly_light.is_light = friendly_light.is_light + 1 %}
            {% if is_state(entity, 'on') %}
              {% set friendly_light.is_on = friendly_light.is_on + 1 %}
            {%- endif %}
          {%- endif %}
        {%- endfor -%}
        Lampes allumées : {{ friendly_light.is_on }}/{{ friendly_light.is_light }}

      value_template: >
        {% set domain = 'light' %}
        {% set state = 'on' %}
        {# Définition du `namespace` pour le value_template #}
        {% set value_light = namespace(lights=[]) %}
        {%- set value_entities = (states[domain] | selectattr('state', 'eq', state) | map(attribute='entity_id') | list ) -%}
        {%- for entity in value_entities -%}
          {% if not (entity.startswith('light.grp_') or is_state_attr(entity, 'type', 'browser_mod')) %}
            {% set value_light.lights = value_light.lights + [state_attr(entity, 'friendly_name')] %}
          {%- endif %}
        {%- endfor -%}
        {%- if value_light.lights | length == 0 %}
          Aucune Lampe Allumée !
        {%- else %}
          {{ value_light.lights | join(', ') }}
        {%- endif %}

cela fonctionne mais c’est le nombre total de lumière qui ne va pas il y en a trop
D’où le souhait de filtrer sur ce que je connais donc la syntaxe des « vrai lumière »

Merci de votre aide

Regarde plutôt du côté de ce post :

Bonjour @Clemalex

Merci pour le lien mais c’est pareil avec cette solution en fait !

J’ai un nombre de light de 58 avec le lien et 56 avec mon code adapté déjà un peu !
Or je n’ai pas tout ça en lumière (38 en Zigbee et 4 en Zwave) donc il m’en trouve en plus
J’ai 16 Groupe de Lumières dans les entrées

Ce qui me donne bien 58 !

Mais je n’arrive pas à supprimer mes grp light.ecl_xxxxxx qui est l’appellation dans les entrées

J’ai testé comme ceci

{{ states.light 
  | rejectattr('attributes.entity_id', 'defined') 
  | rejectattr('attributes.friendly_name', 'match', 'GRP ECL')
  | selectattr('state', 'eq', 'off')
  | list | count
  }}

et mes lumières ont cette nomenclature en gros

Bonjour. Je relance le sujet. Car il m’intéresse mais mon statut de « super débutant » m’empêche pour l’instant de comprendre ou il faut ajouter ces lignes de code. Désolé de ma naïveté. Merci

Bonjour,

Pour ma part je trouvais qu’il y avait un peu trop d’exception (selectattr et rejectattr) à gérer, je suis parti sur une version un peu plus simple.

J’ai d’abord crée un label

J’ai ensuite assigné le label à tout ce qui est pour moi une lampe

Et pour finir je crée un helper de type « template sensor » avec le code qui suit (ici pour le compteur de lampes allumées

{% set result = namespace(entities=[]) %}
{% set entity_list = label_entities('lampe') -%}
{% for item in entity_list -%}
  {% for state in states | selectattr('state','eq', 'on' ) | selectattr('entity_id', 'eq', item)-%}
    {% set result.entities = result.entities + [state.name] %}
  {% endfor -%}
{% endfor -%}
{{ result.entities | count }}

Pour la version liste des lampe allumée, la même chose mais on change la dernière ligne :

{%- set result = namespace(entities=[]) %}
{%- set entity_list = label_entities('lampe') -%}
{%- for item in entity_list -%}
  {%- for state in states | selectattr('state','eq', 'on' ) | selectattr('entity_id', 'eq', item)-%}
    {%- set result.entities = result.entities + [state.name] -%}
  {%- endfor -%}
{%- endfor -%}
{{ '\r\n - ' ~ result.entities|unique|join('\r\n- ')}}

Et si besoin pour le dashboard un affichage simpliste

Deux « soucis » à cette version :

  • Le refresh de la valeur n’est pas immédiat (un peu moins d’une minute)
  • Lors d’ajout de nouvelle lampe/ampoule il faut penser à définir son labal

Joyeusement copier d’ici hacf.f

1 « J'aime »