Appareils virtuels pour chaque appareil physique : bonne pratique?

Bonjour,

Après à un premier changement « conséquent » sur mon installation (passage de Zigbee Home Automation (ZHA) à Zigbee2MQTT (Z2M)) je m’interroge sur une façon de minimiser les « problèmes » suite à ce genre d’opération.

Typiquement il faut revoir les automatisations, scripts, etc. Mais on perd aussi l’historique des valeurs (e.g. températures).

Ma question/idée : est-ce que créer une entité virtuelle (note : ce nom n’est peut-être pas le bon dans l’écosystème Home Assistant) pour chaque entité physique est une solution intéressante/viable ? Ça ferait une sorte de référence indirecte.

Exemple :

Disons que j’ai 3 sondes de température Z-Wave :

  • Sonde Zooz ZSE44 XS Bureau
  • Sonde Zooz ZSE44 XS Chambre
  • Sonde Zooz ZSE44 XS Salon

J’ai donc 3 × x entités :

  • Température Zooz ZSE44 XS Bureau
  • Température Zooz ZSE44 XS Chambre
  • Température Zooz ZSE44 XS Salon
  • Humidité Zooz ZSE44 XS Bureau
  • Humidité Zooz ZSE44 XS Chambre
  • Humidité Zooz ZSE44 XS Salon
  • Puissance signal Zooz ZSE44 XS Bureau
  • Puissance signal Zooz ZSE44 XS Chambre
  • Puissance signal Zooz ZSE44 XS Salon
  • Batterie Zooz ZSE44 XS Bureau
  • Batterie Zooz ZSE44 XS Chambre
  • Batterie Zooz ZSE44 XS Salon

Si je change de sonde (pour du ZigBee, ou pour un autre modèle Z-Wave) je perdrais donc mon historique de suivi de la température et humidité dans le bureau, la chambre et le salon.
Sauf si j’historise les valeurs d’entités virtuelles correspondantes :

  • Température Bureau
  • Température Chambre
  • Température Salon
  • Humidité Bureau
  • Humidité Chambre
  • Humidité Salon
  • Puissance signal sonde … (facultatif, puisque peu pertinent)
  • Batterie sonde … (facultatif, puisque peu pertinent)

Ça me semble une bonne idée mais je manque de recul pour trancher.

Auriez-vous un avis ? Une autre idée/solution ?

Merci

Salut

Ajouter une couche de virtuels au dessus des entités, ça ressemble à une vieille technique jeedom.
Même jeedom a fini par reconnaitre que c’était lourd et pas forcement plus efficace. :sweat_smile:

Comme tu l’as noté, l’historique se base sur le nom (entity_id), donc si tu le conserves tout le temps, tu es bon.

Par ailleurs dans le même ordre d’idée, si tu change de matériel, le fait d’avoir Zooz ZSE44 dans l’id, c’est compliqué. Donc sauf a sacrifier l’historique maintenant, c’est raté.

La solution idéale, c’est donc d’avoir directement des noms génériques, que l’on adapte directement en renommant.
Par contre dans ton cas, rien n’empêche de renommer les entités z2m avec l’ancien nom de zha.

1 « J'aime »

Mais si je n’indique pas le vrai nom (marque + modèle) de l’appareil dans son nom sous Home Assistant ça devient compliqué de savoir réellement quoi est quoi…

J’aimais bien l’idée d’avoir une abstraction, chose qu’on fait déjà pour corriger certaines valeurs par exemple (sur une sonde qu’on sait être quelque degrés en dessous de la réalité par exemple).

Je ne partage pas cet avis, perso entre :

  • sensor.temperature_sonde_zooz_zse44_xs_bureau
  • sensor.sonde_temperature_bureau
  • sensor.sonde_bureau_temperature

Je ne sois pas trop l’info que tu rates. Que la température soit remontée par une sonde X ou Y, l’important c’est le type d’info, pas le matos

Perso j’ai une préférence pour la 3. Avec un tri (inversant) sur le sens (du plus générique, au plus précis)

  • sensor.sonde_bureau_temperature
  • sensor.sonde_bureau_humidity
  • sensor.sonde_bureau_signal

On a rarement 2 capteurs de température dans la même pièce. Et s’il y a plusieurs équipements de même type ils n’ont pas le même but ou pas exactement le même emplacement normalement.
Pour moi mettre la marque et le modèle dans le nom n’est pas une bonne pratique. Mieux vaut y coller une étiquette si besoin.

Dans tous les cas, sur HA comme ailleurs, plus il y a d’entités plus le système sera chargé et plus les performances se dégraderont.

1 « J'aime »

OK, je vois. donc concernant mes entités, vu que je comptais nommer les virtuelles « Température/Humidité Bureau/Chambre/Salon », si j’applique cela aux entités réelles, j’aurais bien :

  • sensor.temperature_bureau
  • sensor.temperature_chambre
  • sensor.temperature_salon
  • sensor.humidite_bureau
  • sensor.humidite_chambre
  • sensor.humidite_salon

Sans mention de la marque/modèle du périphérique sous-jacent.

En fait, je peux nommer mes périphériques comme je veux (ça tombe dans le « friendly name » et ne touche pas à leur ID hexadécimal, celui qu’on peut lire dans l’URL de l’interface web) car ce qui importe ce sont les noms des entités (sensor.*, lock.*, ) ?

Avoir un périphérique « Prise Toto » et nommer ses entités de manière anonyme (sans marque ni modèle) serait donc suffisant pour ne pas tout perdre aux changements ?

Et c’est HA qui fait le lien entre une entité et le périphérique.

(Je note cependant le bon conseil d’appliquer un ordre « générique→précis » sur les parties du nom du périphérique)

Il y a 3 infos sur une entité :

  • entity_id (c’est le sujet ici, et c’est le lien avec l’historique)
  • device_id (le machin avec plein d’hexa imbuvable et à ne surtout pas utiliser dans les automatisations)
  • le friendly_name (qui par défaut est basé sur l’entity_id)

ça c’est le type. Et ça détermine le type d’état de l’entité

Par contre, pourquoi mentionner « sonde » dans l’ID de l’entité ?

C’est redondant avec le préfixesensor. mais surtout : une température et l’humidité viennent bien logiquement d’une sonde non ?

La mention de « sonde » est plus pertinente pour la notion de signal car c’est bien le signal (de communication) de la sonde qu’on mesure/relève.

Alors que dans les autres cas (température, humidité, ensoleillement, force du vent, mouvement, etc.) c’est bien lié au lieu/emplacement, pas à la sonde.

Oui, je voulait dire les IDs d’entité. et par sensor.* et lock.* je voulais dire : les chaîne de texte du genre de :

  • sensor.toto
  • sensor.bidule
  • lock.tata
  • lock.truc
1 « J'aime »

Oui, c’est pas faux. Mais sensor c’est aussi le type le plus libre. Et donc c’est pas limité uniquement à des appareils physiques qui balancent des mesures. On y mets aussi des templates par exemple.
L’autre avantage c’est de retrouver un lien entre les entités d’un même appareil quand les types sont différents, par exemple chez moi :

ici la chaine volet_sam et fait le lien avec tout ce qui concerne le volet de la salle à manger
cover.volet_xxxx => c’est con effectivement (cover/volet), mais input_boolean.volet_xxx ça l’est moins. Et c’est tout l’interet de respecter l’ordre générique => précis.

  • *.cover_ concerne tous mes volets
  • *.cover_salon concerne tous mes volets du salon
  • *.cover_salon_rue concerne le volet du salon coté rue
  • input_number.cover_salon_rue_memory concerne la position en mémoire du volet du salon coté rue

Comme la gestion des dates en anglais YYYYMMDD

1 « J'aime »

Quoique…
A force de tester des objets j’ai fini pour les sondes de température par créer un helper min/max sensor.temp_cuisine (par exemple) dans lequel j’ajoute des sondes et j’obtient la moyenne (de fait proche de chaque sonde). Avantage, si l’une n’a plus de pile, ce qui peut être dommageable pour du chauffage par exemple (encore que certains thermostats virtuels le gèrent maintenant) j’ai toujours la température de la pièce, non par un virtuel mais la moyenne…

OK, c’'est exagéré, mais ça date…


1 « J'aime »