Customisation d'une valeur d'un attribut

J’imagine que j’ai mal cherché sur le forum pour répondre à cette question qui semble assez simple pour un connaisseur.
Voila, je cherche tout simplement à customizer la valeur (texte) d’un attribut qui m’est retourné par une entité.
Il s’agit en l’occurrence du dongle Lixee-Zlinky (mqtt) derrière un compteur Linky qui retourne tout un tas de données pour le suivi de consommation.

L’attribut qui me perturbe est celui qui retourne l’état actuel de l’option tarifaire en fonction des périodes.

C’est déjà bien il retourne bien des valeurs mais je souhaiterais personnaliser ces valeurs retournées.

Il y en a 2 dans mon cas qui sont retournées

  • HC.. (pour indiquer le tarif heures creuses)
  • HP.. (pour indiquer le tarif heures pleines)

Et bien je souhaite tout simplement modifier HC.. et HP… pour avoir un texte plus explicite dans mon dashboard.

J’imagine qu’il y a plusieurs façons de faire mais je n’ai abouti à rien de concret (modif mqtt, card lovelace qui ferait le job, nodered…)

Du coup, je suis parti sur le fait de dupliquer l’entité en question pour tenter de la customiser.

C’est au niveau customisation que je dois mal m’y prendre.

Dans le vif, je suis donc passé par un template pour créer une entité à partir de celle d’origne

Entité d’origine : sensor.zlinky_active_register_tier_delivered avec l’attribut concerné

« active_register_tier_deliveerd » qui retrourne HP.. ou HC.. en fonction du tarif.

Je suis donc passé par le fichier templates.yaml pour copier l’entité (afin de ne pas bricoler celle d’origine) ou j’ai collé ca pour récupérer l’attibut en question sur la nouvelle entité (sensor.edf_tarif) :

- sensor:
  - name: edf_tarif
    unique_id: sensor.edf_tarif
    state: "{{ state_attr('sensor.zlinky_active_register_tier_delivered', 'active_register_tier_delivered') }}"

Du coup, je récupère bien la nouvelle entité (sensor.edf_tarif) mais je n’ai pas l’attribut dans sa liste en revanche je vois sont état (premier souci ?)

  • Duc coup, je suppose que je dois ajouter un champ (attribut) dans template pour qu’il soit listé ?

Je passe en suite par le fichier customize.yaml pour bricoler les valeurs que je souhaite récupérer et
Je fourni les nouvelles valeurs pour l’attribut dans customize.yaml (mais j’imagine que tant que je ne vois pas l’attribut dans template, je ne peux pas agir dessus)

sensor.edf_tarif:
  active_register_tier_delivered:
    'HC..': creux
    'HP..': plein

La custo semble bien matcher avec la nouvelle entité mais l’interprétation de l’attribut du coup ne sert à rien pour l’instant.

Comme c’est du mqtt, peut-être y a t’il une syntaxe à respecter pour exposer l’attribut dans le fichier template. En espérant que cela soit assez clair.

Sinon, je peux me contenter d’une autre solution (transformation du texte dans une card par exemple du genre si HC.. alors renvoie Heures creuses)

Merci pour votre aide.

`

Citation

`

Renseigner votre problème

Ma configuration


Texte à remplacer par votre configuration

Comment récupérer ma configuration :
Dans votre HA, Menu latéral Paramètres > Système > Corrections puis les trois petits points en haut a droite > Informations Système puis une fois en bas Copier


Bonjour,

Si tu veux avoir Creux/Plein au lien de HC/HP, il faut qu tu passes par ‹ IF ›

{{ is_state_attr('sensor.zlinky_active_register_tier_delivered', 'active_register_tier_delivered', 'HP') | iif('Heures Pleines', 'Heures Creuses') }}

Cordialement,

Abel

Bonjour et merci pour ton retour rapide. Je crois saisir le raisonnement même si je ne maitrise pas la fonction. En gros IIF (pas IF ?) check l’état de l’attribut. Si il il voit HP il renvoie la premiere nouvelle valeur (Heures pleines) sinon il renvoie l’autre valeur par défaut ?

Ca a l’air d’être pris en compte mais pour l’instant il doit y avoir un souci dans la syntaxe car il semble renvoyer la seconde valeur alors que l’état actuel est HP…
image

Template

Ce que j’ai mis dans le templates.yaml (et du coup pas besoin de passer par du custo ?)

- sensor:
  - name: edf_tarif
    unique_id: sensor.edf_tarif
    state: 
      "{{ is_state_attr('sensor.zlinky_active_register_tier_delivered', 'active_register_tier_delivered', 'HP..') | iif('Heures Pleines', 'Heures Creuses') }}"

J’ai aussi rajouté les … (2 points) qui viennent dans la valeur (HP… et HC…)

Edit : Bon il est possible que j’e n’avais pas bien rechargé la conf et qui plus est le tarif vient de changer il y a 2 minutes. Du coup; ca a l’air de fonctionner. Je vais faire des tests en modifiant la valeur à checker (HP, HC) pour voir le changement de valeur mais ça a l’air good. Merci encore pour ton aide.

Un petit truc au cas où…Saurais tu également comment je pourrais faire apparaitre l’attribut en question (active_register_tier_delivered:) dans la liste de attributs de mon nouveau sensor.
Effectivement, on ne le voit pas dans sa liste d’attributs contrairement à l’entité d’origine.

C’est pas gênant non plus mais je suis curieux :wink:

De cette manière,

- sensor:
  - name: edf_tarif
    unique_id: sensor.edf_tarif
    state: 
      "{{ is_state_attr('sensor.zlinky_active_register_tier_delivered', 'active_register_tier_delivered', 'HP..') | iif('Heures Pleines', 'Heures Creuses') }}"
    attributes:
      zlinky_tier: " {{ state_attr('sensor.zlinky_active_register_tier_delivered','active_register_tier_delivered') }}"
      attribute_2: ...
      attribute_3: ...

remplace attribute_2 et attribute_3 par le nom/label que tu veux ( en minuscule et sans accents, …) si tu veux d’autres attibuts sinon supprime les 2 lignes

Abel

Ah parfait ! J’avais un doute sur la façon d’indenter attributes.
C’est magique quand ça fonctionne du premier coup :wink:
Merci de nouveau !