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 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 : Template - Home Assistant

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.

2 « 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.

Bonjour à tous,
je souhaite recup une valeur sensor current humidity qui ne remonte pas comme une entité (cela fait partie de ma PAC Airzone).
Comment dois je faire pour recuperer cette entité pour l’intégrer dans une card?


Bonjour @Plouf34
Si tu travail en .yaml tu peux utiliser
{{state_attr('climate.systeme_1_ch_amis', 'current_humidity')}}
:slight_smile:

Euh… C’est pour intégrer à une card
Pour mettre par exemple : « Humidity : 52% »

La card:
Capture1

Le code de la card:

type: grid
cards:
  - type: horizontal-stack
    cards:
      - type: custom:simple-thermostat
        style: |
          ha-card {
            --st-font-size-xl: 25px;
            --st-font-size-m: 10px;
            --st-font-size-title: 18px;
            --st-font-size-sensors: 12px;
            --st-spacing: 2px;
            --st-fault-inactive-color: var(--secondary-background-color)
            --st-fault-active-color: var(--accent-color)
        entity: climate.systeme_1_sejour
        label:
          temperature: Temp
        layout:
          mode:
            names: false
            icons: true
            headings: false
          step: column
        header:
          icon: mdi:silverware
          name: Salle à manger
        step_size: '0.5'
        view_layout:
          mode:
            names: false
            icons: true
            headings: false
          step: column
      - type: custom:simple-thermostat
        style: |
          ha-card {
            --st-font-size-xl: 25px;
            --st-font-size-m: 10px;
            --st-font-size-title: 18px;
            --st-font-size-sensors: 12px;
            --st-spacing: 2px;
            --st-fault-inactive-color: var(--secondary-background-color)
            --st-fault-active-color: var(--accent-color)
        entity: climate.systeme_1_ch_amis
        label:
          temperature: Temp
        header:
          icon: mdi:bed
          name: Ch.Amis
        layout:
          mode:
            names: false
            headings: false
          step: column
        step_size: '0.5'
        view_layout:
          mode:
            names: false
            headings: false
          step: row
  - type: horizontal-stack
    cards:
      - type: custom:simple-thermostat
        style: |
          ha-card {
            --st-font-size-xl: 25px;
            --st-font-size-m: 10px;
            --st-font-size-title: 18px;
            --st-font-size-sensors: 12px;
            --st-spacing: 2px;
            --st-fault-inactive-color: var(--secondary-background-color)
            --st-fault-active-color: var(--accent-color)
        entity: climate.systeme_1_ch_clarisse
        label:
          temperature: Temp
        layout:
          mode:
            names: false
            icons: true
            headings: false
          step: column
        header:
          icon: mdi:bed
          name: Ch.Clarisse
        step_size: '0.5'
        view_layout:
          mode:
            names: false
            icons: true
            headings: false
          step: row
      - type: custom:simple-thermostat
        style: |
          ha-card {
            --st-font-size-xl: 25px;
            --st-font-size-m: 10px;
            --st-font-size-title: 18px;
            --st-font-size-sensors: 12px;
            --st-spacing: 2px;
            --st-fault-inactive-color: var(--secondary-background-color)
            --st-fault-active-color: var(--accent-color)
        entity: climate.systeme_1_ch_parents
        label:
          temperature: Temp
        header:
          icon: mdi:bed
          name: Ch.Parents
        layout:
          mode:
            names: false
            headings: false
          step: column
        step_size: '0.5'
        view_layout:
          mode:
            names: false
            headings: false
          step: row
columns: 1
square: false

Dans ce cas tu peux creer un sensor:

- platform: template
  sensors:
    ch1_humidity: #nom personnalisable
      value_template: "{{state_attr('climate.systeme_1_ch_amis', 'current_humidity')}}"
      friendly_name: "humidité" #nom personnalisable
      icon_template: mdi:temperature #icon personnalisable

tu redémarres home assistant et tu pourras l’utiliser :slight_smile: => ch1_humidity

Tu peux essayer également :

Sujet déplacé dans le sujet traitant déjà la demande.

Utilisez la recherche :mag_right: :+1: