Comment récupérer un attribut

Bonjour,
je tente d’adapter pour un sensor qui me donne la liste des updates avec ce code afin de récupérer le friendly_name ou le title:

{{ states.update|selectattr('state','eq','on')|map(attribute='friendly_name')|list }}

Dans l’outil modèle j’ai comme résultat:
image

Alors que si je remplace friendly… par entity_id cela foncitonne:
image

Je me trompe d’approche ou n’utilise pas les bons filtres ?

Pour les détails, je suis parti de ce sensor trouvé sur le forum et veux ajouter la partie display_name:

    updates_available:
      unique_id: updates_available_123654789
      icon_template: "{{ iif(states('sensor.updates_available')|int(-1) > 0,'mdi:cloud-upload','mdi:cloud-check') }}"
      value_template: >
        {% set entities = state_attr('sensor.updates_available','entity_id') %}
        {% if entities != none %} {{ entities|count }}
        {% else %} {{ entities }}
        {% endif %}
      attribute_templates:
        entity_id: "{{ states.update|selectattr('state','eq','on')|map(attribute='entity_id')|list }}"
        display_name: "{{ states.update|selectattr('state','eq','on')|map(attribute='friend_name')|list }}"

Pour ensuite afficher ce type de carte:

    type: conditional
    conditions:
      - entity: sensor.updates_available
        state_not: '0'
    chip:
      type: template
      entity: input_boolean.notifications
      icon: mdi:home-assistant
      tap_action:
        action: fire-dom-event
        haptic: heavy
        browser_mod:
          service: browser_mod.popup
          data:
            style: '--popup-background-color: transparent;'
            size: normal
            content:
              type: custom:mushroom-template-card
              entity: ''
              icon: mdi:store
              icon_color: |-
                {% if states(sensor.updates_available') == "0" %}
                green
                {% else %}
                orange
                {% endif %}
              primary: Systeme
              secondary: >-
                {% if states('sensor.updates_available') == "0" %}

                Up-to-date

                {% else %}

                {% for item in state_attr('sensor.updates_available', 'entity_id') -%}

                {%- if loop.first %}{{states('sensor.updates_available')}}
                update(s): 

                {% elif loop.last %} et {% else %}, {% endif -%}

                '{{ item.display_name | lower }}'

                {%- endfor %}

                {% endif %}
              multiline_secondary: true
              fill_container: false
              tap_action:
                action: navigate
                navigation_path: ../parameters
      hold_action:
        action: none
      card_mod:
        style: |
          ha-card {
            --chip-border-width: 0;
            --chip-box-shadow: {{ "0px 0px 30px red" if is_state('input_boolean.update', 'on') }};
          }
          /* Notification indicator */
          ha-card:after {
            {% if states('sensor.updates_available', ['1','2','3','4','5','6','7','8','9','10']) %}
              content: "{{ states('sensor.updates_available') |float |int }}";
              position: absolute;
              display: flex;
              justify-content: center;
              align-items: center;
              background: rgb(var(--rgb-red));
              color: var(--card-background-color);
              font-weight: bolder;
              border-radius: 50%;
              top: 0;
              width: 100%;
              height: 100%;
              font-size: 0.3em;
            {% endif %}
            /* Position & style notification */
            position: absolute;
            background: rgb(var(--rgb-red));
            border-radius: 50%;
            top: -3px;
            right: -3px;
            width: 15px;
            height: 15px;
          } 
          .content {
            animation: boing 3s ease infinite;
            transform-origin: 50% 90%;
          }
          @keyframes boing {
            0% { transform: scale3d(1, 1, 1); }
            7% { transform: scale3d(1.25, 0.75, 1); }
            10% { transform: scale3d(0.75, 1.25, 1); }
            12% { transform: scale3d(1.15, 0.85, 1); }
            16% { transform: scale3d(0.95, 1.05, 1); }
            19% { transform: scale3d(1.05, 0.95, 1); }
            25% { transform: scale3d(1, 1, 1); }
          }

Merci pour votre aide :slight_smile:

Salut,

Regarde ça …

C’est presque déjà tout fait

Merci !

Donc cela fonctionne et au passage j’ai du modifier ton exemple en enlevant s sur hacs_entitie sans quoi cela ne fonctionnait pas pour moi :
image

    <td></ha-icon></font>{{ hacs_entitie.display_name }} ⭐ {{ hacs_entitie.installed_version }} ⏩ {{ hacs_entitie.available_version }}</td>

J’aimerai quand même comprendre pourquoi cette formulation ne fonctionne pas:

{{ states.update|selectattr('state','eq','on')|map(attribute='friendly_name')|list }}

C’est pas impossible que la syntaxe ai changé, c’est un code de plus d’un an

1 « J'aime »

ça c’est la bonne syntaxe

{{ states.update|selectattr('state','eq','on')|map(attribute='attributes.friendly_name')|list }}