Comment fusionner 2 entités

Bonjour,

je voudrais fusionner les valeurs d’une ancienne entité vers une nouvelle entité afin de conserver l’historique :
Il s’agit des entités de ma station météo , pilotée via RFLink et un module DYI RFLink Gateway
Cette station est alimentée par panneau solaire et piles rechargeables, mais avec les quelques rayon de soleil, il se peut que les piles ne se chargent pas entièrement, et parfois dans ce cas, HA génère de nouvelles entité.
En fait je pense que le nom des entité provient du module , j’avais le même comportement avec Domoticz lors de changement de piles des capteurs RF

Ce qui m’est arrivé l’autre jour :frowning:

ancien entité : sensor.dkw2012_0056_xxx
nouvelle entité sensor.dkw2012_0036_xxx
le xxx correspondant à la fonction , exemple :

  • rain : sensor.dkw2012_0056_rain
  • hum : sensor.dkw2012_0056_hum
  • temp : sensor.dkw2012_0056_temp
  • wind : sensor.dkw2012_0056_wind
  • windir : sensor.dkw2012_0056_windir

je cherche donc à fusionner l’historique de l’ancien sensor.dkw2012_0056_rain vers le nouveau sensor.dkw2012_0036_rain, ainsi que pour toutes les entités

Je n’ai pas réussi à trouver une solution sur les forums (à part une intégration hacs, mais qui ne fonctionne pas avec les entités rflink)

Si vous avez des idées, je suis preneur

Merci par avance
Olivier

Hello

Dans ce sens là, ça ne marche pas, par contre, si tu renommes les nouvelles entités comme les anciennes, ça se fait tout seul.

Le comportement du module est classique, les ID changent à chaque reset

Quand c’est possible, c’est pour ça que c’est bien d’utiliser l’attribut unique_id, comme ça on peut renommer l’entite sans tout perdre (et modifier qq truc via l’interface graphique)

Exemple avec un de mes sensor mqtt :

  - name: Batterie Temperature Max
    unique_id: Battery_Max_Temperature
    object_id: Battery_Max_Temperature
    state_class: measurement
    device_class: temperature
    unit_of_measurement: "°C"
    ...
1 « J'aime »

Perso je n’utilise pas l’unique_id, parce que comme de toutes façons, il faut renommer l’entity_id pour que les automatisations/cartes soient à jours aussi, ça bascule aussi

1 « J'aime »

Merci pour ces infos, je suis en train de les appliquer

Hello,
je me réponds, pour le suivi :wink:
le renommage n’a pas été suffisant à mon goût : je n’avais pas l’historique de certaines valeurs (température, pluviométrie…)
j’ai dû m’attaquer à la base de données (mariadb + phpmyadmin dans mon cas), et grace à un youtubeur Allemand trouvé via une recherche sur le site de support HA (je n’ai pas retenu l’url)

En résumé

  1. sauvegarde complete de HA
  2. via Phpmyadmin , exécution des commandes SQL :

UPDATE  statistics SET metadata_id = (SELECT id FROM statistics_meta WHERE statistic_id = "sensor.dkw2012_0036_hum") WHERE metadata_id = (SELECT id FROM statistics_meta WHERE statistic_id = "sensor.dkw2012_0056_hum")

Avec : sensor.dkw2012_0036_hum = nouveau id entité
et sensor.dkw2012_0056_hum = ancien id entité
et idem pour chacun des entités du capteurs méto RFLINK sensor.dkw2012_00**_xxxx

  1. J’ai eu , pour chacun des entités, des doublons d’index , qui bloquaient la mise à jour (c’est peut peut-être pour cette raison que la méthode de « base » n’avait pas entièrement fonctionné)
    avec ce message d’erreur :
    #1062 - Duplicata du champ ‹ 1307-1733155200 › pour la clef ‹ ix_statistics_statistic_id_start_ts ›
    dans la table « statistics » j’ai isolé les enregistrements dont le champ metadata_id = 1307
    et le champ created_ts=1733155200
    et je les ai supprimé.
    idem pour tous les enregistrements duplicate

J’ai ainsi récupéré mes historiques :slight_smile:

MAIS : on touche à la BD, ainsi toutes mauvaises manipulations peut casser HA…
Donc solution workaround a appliquer avec des pincettes, avec une petite connaissance SQL, et surtout une sauvegarde en cas de plantage

Salut,

Ce que tu fais là via la BDD n’est ni plus ni moins que le renommage des entity_id que j’évoque plus haut. Il ne s’agit pas des appareils, mais bien des entités.
Evidement, c’est donc à faire sur chacune d’entres-elles.

Je me permets d’intervenir sur le sujet car venant également de Domoticz, et bien que HA soit largement devant en terme d’ergonomie et fonctionnalité, je trouve que c’est un domaine sur lequel HA pourrait s’améliorer, le remplacement de capteur…
Sur Domoticz c’est vraiment facile, si une fonction devait être implémentée dans les prochaines versions de HA, celle-ci serait la bienvenue !

C’est le moment du WTH sur home assistant, n’hésite pas a remonter ton message sur le forum anglophone : The month of 'What the Heck?!' 2024 - Home Assistant

plein de dev sont a l’écoute de ce genre d’info.

Cdt

1 « J'aime »

Hello,
le besoin avait été remonté à l’occasion WTH 2022
et introduit avec la version HA Core 2023.4

cf par exemple :

https://community.home-assistant.io/t/replace-entities-and-keep-history-breaking-change-starting-ha-core-2023-4/639465/1
De mon coté, cela n’avait pas fonctionné comme prévu, peut-être à cause du doublon d’index, surement provoqué lorsque le device s’est reinitialisé

Bonjour,
Oui désolé je n’avais pas répondu à la proposition du WTH, mais j’étais allé voir et effectivement je suis tombé sur le sujet de 2022, je ne suis donc pas allé plus loin…
Je vais aller jeter un coup d’œil à ton lien, merci.
[Edit] le lien ne fonctionne pas…

J’ai corrigé le lien
merci pour la remarque :slight_smile: