Créer une entité à partir de l'attribut d'une entité

Bonjour à tous,

il se peut que vous ayez besoin, pour votre lovelace, vos automatisations ou node red d’avoir une entité qui représente l’attribut d’une entité existante.

afin que l’info de @Clemalex ne soit perdu voici le lien de sa reponse [AIDES] Comment ajouter les attributs d'une entité - #12 par Clemalex

mais pour éviter de parler que de la surchage pondérale de @McFly voici le code ici :

dans votre partie sensor ou dans votre fichier sensor.yaml :

sensor:

#IMC
  - platform: template
    sensors:
      john_doe_imc:
        friendly_name: 'IMC de John'
        value_template: "{{ state_attr('sensor.john_doe', 'bmi') }}" #ici, on indique que la valeur de cette entité correspond à la valeur de l'attribut 'bmi' de l'entité 'sensor.john_doe'
        attribute_templates:
          personne: 'John Doe' #création d'un attribut à l'entité crée 'sensor.john_doe_imc'
        unit_of_measurement: "kg/m²"
        icon: 'mdi:human-pregnant'
        unique_id: 'john_doe_imc_id' # identifiant UNIQUE permettant la personnalisation de l'entité 'sensor.john_doe_imc' depuis l'interface graphique 

évidemment, en personnalisant avec vos noms d’entités, ce sera beaucoup mieux.

Rappel : pour connaitre le nom de l’attribut de l’entité qui vous interesse, allez sur la page Outils de développement. E t dans l’onglet ETAT il suffit de choisir votre entité, les attributs s’afficheront.

Edit: mise à jour suite commentaire de @Makai avec correction de l’indentation et ajouts de clés (pour exemple). (@Clemalex)

pour un « sous attributs » :

Explication : merci @oncleben31

3 J'aime

Parfait !

Mais saurais tu récupérer des sous attributs ? Ca fait un moment que je cherche sans succès…

entity: switch.schedule_94325e
state: waiting

entries:
  - 0DT0000T0200A0C01
  - 0DT0200T0400A1C01
  - 0DT0400T1000A2
  - 0DT1000T1300A3C01
  - 0DT1300T2359A3C01
actions:
  - service: set_temperature
    entity: climate.daikin
    hvac_mode: heat
    temperature: 21
  - service: set_temperature
    entity: climate.daikin
    hvac_mode: heat
    temperature: 19
  - service: set_temperature
    entity: climate.daikin
    hvac_mode: heat
    temperature: 18
  - service: set_temperature
    entity: climate.daikin
    hvac_mode: heat
    temperature: 22
conditions:
  - entity: input_boolean.thermostats_ac_on_off
    match_type: is
    state: 'on'
  - entity: input_boolean.thermostats_away
    match_type: is
    state: 'off'
next_trigger: '2020-12-02T10:00:00+01:00'
friendly_name: AC Normal
icon: 'mdi:calendar-clock'

qu’appelles tu des sous attributs ? As tu un exemple ?

Comme @oncleben31, je ne vois pas ce que c’est…
:thinking:

@mycanaletto , ca par exemple :
image

le 1 est un attribut et le 2 serait un sous attribut?

Il y a pas un souci d’indentation dans le code affiché ?
Là l’unité et l’icône sont défini comme attributs du sensor (qui n’aura donc pas d’unité et l’icône par défaut).

Je corrigerai par :

sensor:

#IMC
  - platform: template
    sensors:
      mon_poids_imc:
        friendly_name: 'Mon IMC'
        value_template: "{{ state_attr('sensor.mon_poids', 'bmi') }}" #ici, on indique que la valeur de cette entité correspond à la valeur de l'attribut 'bmi' de l'entité 'sensor.mon_poids'
        unit_of_measurement: "kg/m²"
        icon_template: 'mdi:human-pregnant'

EDIT : a priori ça marche aussi de les mettre en attribut. Néanmoins ce n’est pas la façon la plus simple. La doc est ici : https://www.home-assistant.io/integrations/template/

1 J'aime

Comme ça :

sensor:
  - platform: template
    sensors:
      forecast_0:
        value_template: {{ state_attr('weather.xxx', 'forecast')[0].templow }}

Tu peux incrémenter le chiffre entre [] afin d’avoir les enregistrements suivants

pour ma part je l’utilise comme ceci :


#camera_parking_token
  - platform: template
    sensors:
      camera_parking_token:
        friendly_name: 'camera_parking_token'
        value_template: "{{ state_attr('camera.camera_parking','access_token') }}" #ici, on indique que la valeur de cette entité correspond à la valeur de l'attribut de l'entité

@mycanaletto, est ce que la réponse de @Makai est celle que tu attendais concernant les « sous attributs »?

Bien vu, merci :slight_smile:
J’avais raté le message de mycanaletto et pensais que c’était toi qui cherchait une solution…

1 J'aime

Pour compléter les réponses. En fait forecast est un attribut. Vu ce qui est écrit il contient une liste (les tirets) de dictionnaire (paires clé: valeur).

Donc une fois que tu as récupéré l’attribut, il faut que ton Jinja s’adapte à l’objet que tu récupères. Dans ton cas: objet[x].y

Avec x l’indice dans la liste (commence à 0) et y le nom de la clé dans le dictionnaire.

1 J'aime

Oui en quelque sorte… C’ets ce que j’ai appelé un sous attribut.

Par contre le concept de sous attribut n’existe pas officiellement. C’est juste l’accès à un élément d’un objet complexe stocké dans un attribut.

Oui c’est moi qui l’ai nommé ainsi et ça doit expliquer que cette entité est un un peu anarchique. C’ets le Scheduller et son auteur est en train de le réécrire.