Nombre lumière dans groupe

Bonjour

Question sûrement facile pour vous les pros, mais pour mon mode amateur pas simple dsl.

J’ai créer un groupe de porte dedans y’a 6 portes.
Quand elle sont toutes fermer cela indique désactiver ou fermer.
J’aimerais afficher dans une card ou badge le nombre de porte ouverte de ce groupe tout simplement.
Merci à vous

Hello,

Un truc dans le genre dans un template (tu peux tester avec les outils de développement):

{{ 
  expand('light.living_lights') 
    | selectattr('state', 'in', ['on','open'])
    | list
    | count
}}

Tu mets ton groupe à la place de light.living_lights et le status que tu veux dans une liste à la place de ['on, 'open']

Merci, parfait pour en mod card,
Saurait tu comment faire pour le mode badge ?
Merci

Hello

Perso j’ai fait ça dans un template pour le groupe de toutes mes lumières :

- sensor:

  ##Stats du groupe toutes les lumières
  - name: 'Etat lumières'
    unique_id: etat_lumieres
    icon: mdi:lightbulb-group
    state: >-
      {{ expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| selectattr('state','eq','on')|map(attribute='entity_id')|list|count }}/{{expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| map(attribute='entity_id')|list|count }}
    attributes:
      total_on: >-
        {{ expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| selectattr('state','eq','on')|map(attribute='entity_id')|list|count }}
      total_off: >-
        {{ expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| selectattr('state','eq','off')|map(attribute='entity_id')|list|count }}
      total_light: >-
        {{ expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| map(attribute='entity_id')|list|count }}
      resume: >-
        {{ expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| selectattr('state','eq','on')|map(attribute='entity_id')|list|count }}/{{expand(state_attr('light.toutes_les_lumieres', 'entity_id'))| map(attribute='entity_id')|list|count }}

Ca donne ça :

Et dans les badges, en appelant cette entité, tu peux afficher soit l’état
image
Soit juste un des attributs, genre total_on
image

L’avantage c’est que si tu rajoute des entités dans ton groupe d’origine, ca se modifie automatiquement.
J’avais pas pensé à faire ça pour les portes et les fenetres, ça pourrait m’éviter de faire le tour de la maison quand je pars !

4 « J'aime »

Merci

Je suis pas un pro et les templates je connaît pas trop.
D’après ce que j’ai lu faut crée un fichier .yaml et mettre une ligne dans le fichier configuration.

Si c’est cela il me suffit de mettre dans un fichier ton code si j’ai bien compris
Merci pour ton aide

Y’a pas mal de façon différentes possibles avec HA
En l’occurence pour ne pas avoir un gigantesque fichier configuration.yaml tu peux effectivement inclure un fichier yaml pour les templates

Dans mon configuration.yaml, j’ai cette ligne : template: !include templates.yaml
Et dans le fichier templates.yaml, j’ai le code que je t’ai donné plus haut
Dans ce second fichier, tu pourras créer autant de sensors (ou autres) template que tu veux

On peut aussi faire des capteurs template directement à partir de l’interface graphique, mais ça ne gère pas les attributs (sauf erreur de ma part), donc ça perd un peu de son intéret.

1 « J'aime »

Salut, tu devrais trouver ton bonheur ici.

1 « J'aime »

Bonjour,
tu peux utiliser la carte mushroom template, et utiliser un template directement dans la carte sans passer par un template sensor.
image

              type: custom:mushroom-template-card
              entity: group.grp_lumieres_rdc
              primary: Lumières RDC
              tap_action:
                action: more-info
              secondary: |
                {% set all = expand('group.grp_lumieres_rdc')| list -%}
                {% set close = all | selectattr('state','eq','off')|list|count%}
                {% set open = all | selectattr('state','eq','on')|list|count%}
                Éteintes : {{close}} / Allumées : {{open}}
              icon: |
                {% if is_state('group.grp_lumieres_rdc', 'on') %} 
                  mdi:lightbulb-group
                {% else %}
                  mdi:lightbulb-group-off
                {% endif %}
              icon_color: |
                {% if is_state('group.grp_lumieres_rdc','on') %}
                  red
                {% else %}
                  green
                {% endif %}
              badge_icon: |-
                {% set all = expand('group.grp_lumieres_rdc')| list -%} 
                {% set open1 = all | selectattr('state','eq','on')|list|count%}
                {% if open1 == 0 %}
                  mdi:numeric-0
                {% elif open1 == 1 %}
                  mdi:numeric-1        
                {% elif open1 == 2 %}
                  mdi:numeric-2
                {% elif open1 == 3 %}
                  mdi:numeric-3
                {% elif open1 == 4 %}
                  mdi:numeric-4
                {% elif open1 == 5 %}
                  mdi:numeric-5
                {% elif open1 == 6 %}
                  mdi:numeric-6
                {% elif open1 == 7 %}
                  mdi:numeric-7
                {% elif open1 == 8 %}
                  mdi:numeric-8
                {% elif open1 == 9 %}
                  mdi:numeric-9
                {% elif open1 == 10 %}
                  mdi:numeric-10
                {% elif open1 >= 11 %}
                  mdi:numeric-9-plus 
                {% else %}
                  none
                {% endif %}
              badge_color: |
                {% set all = expand('group.grp_lumieres_rdc')| list -%} 
                {% set open1 = all | selectattr('state','eq','on')|list|count%}
                {% if open1 == 0 %}
                  green
                {% else %}
                  red
                {% endif %}
              card_mod:
                style: |
                  :host {
                    --mush-badge-icon-size: 1.5em;
                    --mush-icon-symbol-size: 0.8em;
                  }
                  ha-card {
                    height: 52px !important;
                    box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.5);
                    border: 1px rgba(0,0,0,1.0) outset;  
                  }
1 « J'aime »