L'énergie qui survit à un redémarrage de Home Assistant : pourquoi les statistiques perdent des heures, et comment le trou est comblé

  • Testé sur le firmware v1.2.1
  • Premiers pas

Home Assistant tombe en panne pendant vingt minutes — une mise à jour, un redémarrage, une coupure de courant. Il revient, et le tableau de bord Énergie montre soit un trou à l'endroit de la soirée, soit un pic à l'heure du retour que personne n'a consommé.

Ce scénario est assez familier pour qu'on le reconnaisse en une phrase :

« Il ajoute simplement toute l'énergie manquée à l'heure où le système a été remis en marche. » — anon11644107, fil du forum Home Assistant 965144

Et l'autre cas, quand c'est un appareil qui redémarre :

« Cela fait redémarrer nos Shelly 3EMs, et HA enregistre alors un pic de 1000 kWh et plus consommés. » — msa, fil 479362

Pourquoi cela arrive, et pourquoi ce n'est pas votre configuration

Deux mécanismes, tous deux ordinaires.

Le compteur rattrape tout d'un coup. Votre compteur a continué à compter pendant que Home Assistant n'écoutait pas. Quand il revient et relit le compteur, toute la différence arrive dans une seule lecture — et tombe dans l'heure du redémarrage, puisque c'est à ce moment-là qu'elle est enregistrée. L'énergie est réelle. L'heure, non.

Ou bien le compteur repart en arrière. Un appareil qui perd son alimentation peut redémarrer à zéro. Un capteur cumulatif interprète cela comme une remise à zéro du compteur, et il en résulte soit un total qui disparaît, soit un total inventé :

« Cela fait passer votre énergie de 4445 kWh à 0 kWh » — anon11644107, fil 386521

« chaque fois que le capteur tombait en panne puis revenait, sa valeur était ajoutée au compteur utilitaire » — TimoVerbrugghe, fil 1010856

Ce n'est pas une erreur de votre installation, ce qui explique pourquoi cela coûte tant de soirées : vous cherchez un défaut là où il n'y en a pas. Home Assistant stocke l'énergie sous forme de statistiques à long terme par heure, et un compteur cumulatif qui repart à zéro ne s'intègre pas proprement à ce modèle. Les deux éléments sont raisonnables pris séparément.

Corriger à la main fonctionne, mais ne tient pas

La solution que les gens se transmettent est Developer Tools → Statistics, où vous pouvez corriger une ligne, ou modifier directement la table des statistiques. Cela fonctionne vraiment — dans ses limites : vous pouvez ajuster une heure erronée, mais vous ne pouvez pas créer des heures qui n'ont jamais été enregistrées. Et cela ne passe pas à l'échelle d'un vrai trou :

« J'ai un trou de 2 jours dans mes statistiques d'énergie parce que mon onduleur était hors ligne. » — ConfusedTA, fil 803010

« C'est un sujet qui revient souvent, et que j'ai moi aussi rencontré, sans trouver de solution de contournement simple. » — VaReTaS, fil 803010

« J'aimerais que cela soit normalisé d'une manière ou d'une autre. Mais je ne sais même pas par où commencer. » — 104mapo, fil 965144

Deux jours représentent à peu près cinquante lignes. Trois semaines, environ cinq cents. Et la correction s'attaque au symptôme, pas à la cause : le redémarrage suivant recommence le travail.

Ce qui change quand l'enregistrement vit dans le compteur

Le trou existe parce que la seule copie de l'enregistrement se trouvait dans Home Assistant, et que Home Assistant ne tournait pas.

Un hub RBgrid tient son propre registre : il mesure, clôt chaque période de 15 minutes, la chiffre au prix en vigueur à ce moment-là, et écrit le résultat dans sa propre mémoire flash. Rien de tout cela ne dépend du fait que Home Assistant soit en marche. Quand c'est le hub qui enregistre, un redémarrage de Home Assistant est une interruption de l'affichage, et non de la mesure.

Chaque heure enregistrée porte aussi sa propre note de qualité : un enregistrement inhabituel le signale, au lieu d'avoir l'air normal. Une heure qui a absorbé de l'énergie pendant une interruption de mesure est marquée comme couvrant une coupure, et la page History affiche cette note à côté du chiffre — le nombre n'est pas présenté discrètement comme si rien ne s'était passé.

Ceci concerne l'enregistrement du hub, et non celui de Home Assistant. Rien ici ne change ce que Home Assistant stocke, ni la façon dont il le stocke. La section suivante concerne la partie qui atteint Home Assistant.

L'import horaire, et le réglage qui décide de ce que vous voyez

L'intégration RBgrid s'applique à l'un des deux modes d'exploitation du hub : le hub flashé comme appareil ESPHome. Si le vôtre fonctionne avec le firmware autonome et atteint Home Assistant par MQTT, il n'y a aucun import à activer, et passer de l'un à l'autre revient à reflasher le hub plutôt qu'à changer un réglage — c'est donc choisi dès le départ, et non modifié plus tard.

Sur cette voie, le registre du hub ne reste pas dans le hub. Chaque heure, l'intégration le demande et l'écrit dans les statistiques à long terme propres à Home Assistant, sous forme d'un second jeu de lignes, à côté de celles que Home Assistant conserve déjà pour vos capteurs en direct — une ligne par heure, avec l'énergie et le coût enregistrés par le hub pour cette heure-là, et non pour l'heure où la lecture est arrivée. L'import reprend là où il s'était arrêté : une pause de plusieurs jours est donc comblée heure par heure, au lieu d'être déposée en un seul bloc. Le tout premier import, qui n'a encore rien à reprendre, remonte plutôt dans le temps : jusqu'à 30 jours du registre horaire du hub sont versés dans les statistiques en une seule passe. Deux limites accompagnent cela, et elles comptent plus que le nombre : les heures pendant lesquelles le hub était sans alimentation ne figurent pas dans son registre, donc rien ne peut les combler ; et l'import ajoute ses propres lignes sans toucher à celles que vous avez déjà.

L'import tourne tout seul, une fois par heure. Le bouton Import into HA statistics de l'onglet History du panneau lance immédiatement cette même passe — c'est un seul mécanisme avec un déclenchement manuel, et non deux. Dans les sélecteurs de Home Assistant — les réglages de source du tableau de bord Énergie, une carte de statistiques —, les lignes apparaissent sous des noms comme RBgrid Hub Main energy in et … cost. Une heure importée peut apparaître avec son énergie mais sans son coût, et recevoir ce coût lors d'une passe ultérieure ; c'est parce que la devise du plan tarifaire n'est pas connue au moment de l'import, et non parce que de l'argent disparaît.

⚠️ Par défaut, le tableau de bord Énergie ne vous montre pas ces lignes. L'assistant de configuration de l'intégration relie le tableau de bord aux compteurs en direct, et sur ceux-ci un redémarrage produit toujours la même marche dans l'heure où Home Assistant est revenu. Les lignes importées, qui n'ont pas de trou, sont disponibles dans les réglages de source du tableau de bord Énergie — il faut les choisir.

Il y a donc trois choses différentes, et les confondre est ce qui déçoit les gens :

Un trou après un redémarrage ?
L'enregistrement propre du hub Non — il n'a jamais cessé de mesurer
Les lignes de statistiques importées dans Home Assistant Non — ce sont une copie de cet enregistrement, heure par heure
Les compteurs en direct qu'utilise le tableau de bord par défaut Oui — la même marche qu'avant, dans l'heure où HA est revenu

Sur la voie MQTT, il n'y a aucun import : le hub publie des valeurs en direct, et les statistiques de Home Assistant se comportent exactement comme avant. L'enregistrement propre du hub reste intact, et c'est toujours l'endroit où regarder quand un chiffre est douteux.

Vérifier, plutôt que faire confiance

  • Dans le hub : ouvrez la page History du hub pour le jour en question. Une heure qui a absorbé de l'énergie pendant une interruption le signale dans sa note de qualité, ce qui permet de distinguer une heure d'aspect étrange d'une heure fausse.
  • Dans Home Assistant : comparez la source des compteurs en direct avec les lignes importées RBgrid Hub … pour le même jour. Si elles diffèrent, la différence est le trou — et les lignes importées sont celles où les heures sont à leur place.
  • Par rapport à votre facture : le journal des prix appliqués du hub conserve 40 jours au format CSV, une ligne par période de 15 minutes clôturée, avec la source de chaque prix.

Ce que cela ne fait pas

  • Cela ne répare pas l'historique existant de Home Assistant. Les lignes déjà fausses restent fausses ; l'import ajoute ses propres lignes à partir du registre du hub, il ne réécrit pas les vôtres.
  • Cela ne modifie pas la source par défaut du tableau de bord. Ce choix vous appartient, dans les réglages du tableau de bord Énergie, et cet article ne prédit pas qu'il changera.
  • Cela ne donne pas à Home Assistant une résolution de 15 minutes. Les périodes du hub sont celles du hub ; ce qui atteint Home Assistant est horaire, comme il l'a toujours été.
  • Cela n'empêche pas vos capteurs de tomber en panne. Cela supprime la conséquence pour l'enregistrement, pas la cause dans votre réseau.

Pour aller plus loin

Les citations sont reproduites à partir de fils publics du forum Home Assistant et de tickets GitHub, avec leurs auteurs et leurs numéros de fil, afin que vous puissiez lire chaque fil en entier.