Energía que sobrevive a un reinicio de Home Assistant: por qué las estadísticas pierden horas y cómo se rellena el hueco

  • Probado con el firmware v1.2.1
  • Primeros pasos

Home Assistant se cae durante veinte minutos — una actualización, un reinicio, un corte de corriente. Vuelve, y el panel de energía tiene o un hueco donde estaba la tarde, o un pico en la hora en que volvió que nadie usó.

La forma es tan conocida que la gente la reconoce en una línea:

"Es simplemente sumar toda la energía que se perdió a la hora en que el sistema volvió a encenderse." — anon11644107, hilo 965144 del foro de Home Assistant

Y la otra forma, cuando es un dispositivo el que se reinicia:

"Esto hace que nuestros Shelly 3EMs se reinicien y entonces HA registra un pico enorme de 1000's de kWh consumidos." — msa, hilo 479362

Por qué pasa, y por qué no es su configuración

Dos mecanismos, ambos corrientes.

El contador se pone al día de golpe. Su medidor siguió contando mientras Home Assistant no escuchaba. Cuando vuelve y lee el contador otra vez, toda la diferencia llega en una sola lectura, y cae en la hora del reinicio, porque ahí es cuando se registró. La energía es real. La hora no.

O el contador va hacia atrás. Un dispositivo que pierde la alimentación puede volver en cero. Un sensor acumulativo interpreta eso como un reinicio del contador, y lo que sigue es, o un total que desaparece, o uno que se inventa:

"Esto hace que su energía pase de 4445 kWh a 0kWh" — anon11644107, hilo 386521

"cada vez que el sensor se caía y volvía, su valor se sumaba al medidor de utilidad" — TimoVerbrugghe, hilo 1010856

Ninguna de las dos es un error en su configuración, y justo por eso cuesta tantas tardes: se busca una avería en un lugar donde no la hay. Home Assistant guarda la energía como estadísticas horarias de largo plazo, y un contador acumulativo que se reinicia no encaja limpiamente en ese modelo. Las dos partes son razonables por separado.

Arreglarlo a mano funciona, y no se mantiene

La respuesta que la gente se pasa es Developer Tools → Statistics, donde puede corregir una fila, o editar directamente la tabla de estadísticas. Funciona de verdad, dentro de sus límites: puede ajustar una hora que está mal, pero no crear horas que nunca se registraron. Y no escala al tamaño de un hueco real:

"Tengo un hueco de 2 días en mis estadísticas de energía porque mi inversor estuvo desconectado." — ConfusedTA, hilo 803010

"Esto se ha planteado muchas veces y también me pasó a mí, sin conseguir una solución fácil." — VaReTaS, hilo 803010

"Me gustaría que esto se normalizara de alguna forma. Pero ni siquiera sé por dónde empezar." — 104mapo, hilo 965144

Dos días son unas cincuenta filas. Tres semanas, unas quinientas. Y el arreglo ataca el síntoma, no la causa, así que el siguiente reinicio vuelve a empezar el trabajo.

Qué cambia cuando el registro vive en el medidor

El hueco existe porque la única copia del registro estaba en Home Assistant, y Home Assistant no estaba funcionando.

Un hub RBgrid lleva su propio registro: mide, cierra cada período de 15 minutos, lo valora con el precio vigente (price in force) en ese momento, y escribe el resultado en su propia memoria flash. Nada de eso depende de que Home Assistant esté levantado. Cuando el hub es quien registra, un reinicio de Home Assistant es una interrupción en la visualización, no en la medición.

Cada hora guardada además lleva su propia nota de calidad, así que un registro inusual lo dice en lugar de parecer normal. Una hora que absorbió energía de una interrupción de la medición se marca como que cubre un corte, y la página History muestra esa nota junto a la cifra: el número no se presenta en silencio como si nada hubiera pasado.

Esto trata del registro del hub, no del de Home Assistant. Nada de aquí cambia lo que Home Assistant guarda ni cómo lo guarda. La sección siguiente trata de la parte que sí llega a Home Assistant.

La importación horaria, y el ajuste que decide lo que ve

La integración de RBgrid pertenece a una de las dos formas de ejecutar el hub: el hub grabado como dispositivo ESPHome. Si el suyo ejecuta el firmware independiente y llega a Home Assistant por MQTT, no hay importación que activar, y pasar de una a otra es volver a grabar el firmware, no un ajuste; por eso se elige al principio, no se cambia después.

En esa ruta, el registro del hub no se queda en el hub. Cada hora la integración lo pide y lo escribe en las estadísticas de largo plazo propias de Home Assistant como un segundo conjunto de filas, junto a las que Home Assistant ya guarda para sus sensores en vivo: una fila por hora, con la energía y el coste que el hub registró para esa hora, no para la hora en que llegó la lectura. Continúa desde donde se quedó, así que una pausa de días se rellena hora a hora en lugar de meterse de golpe en una sola. La primera importación, que no tiene nada desde lo que continuar, va hacia atrás: hasta 30 días del registro horario del hub entran en las estadísticas en una sola pasada. Vienen dos límites, y los dos importan más que el número: las horas que el hub pasó sin alimentación no están en su registro, así que nada puede rellenarlas; y la importación añade sus propias filas sin tocar las que ya tiene.

La importación se ejecuta sola, una vez por hora. El botón Import into HA statistics de la pestaña History del panel lanza esa misma pasada de inmediato: es un solo mecanismo con un disparador manual, no dos. En los selectores de Home Assistant — los ajustes de origen del panel de energía, una tarjeta de estadísticas — las filas aparecen con nombres como RBgrid Hub Main energy in y … cost. Una hora importada puede aparecer con su energía y sin su coste, y ganar el coste en una pasada posterior; eso se debe a que la moneda del plan tarifario (tariff plan) no se conoce en el momento de la importación, no a que el dinero se pierda.

⚠️ Por defecto, el panel de energía no le muestra esas filas. El asistente de configuración de la integración conecta el panel a los contadores en vivo, y en esos un reinicio sigue produciendo el mismo escalón en la hora en que Home Assistant volvió. Las filas importadas, que no tienen hueco, están disponibles en los ajustes de origen del panel de energía — tiene que elegirlas usted.

Así que hay tres cosas distintas, y confundirlas es lo que deja a la gente decepcionada:

¿Tiene un hueco tras un reinicio?
El registro propio del hub No — nunca dejó de medir
Las filas importadas en las estadísticas de Home Assistant No — son una copia de ese registro, hora a hora
Los contadores en vivo que usa el panel por defecto Sí — el mismo escalón de antes, en la hora en que HA volvió

En la ruta MQTT no hay importación en absoluto: el hub publica valores en vivo, y las estadísticas de Home Assistant se comportan exactamente como siempre. El registro propio del hub sigue intacto, y sigue siendo el sitio donde mirar cuando una cifra es dudosa.

Cómo comprobar, en lugar de confiar

  • En el hub: abra la página History del propio hub para el día en cuestión. Una hora que absorbió energía de una interrupción lo dice en su nota de calidad, así que puede distinguir una hora de aspecto extraño de una hora equivocada.
  • En Home Assistant: compare el origen de contadores en vivo con las filas importadas RBgrid Hub … del mismo día. Si difieren, la diferencia es el hueco — y las filas importadas son las que tienen las horas en su sitio.
  • Frente a su factura: el registro de precios aplicados (applied-price log) del hub guarda 40 días en CSV, una fila por cada período de 15 minutos cerrado, con el origen de cada precio.

Lo que esto no hace

  • No repara el historial existente de Home Assistant. Las filas que ya estaban mal siguen mal; la importación añade sus propias filas desde el registro propio del hub, no reescribe las suyas.
  • No cambia el origen por defecto del panel. Esa elección es suya, en los ajustes del panel de energía, y este artículo no predice que vaya a cambiar.
  • No da a Home Assistant una resolución de 15 minutos. Los períodos del hub son los del hub; lo que llega a Home Assistant es por hora, como siempre.
  • No impide que sus sensores se caigan. Quita la consecuencia para el registro, no la causa en su red.

Dónde leer más

Las citas se reproducen de hilos públicos del foro de Home Assistant y de incidencias de GitHub, con sus autores y números de hilo, para que pueda leer cada hilo completo.