Bonnes manières sur Home Assistant
Les entity_id sont partout dans HA, mais une convention de nommage, et la modification de cet id au bon endroit permet de facilement s'y retrouver.
Aujourd'hui, je vous propose un article un peu particulier. Vous pourrez y apprendre 2-3 choses, mais la majorité va surtout expliquer ma manière de gérer les objets dans Home Assistant. Et aussi du coup de noter clairement une méthode pour mes futurs objets connectés.
Un problème majeur auquel on est confronté dans HA, c'est la gestion des noms d'objets. Il y a toujours un entity_id
qui référence votre objet au coeur de HA, et un friendly_name
qui est le nom affiché. Simple non?
Et ben, en réalité, pas tant que ça. Dans ma domotique, je n'utilise pas que des intégrations pure HA. J'utilise beaucoup de protocoles via MQTT (zigbee2mqtt, shellies, esphome). Prenons l'exemple de zigbee2mqtt. Sur l'interface que l'ont voit ci-dessous, on voit 2 colonnes qui définissent notre objet: Friendly_name
et IEEE_address
. Le premier, bien que s'appelant friendly_name
se retrouvera être le entity_id
dans Home Assistant. Et là, c'est le drame. Enfin, pas vraiment un drame, mais ca rajoute une couche de nommage, car z2m, n'utilise pas toujours le friendly_name
pour piloter les périphériques, mais la IEEE_address
. Bon, je vous ai perdu? Non? Parfait.
Du coup, comment qu'on gère ce bo**el ? Très bonne question. Il y a plein de manières de faire. La plus simple, ne toucher que le friendly_name
dans HA, et ne pas s'occuper des autres. Très bien, mais quand on cherche l'appareil dans Home Assistant, on est salué par un magnifique:
Très parlant, n'est-ce pas?
Bon, du coup, pour moi, il est temps de renommer correctement mes entités pour avoir, non seulement des noms parlants, mais aussi une schematique commune. Je vais vous expliquer ma logique utilisée (pas encore partout, mais je fais gentiment les changements).
Première chose: des entity_id
parlants. Pour cela, quelques conditions:
- Quel que soit le protocole, je veux trouver mes appareils, donc ne pas mettre cette info.
- Mes appareils sont liés à des pièces, donc utiliser le nom de la pièce.
- Chaque objet a une fonction, mais cette fonction est dans le préfixe HA (exemple:
light.
sensor.
switch.
) donc pas besoin de le répéter. (On verra que ce sera le cas par défaut) - Si j'ai plusieurs objets du même type, mettre un nom parlant pour le définir. Ca peut être la partie la plus compliquée.
Bon, en résumé: service.pièce_nom_suffixe
Par exemple. J'ai un plafonier dans la chambre, on aura donc: light.chambre_plafonier
. Mais souvent, ce n'est pas la seule info, par exemple en zigbee, on aura en plus, le RSSI, si une update est dispo, éventuellement une batterie (pas pour une ampoule bien sûr) etc. Donc pour par exemple les updates on aura pour le même apareil: binary_sensor.chambre_plafonier_rssi
.
Bon, ce sont deux exemples. Mais en suivant cette convension de nommage, je peux facilement retrouver un apareil dans HA.
Mais attention! Ce serait trop façile si toutes les intégrations avaient la même logique. Exemple, la gateway SLS, meme en forçant l'utilisation du friendly_name, utilise le IEEE_address
comme entity_id
, il faut donc le changer à la main dans HA. Et c'est là que ca commence a être galère. L'entité sera bonne dans HA, mais pas dans la SLS. Du coup, voici un tuto pour le nommage des entités dans différentes intégrations
Home Assistant
Commençons par le plus simple. Dans HA, il suffit d'ouvrir une entité pour modifier son entity_id
. C'est fait! Vraiment. :) Si c'est la solution la plus simple, c'est pas forcement la plus liée entre passerelles.
Zigbee2MQTT
Dans Z2M, il suffit de renommer le device dans l'interface web, et de cocher l'option Update Home Assistant entity ID
et tout se fait tout seul.
Et d'un coup, le nom de l'entité est changé dans HA:
Ceci permet un suivi simple qui est propagé depuis les objets z2m jusqu'à Home Assistant. On pourra toujours faire correspondre les deux.
SLS
Bon, là je vais pas vous mentir, c'est pas aussi simple. La SLS a une option
Cette option, bah n'utilise pas le friendly_name
, enfin pas dans HA, juste dans les topics MQTT. Donc bon, en donnant un nom, par exemple cuisine_ampoule
Dans HA on obtient:
Pas vraiment ce qu'on veut. Le friendly name est bien transmis, mais dans le friendly_name
de HA. Bon, logique, mais l'ID lui, n'est pas modifié.... Seule solution, le modifier dans HA, mais du coup, aucun lien avec la SLS, donc il faut le modifier dans les deux.
Zwave (intégration officielle obsolète)
Ici, c'est du Home Assistant, donc il suffit de modifier dans l'intégration. C'est directement géré.
Voilà. En gros, rien de compliqué, mais ya des subtilités, et des simplifications possibles en fonction de la passerelle. Il en existe d'autre, mais ce sont celles que j'utilise. Si vous voyez d'autre moyens de garder ce lien entre les ID, n'hésitez pas a commenter, je les ajouterai. Et @Mathieu: Le yaml, c'est pas drôle, et ca rentre dans ma catégorie de : c'est pas lié, mais ca marche. =P
A+