Se o seu contrato acompanha o mercado, é provável que isto já lhe tenha acontecido. O painel de energia mostra um custo de ontem. Volta a olhar um dia depois e o valor é outro. Ou então uma hora concentra um pico de energia que ninguém consumiu, ao preço dessa hora.
Não está a imaginar coisas, e não é o único:
"But for some reason the dashboard always calculates more than it should." — odechr, tópico 496113 do fórum do Home Assistant
"showing a cost/income far higher than realistic." — andreaskin, tópico 647174
Não é um erro que se encontre na sua própria configuração, e é por isso que sobrevive a tantas noites a procurá-lo. É uma diferença entre duas resoluções.
O mecanismo, em um parágrafo
O Home Assistant calcula o custo da energia a partir das suas estatísticas de longo prazo, que são horárias. Para uma tarifa fixa isso está exatamente certo: uma hora a uma taxa é uma hora a uma taxa. Para um contrato que muda de preço ao longo do dia, a hora é o problema — e quando alguma coisa interrompe a gravação, a hora passa a ser o problema todo.
A descrição mais clara disto foi escrita por alguém a quem aconteceu:
"It is just adding all the energy you missed to the hour the system was turned back on." — anon11644107, tópico 965144
Ou seja: o Home Assistant reinicia, ou um sensor deixa de responder e volta, e o contador salta. A energia do intervalo é real — o seu contador mediu-a — mas chega toda de uma vez, cai na hora do reinício e é contabilizada ao preço dessa hora. Se o intervalo atravessou as horas mais baratas da noite e voltou na hora do pequeno-almoço, acabou de comprar a noite ao preço da manhã.
A mesma forma aparece noutras variantes. Uma integração de sensor pode multiplicar o valor por mil depois de um reinício — esse é um problema aberto no núcleo do Home Assistant, #136428, descrito assim:
"After a Home Assistant restart, the value of a sensor integration is multiply by 1000" — roumano, core #136428
E um dispositivo que perde a alimentação pode repor o próprio contador a zero, e o lado que recebe lê isso como consumo:
"This causes our Shelly 3EMs to reboot and then HA records a major peak of 1000's of kWh being consumed." — msa, tópico 479362
Nada disto é o Home Assistant estar mal construído. As estatísticas horárias são uma boa solução, e as soluções alternativas que as pessoas partilham — modelos de disponibilidade, correção de linhas em Developer Tools → Statistics, escolher o método left numa Riemann integration — funcionam todas. Só que dão muitas noites de trabalho para um número que não devia precisar de ser defendido.
O que muda quando o preço é aplicado onde a energia é medida
A alternativa não é um painel melhor. É mover a decisão um passo para trás, para o dispositivo que faz a medição.
Um hub RBgrid resolve um preço por cada período de 15 minutos: a partir da fonte de preço do dia seguinte (day-ahead price) que escolher para a sua zona, de uma reserva se a primeira não tiver nada para esse período, e, caso contrário, a partir do seu próprio plano tarifário. O seu contrato é aplicado por cima — um fator (factor), uma sobretaxa (markup), depois os impostos por kWh, a tarifa de rede (grid fee) e a contribuição (levy) do seu plano, e por fim o IVA (VAT) — a não ser que a fonte já publique o preço de venda a retalho, caso em que não se acrescenta nada e nada é contado duas vezes.
Depois faz a parte que mais importa para este artigo: guarda o preço que usou junto da energia a que se aplicou, com a fonte de cada período, e mantém isso durante 40 dias.
Daqui decorrem três consequências, e são o argumento todo:
- Um intervalo continua a ser um intervalo — no hub. O hub continua a medir e a calcular o custo enquanto o Home Assistant reinicia, porque nenhuma das duas tarefas vive no Home Assistant. O registo próprio do hub não tem hora errada, e nada tem de ser reconstruído depois. O que o Home Assistant mostra depois depende de como os dados do hub lhe chegam, e isso é a secção seguinte.
- Um preço fica ligado à sua própria energia. O custo de 02:15–02:30 foi calculado com o preço de 02:15–02:30, na altura, e essa associação fica registada. Não depende da hora em que o número é lido mais tarde.
- Pode verificar. Não «confiar no valor», mas ler a linha.
As estatísticas do Home Assistant continuam horárias. Este artigo não diz o contrário, e nada aqui altera o que o painel de energia guarda. O dinheiro dos períodos de 15 minutos fica no hub e no seu próprio registo; o que chega ao Home Assistant é a vista horária que ele sempre manteve.
O que chega de facto ao Home Assistant, e por que via
O registo do hub e o painel de energia são duas coisas diferentes, e a segunda depende da forma como os ligou. Isto importa mais do que parece, porque decide se a hora do reinício ainda mostra um salto no ecrã.
- Se o painel de energia tirar o custo da entidade de custo do próprio hub, a hora que mostra é a soma de períodos que o hub valorizou um a um — e não uma média horária aplicada a um bloco de energia.
- Se manteve um sensor de preço seu sobre a energia do hub, o Home Assistant calcula-o como sempre fez, à resolução que sempre teve. O registo do hub e o painel vão então divergir, e o registo é o que tem os períodos.
- Um reinício continua a interromper o que o Home Assistant regista, aconteça o que acontecer no hub entretanto. A sua energia e o seu dinheiro estão intactos no hub. Se o intervalo é reparado dentro do Home Assistant depende da via — e de uma definição, que é a parte que vale a pena conhecer.
A importação das estatísticas horárias, e a definição de que ninguém fala
A integração RBgrid pertence a uma das duas formas de executar o hub: o hub gravado como dispositivo ESPHome. Se o seu hub corre o firmware autónomo e comunica com o Home Assistant por MQTT, não há importação para ativar — passar de uma forma para a outra é uma regravação, não uma definição, por isso é uma escolha feita no início e não um interruptor que se muda mais tarde.
Nessa via, a integração pede ao hub, de hora a hora, o seu próprio livro horário e escreve-o nas estatísticas de longo prazo do Home Assistant como um segundo conjunto de linhas, ao lado das que o Home Assistant já mantém para os seus sensores em tempo real — cada hora com a energia e o custo que o hub calculou para essa hora. Corre sozinha, de hora a hora, retomando a partir de onde ficou, por isso uma pausa de dias é preenchida hora a hora e não despejada numa só; o botão Import into HA statistics, no separador History do painel, executa essa mesma passagem imediatamente e não é um mecanismo separado. Nos seletores do próprio Home Assistant, as linhas aparecem com nomes como RBgrid Hub Main energy in e … cost.
⚠️ Por defeito, o seu painel de energia não está a ver essas linhas. O assistente de configuração da integração liga o painel aos contadores em tempo real, e nesses ainda se vê o salto habitual na hora em que o Home Assistant voltou. As linhas importadas, que não têm intervalo, estão disponíveis nas definições de origem do painel de energia — tem de as escolher.
Assim, a forma honesta tem três camadas: o registo próprio do hub nunca tem uma hora errada; as estatísticas importadas dão ao Home Assistant uma cópia desse registo sem intervalos; e o painel mostra a que aponte.
Como verificar a sua fatura, linha a linha
Isto é para fazer uma vez, para que da próxima vez que um valor pareça errado tenha onde ver.
- Abra a página Prices do hub e vá a Applied prices.
- Escolha o dia que pretende. A tabela tem uma linha por cada período de 15 minutos já fechado: Period · Buy · Sell · Source.
- Descarregue o CSV. As colunas são a hora de início na hora do próprio hub, o preço de compra (buy price) com tudo incluído (all-in price), o preço de venda (sell price) e a origem (Source).
- Compare um troço que lhe interesse com o extrato do seu fornecedor.
A coluna Source é a que a maioria das pessoas salta e depois precisa. Diz de onde veio o preço de cada período: a sua fonte principal, a sua reserva, um preço enviado do Home Assistant, a média da hora se o seu contrato for liquidado por hora, ou o seu plano tarifário quando nenhuma fonte cobriu esse período. Uma linha que diz plan não é um erro — significa que nenhum preço de mercado estava em vigor nesse período, pelo que o preço da zona o calculou, o que é um número diferente obtido corretamente.
Um dia pode ter menos de 96 linhas. Isso não é um preço perdido: o registo guarda os períodos em que o hub esteve a funcionar, por isso um reinício, uma atualização ou um corte de energia deixa um intervalo, e o intervalo significa que o hub não estava lá.
O que isto não faz
Convém dizê-lo com clareza, porque uma página sobre preços é o sítio mais fácil para sugerir mais do que é verdade.
- Não vai coincidir exatamente com o extrato do seu fornecedor. Nós medimos nas suas pinças; eles medem no contador deles. O registo diz-lhe que períodos custaram quanto e porquê, não o que dirá a sua fatura.
- Não liga nem desliga nada. O hub pode dizer-lhe — e dizer a uma automação — que um troço está barato, sob a forma de uma notificação. O que põe a máquina de lavar a funcionar é o Home Assistant, um divisor de carga, ou o senhor.
- Não altera a resolução do Home Assistant. Veja a nota acima; isto vale a pena repetir, porque é o que as pessoas esperam.
- Não é um veredicto sobre o seu contrato. Saber se um contrato de preço dinâmico lhe serve é uma questão entre si e o seu fornecedor.
Onde ler mais
- De onde vem o seu preço — as fontes, a cadeia de reserva, o que o seu contrato faz a um preço de mercado.
- How cost is calculated — a cadeia desde um quilowatt-hora medido até ao dinheiro, com o passo em duas ramificações para fontes spot e de preço tudo incluído.
- Cada circuito para o Home Assistant — as duas formas de executar o hub com o Home Assistant.
As citações são reproduzidas de tópicos públicos do fórum do Home Assistant e de issues do GitHub, com os respetivos autores e números de tópico, para que possa ler cada tópico na íntegra — incluindo as partes que discordam deste artigo.
