Question à propos de l'entity_id et friendly_name

Mon problème

Je crée toutes mes entitées quasiment depuis mqtt en mode yaml et je découvre tout juste entity_id qui est optionel … Pour l’instant je ne renseignais que le name et j’utilisais le customize pour mettre un nom plus parlant (friendly_name) lors de l’affichage … mais je trouve ca dommage de ne pas avoir ce friendly_name au plus pres de mon entité …

Qu’apporte l’entity_id ? Existe-t-il un moyen plus simple de gérer les noms à afficher ?

Exemple d’entité que je crée

nary_sensor:
  - platform: "mqtt"
    name: "CDP_CON_fenetre1_contact"
    state_topic: "zigbee2mqtt/CDP_CON_fenetre1"
    availability_topic: "zigbee2mqtt/CDP_CON_fenetre1/availability"
    value_template: "{{ value_json.contact }}"
    payload_on: false
    payload_off: true
    device_class: "window"

et dans le customize.yml

binary_sensor.cdp_con_fenetre1_contact:
  friendly_name: Fenetre 1 Chambre parents

Ma configuration

version core-2021.4.6
installation_type Home Assistant Container
dev false
hassio false
docker true
virtualenv false
python_version 3.8.7
os_name Linux
os_version 4.19.0-12-amd64
arch x86_64
timezone UTC
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 5000
Installed Version 1.12.1
Stage running
Available Repositories 778
Installed Repositories 20
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Lovelace
dashboards 4
resources 16
views 20
mode storage
___

name peut avoir la même valeur que ce que tu mets dans Friendly_name dans customize.yaml.
Et tu peux définir un unique_id qui sera le entity_id lorsque tu défini ton sensor.

Par exemple, j’ai ça :

binary_sensor:
  - platform: mqtt
    name: "Eau Diffuseur Bureau"
    unique_id: binary_sensor.eau_diffuseur_bureau
    state_topic: "stat/diffuseur_bureau/error"
    value_template: "{{ 'ON' if value != '0X00' else 'OFF' }}"
    device_class: problem
    availability_topic: "tele/diffuseur_bureau/LWT"
      payload_available: "Online"
    payload_not_available: "Offline"

Merci !
Par contre je n’ai pas l’impression que ca marche comme je veux … Si je fait ca :

binary_sensor:
  - platform: "mqtt"
    name: "Fenetre garage"
    unique_id: binary_sensor.gar_con_fenetre_contact                                                                                                                                                                                                                    state_topic: "zigbee2mqtt/GAR_CON_fenetre"
    availability_topic: "zigbee2mqtt/GAR_CON_fenetre/availability"
    value_template: "{{ value_json.contact }}"
    payload_on: false
    payload_off: true
    device_class: "window"

alors je me retrouve avec l’entity_id qui vaut binary_sensor.fenetre_garage et non pas binary_sensor.gar_con_fenetre_contact …
image

Une idée ?

A priori je ne suis pas le seul à me poser ces questions …

Et a priori ca ne marche pas comme je voudrais :wink:

Effectivement, apparemment cet unique_id est uniquement là pour que Home Assistant ait quelque chose d’unique mais l’identity_id reste généré à partir du nom et change si on change le nom de l’entité.
ça marche pour moi parce que l’unique_id est cohérant avec le nom.

C’est pas très bien documenté d’où la confusion apparemment.
Du coup il faut mettre un nom en fonction de l’identity_id qu’on veut avoir et tu ne peux pas couper à ta méthode initiale apparemment.

C’est ca :frowning: tant pis :wink:

Cela dit, spécifier cet unique_id a le mérite de permettre d’associer l’entité à une pièce.
En ce qui me concerne, c’est un point non négligeable.

oui oui je pense que c’est interressant de le faire quand même !
Même si j’aimerai également associer à une pièce depuis le yaml :wink:

ça a l’air possible mais je n’ai pas bien compris comment ça se fait ; apparemment, il faut l’auto-discovery et un unique_id.
On défini la map device et là il y a pas mal de propriétés qu’on peut définir : modèle, fabriquant, adresse mac, et suggested_area.
Je l’ai lu dans la doc des sensors et binary sensors MQTT.