Utilisation de paramètres fondamentaux stables via les template sensors

Bonjour à tous,

J’utilise HA depuis quelques semaines; et vue la volatilité de mes noms d’appareils (bon, à présent je les stabilise, mais j’ai longtemps hésité), je me suis dit que c’était une bonne idée (ou pas ?) de créer des template sensors avec des noms immuables pour certaines variables clé.

Ainsi, dans mon fichier templates.yaml, j’ai mis :

- sensor:
(...)
# Contient les Template Sensors (Alias) pour la stabilité des références critiques.
# --- Alias pour les entités physiques (Source unique de vérité) ---

  - name: "Alias flux puissance réseau (négatif = import)"
    unique_id: alias_grid_power_v1
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    state: >
      {{ states('sensor.gites_consometre_puissance_active') | float(0) }}
    
  - name: "Alias flux production solaire"
    unique_id: alias_pv_power_v1
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    state: >
      {{ states('sensor.atelier_onduleur_puissance_active') | float(0) }}
      
  - name: "Alias flux consommation total"
    unique_id: alias_total_consumption_v1
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    state: >
      {% set pv = states('sensor.alias_pv_power_v1') | float(0) %}
      {% set grid = states('sensor.alias_grid_power_v1') | float(0) %}
      {{ (pv - grid) | round(0) }}
      
  - name: "Alias flux consommé depuis PV V1"
    unique_id: alias_pv_consumption_v1
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    state: >
      {% set grid = states('sensor.alias_grid_power_v1') | float(0) %}
      {% set pv   = states('sensor.alias_pv_power_v1')  | float(0) %}
      {{ (pv - (grid if grid > 0 else 0)) | round(0) }}

Mais voilà, si je vais voir ensuite mes entités, je vois que HA crée des noms de sensor basés sur “name” et s’assoit sur les unique_id dont je rêvais dans mon templates.yaml :cry:
Du coup, je suis censé les modifier 1 par 1 dans l’UI. Assez galère.

Donc je dois sûrement m’y prendre mal.

:backhand_index_pointing_right:t2: Est-ce que j’ai raison d’essayer de créer des noms de paramètres de base faciles à mettre à jour si les appareils sous-jacents bougent ?

:backhand_index_pointing_right:t2: Si oui, quelle est la meilleure pratique / la méthode la plus élégante ?

Salut,
Tu viens de jeedom j’imagine pour faire ce genre de choses
Ça n’as pas trop de sens de créer des sensors virtuels dans HA ça ne fait que dupliquer les informations.
Le jour où tu dois changer des éléments il suffit de garder le même nom et cela conserve la continuité des informations

Merci de ta réponse.
Donc toi tu es team démerde-toi-pour-donner-le-bon-nom-cohérent-à-tes-entités-une-bonne-fois-pour-toutes ?

Question subsidiaire : et dans ce cas, tu préconises quelle règle de nommage ?

Salut @mll

Attention au dérapage… Ici on reste poli…

Comme indiqué plus haut la notion de virtuel (à la jeedom que tu évoques ou du moins qui y ressemble, et que ne confirme ou n’infirme pas ) n’a pas de sens.
Il n’y a pas besoin de persévérer dans ce sens, @ddfdom l’indique clairement : seul gain doubler la configuration et sa complexité …
Et malgré ce que je tu penses, relis un peu. Le renommage est la solution. Elle s’applique dès le début.
Après si ta question conserne la bonne façon de trouver le nom, ce qui n’est pas la question initiale, c’est autre chose.

Et donc puisque tu as édité pour expliciter. As-tu regarder les résultats de recherche?
Par exemple

Merci de ta réponse, désolé pour le “dérapage”, en tout cas il n’y avait strictement rien d’agressif dans ma réponse, plutôt une façon assez argotique de m’exprimer.

Mais en fait pour moi je crois que c’est le fond de mon problème. Voilà, condensé en une semaine conceptuelle, le chemin que j’ai fait en quelques semaines :

  • lundi : “bon, go donner des noms français à mes appareils, Molière FTW !”
  • mardi : “bon, on va décider d’aller du plus précis vers le plus large, genre type_appareil_pièce c’est plus pratique quand dans les tableaux Z2M les noms sont tronqués”
  • mercredi : “bon en fait mon coco tu devrais mettre des noms en anglais, c’est plus universel et ça facilitera quand tu devras demander de l’aide sur des communautés anglophones”
  • jeudi : “bon en fait faire du plus large vers le plus précis, c’est mieux quand on trie, donc pièce_appareil_type”
  • vendredi : “oh tiens quelle surprise, c’est le souk tes appareils ils sont nommés de façon chaotique, tu ne t’y retrouves pas. bon allez, on les renomme tous. ah mais oui du coup ça a un impact sur tes tdb et tes automatismes. pas simple pas simple…”
  • samedi : “bon, j’ai bien galéré à tout nommer, mais quand même j’ai un doute, est-ce que je ne devrais pas nommer mes équipements et capteurs en français ?”
  • dimanche : “bon tu sais quoi, tu te fais des template sensors qui eux ne bougeront pas et seront référencés dans les automatismes, scripts et autres tableaux de bord, et si tu décides de renommer tes capteurs t’auras que templates.yaml à mettre à jour. et puis t’as demandé à ChatGPT qui a dit ‘mais tu as une idée géniale, fonce, bien sûr qu’il faut faire comme ça’, un peu comme l’autre jour quand il t’a dit ‘mais bien sûr qu’écrabouiller ta voiture c’est la solution à tes problèmes de lave-vitre qui se bouchent. veux-tu que je t’explique comment rouler à 160 sur une route de montagne ?’”
  • …on arrive à lundi, et je réalise que la clef c’est une règle de nommage claire et cohérente, robuste, pérenne… :sweat_smile: et avant de tout reprendre, mesdames messieurs je m’en remets à votre expérience sur ce sujet.
2 « J'aime »

ah merci, je vois ta réponse avec edit.

en fait j’ai lu pas mal de tuto, fils de forums FR et EN qui visent à donner des conseils sur la question, mais j’ai la sensation que plus j’en lis plus je suis perdu, car si je comprends bien, HA fait beaucoup de modifications conceputelles ces derniers années (moins de modif directe des YAML, plus de modifs de l’UI, par exemple), et les conseils de, mettons, 2023 ou 2024 ne sont plus forcément les bonnes pratiques de fin 2025.

1 « J'aime »

Même si effectivement HA évolue et utilise de moins en moins le yaml, le concept ne change pas :
Petit récap des notions :

:small_blue_diamond: entity_id

  • Définition : Identifiant unique d’une entité dans Home Assistant, sous la forme domain.object_id (ex. sensor.temperature_salon).
  • Usage : Sert à référencer l’entité dans les automatisations, scripts, tableaux de bord, etc.
  • Modifiable ? : Non directement dans l’interface. Il est généré automatiquement à partir du nom de l’objet (object_id). Pour le modifier, il faut :
    • Renommer l’objet dans l’intégration (si possible).
    • Utiliser une entité personnalisée via YAML ou customize: dans configuration.yaml.

:small_blue_diamond: name

  • Définition : Nom donné à l’entité lors de sa création ou dans sa configuration.
  • Usage : Sert à identifier l’entité dans l’interface ou dans les intégrations.
  • Modifiable ? : Oui, dans l’interface graphique ou via YAML selon l’intégration. Modifier le name ne change pas le entity_id.

:small_blue_diamond: friendly_name

  • Définition : Nom lisible et convivial affiché dans l’interface utilisateur (Lovelace, cartes, etc.).
  • Usage : Améliore la lisibilité pour l’utilisateur final.
  • Modifiable ? : Oui, via :
    • L’interface graphique (dans les paramètres de l’entité).
    • Le fichier customize: dans configuration.yaml :

YAML

homeassistant:
  customize:
    sensor.temperature_salon:
      friendly_name: "Température du salon"

:small_blue_diamond: unique_id

  • Définition : Identifiant global unique attribué par l’intégration (souvent basé sur l’adresse MAC, UUID, etc.).
  • Usage : Permet à Home Assistant de suivre l’entité même si son entity_id change.
  • Modifiable ? : Non. Il est défini par l’intégration et ne peut pas être modifié manuellement. Il est essentiel pour permettre la personnalisation via l’interface graphique.

Bref le seul truc vraiement important pour l’utilisation dans les automatisations et scripts c’est le name ou l'entity_id, quasi la même chose dans 99% des cas. Dans ton cas Alias flux consommé depuis PV V1 est trop explicite et pas exploitable du point de vue technique. C’est là ou il faut faire un truc assez générique et simple

Pour les affichages, tu peux utiliser le friendly_name, voire remplacer à la volée dans la carte.

2 « J'aime »

Donc sur cet exemple, pour voir si j’ai bien compris, penses-tu que changer le entity_id en building_consumption_from_pv irait dans le bon sens ?

Difficile à dire, car j’ai pas vraiment connaissance de ce que ça mesure/représente mais oui. Et ça dépend aussi de chacun dans la façon de s’organiser

Perso j’ai toujours un truc du genre :
sensor.type_piece_valeur

Donc sensor.sonde_*_temperature me donne toutes les températures connues dans HA et sensor.sonde_salon_* me donne toutes les valeurs dans le salon
Je ne garde jamais les références aux numéro de série ou aux marques si ce n’est pas important

1 « J'aime »

qu’apporte le type_, au final ? N’est-il pas redondant avec le préfixe (switch., sensor.…) ? sensor.suite_temperature ferait tout aussi l’affaire dans tes filtrages : sensor.*_temperature et sensor.salon_*

P.S.: je découvre qu’on peut utiliser les wildcards dans les outils de dev, c’est cool. :slight_smile:

Pour le nom d’un sensor ou autre

Le plus simple est de donner un nom explicite avec la zone et une information plus précise

Exemple :
Light.salon_lustre
Light,interrupteur_salle_a_manger_spot

Ne pas oublier de les mettres dans leur zone/area

C’est ce qui es préconiser et utiliser par pas mal de monde que ce sois sur le forum EN, REDDIT, etc…

1 « J'aime »

Non parce qu’un appareil ne fait pas forcément qu’une seule entité et encore moins que des sensor.

binary_sensor.sonde_salon_battery_plus_low
sensor.sonde_salon_humidity

Du coup *sonde_salon* regroupe tout ce qui concerne ce capteur

Merci de ta réponse.
Dans ton exemple, le fait que tu aies dans le premier cas pièce_appareil, et dans le deuxième cas appareil_pièce_précision n’est pas un problème ?

ok, si j’ai bien compris en fait ce que tu appelles type_ (et que je pensais être bouton, capteur, etc.) est plutôt un appareil ? Donc si tu avais un salon grand comme celui de Jeff Bezos et que tu aurais 3 sondes de t° et humidité dans ton salon, tu les appellerais sonde1_salon, sonde2_salon, pour avoir les entités

sensor.sonde1_salon_temperature

sensor.sonde1_salon_humidity (ou sensor.probe1_livingroom_humidity ? ou sensor.sonde1_salon_humidite ? :sweat_smile: (*) )

binary_sensor.sonde1_salon_battery_plus_low

sensor.sonde2_salon_temperature

sensor.sonde2_salon_humidity

binary_sensor.sonde2_salon_battery_plus_low

(*) Question subsidiaire : est-ce je me prends la tête pour rien à essayer d’être homogène dans les langues ? Rien qu’en quelques semaines j’ai une floppée de sensors en tout genre, et quand je fais une recherche sur, mettons, salon, en n’étant pas homogène je galère à retrouver une entité que j’avais mis sous sensor.livingroom_temperature.

non pas de problème comme tu peut le voir le premier mot indiquer l’entité light (lumière) et ensuite il indique la piece et l’emplacement

sans oublier que ces entité sont dans la bonne zone/area dans la maison vue par HA

Oui c’est proche de la notion d’appareil, on va dire le nommage le plus générique/englobant.

Et oui j’ia bien sonde1 /sonde2 parfois

C’est tout le souci pour bien démarrer… C’est facile de mettre une norme au début et de la suivre assez précisément dans le temps. Si tu laisses HA faire au bout de 5 mois, c’est l’anarchie (personnellement).
C’est jouable de laisser HA faire, ça n’empêche pas que ça fonctionne mais c’est une gymnastique d’esprit à avoir d’une façon ou d’une autre.

C’est là où la notion de pièce/area qu’évoque Barto95 est intéressante, par contre historiquement ça ne permet pas de tout faire aussi simplement que les filtres.
Par exemple, trouver tous les éléments d’une pièce, ça marche bien, mais derrière si tu ne pas faire un critère de sélection, tu es revenu au point de départ.
Et puis de temps en temps ça ne marche pas partout : retrouver dynamiquement la pièce d’un appareil pour l’exploiter c’est OK, mais pas dans la config yaml de google home car ça retourne rien ..

1 « J'aime »

C’est encore moi.

Je ne comprends pas comment HA attribue des ( name ? friendly name ?). Parfois c’est en français, parfois en anglais, parfois… un mélange des deux !

Mais surtout, si je veux corriger / clarifier le entity ID, parfois un peu fantaisiste (ou dans la mauvaise langue), le sensor devient indisponible. Exemple : quand je tente de renommer sensor.batiment_consometre_tension_de_la_phase_a en sensor.batiment_consometre_tension_phase_a, le sensor devient unavailable. Pourquoi ?

Salut

Sur l’affichage, tu t’en fous un peu. C’est pas ce qui est important et en tout cas pas en lien avec l’entity_id (qui découle du name). Personnellement j’aime bien le friendly_name.
Il y a un ordre
Name <=> Entity_ID (en remplaçant les espaces, accents etc)
Name => Friendly_name => Traduction (si existante) => Valeur en dur dans une carte

Donc fixe ton entity_id en bas, un truc simple, le tien est beaucoup trop long je trouve sensor.batiment_conso_phaseA suffit. Ensuite adapte le champs name en haut, avec ce que tu veux que ça affiche

L’entity_id sert dans les scripts, les noms des valeurs à lire dans les cartes, les automatisations

Fondamentalement, c’est quoi le problème de la longueur ?

Parce que j’ai conféré avec moi-même, et nous avons unanimement conclu que si nous voulons garder un truc cohérent sur le long-terme, et pas finir en plat de spaghetti, nous essaierions de nous en tenir à:

Se tenir à
[type].[logement]_[pièce ou équipement]_[appareil]

Quelques exemples

  • sensor.batiment_consometre_puissance_active

  • sensor.batiment_onduleur_puissance_active

  • switch.maison_cumulus_bouton

  • switch.appart_cumulus_bouton

  • switch.appart_cumulus_bouton_under_voltage_breaker

En tous cas ça j’aimerais bien, mais pourquoi j’ai “This entity is unavailable” ?

Ah bah non, ce matin ça marche, je peux bien changer mes entity IDs, je n’ai plus le message. Si je n’avais pas pris la photo d’écran hier soir j’aurais cru que c’est moi qui avais bugué. :slight_smile: Étrange…