Energia que sobrevive a um reinício do Home Assistant: porque é que as estatísticas perdem horas e como se preenche a lacuna

  • Testado no firmware v1.2.1
  • Primeiros passos

O Home Assistant fica parado vinte minutos — uma atualização, um reinício, um corte de energia. Volta, e o painel de energia tem ou uma lacuna onde esteve a noite, ou um pico na hora em que voltou que ninguém consumiu.

A forma é tão familiar que as pessoas a reconhecem numa linha:

"É simplesmente somar toda a energia que perdeu à hora em que o sistema voltou a ser ligado." — anon11644107, tópico 965144 do fórum do Home Assistant

E a outra forma, quando é um dispositivo que reinicia:

"Isto faz com que os nossos Shelly 3EMs reiniciem e depois o HA regista um pico enorme de 1000's de kWh consumidos." — msa, tópico 479362

Porque acontece, e porque não é a sua configuração

Dois mecanismos, ambos comuns.

O contador recupera tudo de uma vez. O seu contador continuou a contar enquanto o Home Assistant não estava a ouvir. Quando volta e lê o contador outra vez, toda a diferença chega numa só leitura — e cai na hora do reinício, porque é quando ficou registada. A energia é real. A hora não.

Ou o contador volta atrás. Um dispositivo que perde a alimentação pode voltar a zero. Um sensor acumulado lê isso como uma reposição do contador, e o que se segue é ou um total que desaparece ou um total inventado:

"Isto faz com que a sua energia passe de 4445 kWh para 0kWh" — anon11644107, tópico 386521

"sempre que o sensor caía e voltava, o seu valor era somado ao utility meter" — TimoVerbrugghe, tópico 1010856

Nenhuma das duas é um erro na sua configuração, e é exatamente por isso que custa tantas noites — está a procurar uma avaria num sítio onde não existe. O Home Assistant guarda a energia como estatísticas de longo prazo por hora, e um contador acumulado que reinicia não encaixa bem nesse modelo. As duas metades são razoáveis por si só.

Corrigir à mão funciona, mas não fica

A resposta que as pessoas partilham é Developer Tools → Statistics, onde pode corrigir uma linha, ou editar diretamente a tabela de estatísticas. Funciona de facto — dentro dos seus limites: pode ajustar uma hora que está errada, mas não pode criar horas que nunca foram registadas. E não escala para o tamanho de uma lacuna real:

"Tenho uma lacuna de 2 dias nas minhas estatísticas de energia porque o meu inversor esteve offline." — ConfusedTA, tópico 803010

"Isto já foi levantado muitas vezes e eu também me deparei com isso, sem conseguir encontrar uma solução fácil." — VaReTaS, tópico 803010

"Gostava que isto ficasse normalizado de alguma forma. Mas nem consigo perceber por onde começar." — 104mapo, tópico 965144

Dois dias são cerca de cinquenta linhas. Três semanas são perto de quinhentas. E a correção ataca o sintoma, não a causa, por isso o próximo reinício volta a começar o trabalho.

O que muda quando o registo fica no contador

A lacuna existe porque a única cópia do registo estava no Home Assistant, e o Home Assistant não estava a correr.

Um hub RBgrid mantém o seu próprio livro: mede, fecha cada período de 15 minutos, valoriza-o com o preço (price) em vigor naquele momento, e escreve o resultado na sua memória flash. Nada disto depende de o Home Assistant estar ligado. Quando é o hub que faz o registo, um reinício do Home Assistant é uma interrupção na visualização, não na medição.

Cada hora guardada traz também a sua própria nota de qualidade, para que um registo invulgar o indique em vez de parecer normal. Uma hora que absorveu energia de uma interrupção na medição fica marcada como cobrindo um corte, e a página History mostra essa nota ao lado do valor — o número não é apresentado discretamente como se nada tivesse acontecido.

Isto é sobre o registo do hub, não sobre o do Home Assistant. Nada aqui muda o que o Home Assistant guarda nem a forma como o guarda. A secção seguinte é sobre a parte que chega ao Home Assistant.

A importação horária, e a definição que decide o que vê

A integração RBgrid pertence a uma das duas formas de executar o hub: o hub gravado como dispositivo ESPHome. Se o seu usa o firmware autónomo e comunica com o Home Assistant por MQTT, não há importação para ativar, e passar de uma forma para a outra é uma nova gravação do firmware, não uma definição — por isso isto escolhe-se no início, não se muda depois.

Nessa rota, o livro do hub não fica só no hub. Em cada hora, a integração pede-o e escreve-o nas estatísticas de longo prazo do próprio Home Assistant, como um segundo conjunto de linhas, ao lado das que o Home Assistant já guarda para os seus sensores em tempo real — uma linha por hora, com a energia e o custo que o hub registou para essa hora, não para a hora em que a leitura chegou. Continua de onde ficou, por isso uma pausa de dias é preenchida hora a hora, em vez de cair num único bloco. A primeira importação, que ainda não tem onde continuar, recua no tempo: até 30 dias do livro horário do hub entram nas estatísticas numa única passagem. Vêm com dois limites, e ambos pesam mais do que o número: as horas em que o hub esteve sem alimentação não estão no seu livro, por isso nada as pode preencher; e a importação acrescenta as suas próprias linhas sem tocar nas que já tem.

A importação corre sozinha, uma vez por hora. O botão Import into HA statistics no separador History do painel executa essa mesma passagem imediatamente — é um único mecanismo com um disparo manual, não dois. Nos seletores do próprio Home Assistant — as definições de origem do painel de energia, um cartão de estatísticas — as linhas aparecem com nomes como RBgrid Hub Main energy in e … cost. Uma hora importada pode surgir com a energia e sem o custo, e ganhar o custo numa passagem posterior; isso acontece porque o plano tarifário ainda não era conhecido no momento da importação, e não porque algum dinheiro se perdeu.

⚠️ Por defeito, o painel de energia não lhe mostra essas linhas. O assistente de configuração da integração liga o painel aos contadores em tempo real, e nesses o reinício continua a produzir o degrau familiar na hora em que o Home Assistant voltou. As linhas importadas, que não têm lacuna, estão nas definições de origem do painel de energia — tem de as escolher.

Por isso há três coisas diferentes, e confundi-las é o que deixa as pessoas desiludidas:

Tem uma lacuna depois de um reinício?
O registo do próprio hub Não — nunca deixou de medir
As linhas de estatísticas importadas no Home Assistant Não — são uma cópia desse registo, hora a hora
Os contadores em tempo real que o painel usa por defeito Sim — o mesmo degrau de antes, na hora em que o HA voltou

Na rota MQTT não há importação nenhuma: o hub publica valores em tempo real, e as estatísticas do Home Assistant comportam-se exatamente como sempre. O registo do próprio hub continua intacto, e continua a ser o sítio onde ver quando um valor está em dúvida.

Como verificar, em vez de confiar

  • No hub: abra a página History do hub para o dia em causa. Uma hora que absorveu energia de uma interrupção indica-o na sua nota de qualidade, por isso consegue distinguir uma hora com aspeto estranho de uma hora errada.
  • No Home Assistant: compare a origem em tempo real com as linhas RBgrid Hub … importadas para o mesmo dia. Se diferirem, a diferença é a lacuna — e as linhas importadas são as que têm as horas nos seus devidos lugares.
  • Face à sua fatura: o registo de preços aplicados do hub guarda 40 dias em CSV, uma linha por cada período de 15 minutos fechado, com a origem de cada preço.

O que isto não faz

  • Não repara o histórico existente do Home Assistant. As linhas que já estavam erradas continuam erradas; a importação acrescenta as suas próprias linhas a partir do livro do próprio hub, não reescreve as suas.
  • Não muda a origem por defeito do painel. Essa escolha é sua, nas definições do painel de energia, e este artigo não prevê que venha a mudar.
  • Não dá ao Home Assistant resolução de 15 minutos. Os períodos são do hub; o que chega ao Home Assistant é de hora a hora, como sempre foi.
  • Não impede os seus sensores de falharem. Retira a consequência para o registo, não a causa na sua rede.

Onde ler mais

As citações são reproduzidas de tópicos públicos do fórum do Home Assistant e de problemas (issues) do GitHub, com os respetivos autores e números de tópico, para que possa ler cada tópico na íntegra.