Automatiser l'interface avec des templates?

Bonjour à tous,

J’ai actuellement une carte (par pièce) qui ressemble à ça :

Avec un yaml qui ressemble à ca !
type: custom:stack-in-card
mode: vertical
keep:
  background: true
  margin: true
  outer_padding: true
cards:
  - type: custom:mushroom-chips-card
    chips:
      - type: light
        entity: light.coin_salle_a_manger
        content_info: name
        name: Coin salle à manger
        tap_action:
          action: toggle
      - type: light
        entity: light.lampe_canape
        content_info: name
        name: Canapé
        tap_action:
          action: toggle
      - type: light
        entity: light.philips_hue_go
        name: Philips Go
        content_info: name
        tap_action:
          action: toggle
      - type: light
        entity: light.prise_spots_canape
        content_info: name
        name: Coin canapé
        tap_action:
          action: toggle
      - type: light
        entity: light.lampe_salle_a_manger
        content_info: name
        name: Table
        tap_action:
          action: toggle
      - type: light
        entity: light.prise_cheminee
        content_info: name
        name: Cheminée
        tap_action:
          action: toggle
      - type: light
        entity: light.prise_etoile_salon
        content_info: name
        name: Étoile
        tap_action:
          action: toggle
      - type: light
        entity: light.lampe_tele
        content_info: name
        name: Télé
        tap_action:
          action: toggle
    alignment: center

ce qui est (très) verbeux. Alors que je peux récupérer toutes mes entités light de mon salon comme ça :

{{ area_entities('salon')  | select('match', 'light') | list }}

Du coup, sauriez-vous s’il est possible de facturiser tout ça avec un code qui ressemblerait à quelque chose comme ça ? Dans " Outils de développement" ça m’affiche bien ce que j’attend, mais clairement, ça ne passe pas via l’éditeur de cartes…

type: custom:stack-in-card
mode: vertical
keep:
  background: true
  margin: true
  outer_padding: true
cards:
  - type: custom:mushroom-chips-card
    chips:
      {%- for mylight in area_entities('salon')  | select('match', 'light') %}
      - type: light
        entity: {{ mylight }}
        content_info: name
        name: {{ state_attr(mylight, 'friendly_name') }}
        tap_action:
          action: toggle
    {%- endfor %}
    alignment: center

ça aurait en plus l’immense avantage de se mettre à jour tout seul quand je rajoute / enlève une lampe d’une pièce :slight_smile:
Edit : et c’est bien évidemment un exemple, l’idée serait que ce soit adaptable à n’importe quel type de carte

Un gros merci d’avance pour toutes vos idées, et bonne journée !

Salut,
avec auto entities

2 « J'aime »

salut,
je crois que tu devrais regarder auto-entities

2 « J'aime »

Haha, belle synchro avec @WarC0zes :wink:

Je note votre solution, au moins pour cette carte.

Mais j’ai rajouté un petit edit en bas de mon message, mon rêve serait que ce soit généralisable à tout type de carte, par exemple pour peupler un plotly-graph en fonction des différents capteurs de températures d’un étage, …

Merci en tout cas !

Edit : pardon, j’ai regardé trop vite… ça semble effectivement s’appliquer à potentiellement tout et n’importe quoi, ça m’a l’air parfait !

Un énorme merci à tous les deux !

1 « J'aime »

Et donc après quelques adaptations, mon code final :

type: custom:auto-entities
show_empty: false
card:
  type: custom:mushroom-chips-card
  alignment: center
card_param: chips
filter:
  template: |
    {%- set ns = namespace(select=[]) %}
      {%- for mylight in area_entities('salon')  | select('match', 'light') %}
        {%- set name = state_attr(mylight ,"friendly_name") %}
        {%- set icon_color = iif( states(mylight) =='off', '#FFFFFF', '#FF9800') %}
        {%- set ns.select = ns.select + [{
            'type': 'template',
            'icon': 'mdi:lightbulb',
            'content': name,
            'entity': mylight,
            'icon_color': icon_color
        }] %}
    {%- endfor %}
    {{ ns.select }}

:pray: :+1:

3 « J'aime »