Um monitor de energia do Home Assistant em ESP32: duas formas de usar o RBgrid e como escolher

  • Testado no firmware v1.2.1
  • Primeiros passos

Decidiu medir os seus próprios circuitos e acompanhá-los no Home Assistant. As pinças são baratas, passam à volta de um fio sem lhe tocar, e não faltam pessoas que já o fizeram.

O que quase ninguém lhe diz logo à partida é que existem duas formas diferentes de executar isto. No painel de energia ficam com um aspeto muito parecido. Por dentro, não são a mesma coisa — e passar de uma para a outra mais tarde significa começar o seu histórico do zero.

Por isso, este artigo trata da escolha, não da ligação elétrica. As duas rotas executam o mesmo núcleo de medição no seu próprio ESP32 e medem da mesma forma. O que muda é onde se configura, com o que o dispositivo pode comunicar e o que chega ao Home Assistant.

Faça a escolha antes de começar a recolher histórico

A passagem de uma rota para a outra é uma regravação por USB com a outra imagem. Não é oferecida como atualização over-the-air em nenhum dos sentidos, ninguém migra nada por si, e o instalador para navegador oferece um apagamento total quando instala de raiz.

⚠️ Escolha a rota antes de começar a recolher histórico. Mudar mais tarde significa regravar por USB, introduzir de novo os seus pontos, módulos, plano tarifário e janelas, e começar o histórico registado do zero. Na rota autónoma, exporte primeiro o que tem em CSV se quiser guardá-lo.

Esse é todo o conselho sobre migração, e está aqui e não no fim do artigo porque só é útil antes da decisão. Os dois sentidos são um início do zero; nenhum é o barato.

O que é igual nas duas formas

A maior parte do que está a comprar não depende da rota:

  • A medição. O mesmo núcleo de medição, as mesmas pinças, os mesmos períodos de 15 minutos fechados no dispositivo.
  • Preços de mercado. O hub obtém ele próprio o preço do dia seguinte para a sua zona, aplica o seu contrato — zonas, taxas, impostos, IVA — e valoriza cada período de 15 minutos com o preço desse período.
  • Janelas baratas. Regras para «abaixo de um nível», «os períodos mais baratos num intervalo» e «o mais barato antes de uma hora», avaliadas no dispositivo.
  • Picos de importação. A importação mais alta de 15 minutos e a mais alta por hora, na entrada da rede, por ciclo de faturação.
  • Nós remotos. Os nós ESP-NOW são o mesmo dispositivo e o mesmo firmware nas duas rotas.
  • O registo pertence ao dispositivo. As horas são fechadas e valorizadas no hub, por isso o que o Home Assistant estiver a fazer — reiniciar, atualizar, desligado — não altera o que foi medido.
  • Nenhuma cloud no caminho. Nenhuma das rotas precisa de uma conta em lado nenhum, que é a parte que as pessoas mais perguntam e menos vezes recebem resposta:

"Também, parece que nenhum deles é local, o que é uma chatice enorme." — ncd, tópico 607039 do fórum do Home Assistant

O que muda

A aplicação própria do hub Dentro do Home Assistant
Onde se configura a aplicação web do hub, no endereço do próprio hub o painel RBgrid no Home Assistant
Aplicação web sim não
Como o Home Assistant o vê descoberta MQTT a API nativa do ESPHome
Um broker para executar sim, se quiser o Home Assistant nenhum
MQTT, REST, WebSocket sim não — o ESPHome gere o lado da rede
Preços de mercado, plano, zonas sim sim
Janelas baratas estado publicado em MQTT um evento do Home Assistant para as suas automatizações
Picos de importação na aplicação mostrados no separador Prices do painel, só de leitura; o dia do ciclo de faturação é definido por uma ação, não por um formulário
Nós ESP-NOW remotos na aplicação emparelhados e listados no separador Network do painel
Histórico horário para as estatísticas do Home Assistant não — apenas totais em tempo real sim, até 30 dias na configuração, depois hora a hora
Cópia de segurança da configuração e exportação CSV como ficheiros sim não
Atribuição de preço apresentada para si a página Prices da aplicação o painel apresenta-a

Duas linhas dessa tabela merecem ser lidas duas vezes.

O broker. Se executar o hub na sua rota própria e o quiser no Home Assistant, precisa de um broker MQTT — é assim que os dois se encontram. Um hub usado apenas pela sua aplicação web não precisa de nenhum. Na rota do Home Assistant não há broker algum, porque é o protocolo nativo do ESPHome que faz a comunicação.

A importação do histórico. Esta é a única assimetria real — e é uma adição, não uma substituição. O Home Assistant mantém as suas próprias estatísticas horárias nas duas rotas, a partir dos valores em tempo real que recebe; essa parte não muda. O que a rota ESPHome acrescenta é um segundo conjunto de linhas: a integração escreve o registo horário do próprio hub nas estatísticas de longo prazo, ao lado das outras, e a primeira importação recua no tempo, de modo que até 30 dias do que o hub já tinha registado chegam de uma só vez — se o hub já estava a funcionar antes de configurar a integração. Essas linhas não duplicam nada no seu painel até as escolher como origem. Na rota MQTT não existe segunda cópia; as estatísticas do Home Assistant são as que ele próprio calculou, como sempre. Em qualquer dos casos, nada se perde no hub.

Se o Home Assistant já é a sua interface

Grave a imagem ESPHome, adote o dispositivo, e o painel RBgrid no Home Assistant passa a ser o sítio onde configura tudo: pontos, módulos, o plano tarifário, as janelas. Não há uma segunda aplicação para manter nem um broker para executar.

Lá chegar tem duas formas, e ambas são normais: gravar a imagem pronta de fábrica para a sua placa a partir de um navegador e adotar o dispositivo como faria com qualquer outro dispositivo ESPHome; ou, se já mantém os seus dispositivos ESPHome em YAML, adicionar o componente como fonte externa e incorporá-lo na sua própria configuração. As atualizações seguintes são as habituais do ESPHome: instala-as a partir do painel do ESPHome, e uma imagem que falhe volta à anterior. Os passos exatos, incluindo a única exportação que produz uma placa que não arranca, estão na página da rota ESPHome.

Concretamente, nesta rota:

  • Os picos estão no separador Prices do painel, num cartão Import peaks (capacity tariff): o dia em que começa o ciclo de faturação, a média mais alta de 15 minutos, a hora mais alta. Lê-os ali; para mudar o dia do ciclo, chama a ação da integração a partir de uma automatização ou das Developer tools.
  • Os nós estão no separador Network do painel: emparelhamento, a lista, o estado de cada nó, o sinal, o firmware e as entradas que transporta. Um nó que desapareça aparece como offline, é contado no cartão Overview, fica registado no log do hub no separador Events, e é lançado como evento do Home Assistant — para que uma automatização o possa avisar.
  • Os preços vêm com a fonte creditada no painel, como os termos do fornecedor exigem.

O que abdica é a lista da tabela: sem aplicação web, sem MQTT, sem REST, sem WebSocket, e sem cópia de segurança da configuração nem CSV que possa guardar como ficheiro.

Esse último ponto é mais estreito do que parece, e convém não o ler mal: os períodos de preço de 15 minutos continuam lá. O separador Prices do painel apresenta cada período que o hub guarda — hoje e amanhã — com a origem de cada um quando há mais de uma fonte em jogo, e uma ação devolve o mesmo em JSON, para que uma automatização o possa entregar a quem quiser. O que falta é um ficheiro, não os dados.

Se quer que o hub funcione sozinho

O hub serve a sua própria aplicação web no seu próprio endereço. As tarifas, os pontos, o histórico e os preços são definidos lá, e ele não precisa do Home Assistant para ser útil — o que importa se o Home Assistant for um dos vários sítios onde olha, ou se preferir que o contador não dependa dele de todo.

A partir daí, o Home Assistant é opcional: execute um broker, aponte o hub para ele, e os pontos chegam por descoberta MQTT. Há também REST e um WebSocket, para um painel próprio ou para qualquer coisa que fale HTTP. E tanto uma cópia de segurança da configuração como uma exportação CSV existem como ficheiros que pode guardar noutro lado.

Se esta for a sua rota, o passo a passo desde a gravação até ao painel de energia está descrito em separado: Um contador de energia para o Home Assistant, da gravação ao painel de energia.

Custo por circuito: o que o Home Assistant não consegue fazer sozinho

É a parte que faz as pessoas andar às voltas, e vale a pena percebê-la antes de escolher, porque é igual nas duas rotas.

O painel de energia do Home Assistant calcula de bom grado o custo da casa inteira. Não lhe diz quanto custou a bomba de calor, porque ali o custo pertence a uma fonte de rede, não a um equipamento. A solução a que as pessoas recorrem é declarar cada aparelho como uma fonte de eletricidade própria, o que produz um número e também é claramente errado:

"Adiciono um dispositivo individual como fonte de eletricidade só para ver os custos de funcionamento. O que é bastante estúpido." — degreal, tópico 334932

Esse tópico está aberto desde 2021. A outra metade do problema é a própria tarifa: zonas, taxas fixas e IVA acabam em sensores template e helpers utility_meter, e são frágeis de uma forma difícil de depurar, porque nada dá erro — o número simplesmente está errado:

"Não, continua a contar em 'peak' independentemente do que ponho em offpeak." — um utilizador no tópico 313300

"Foi mesmo difícil com isto — é muito simples, mas há algumas armadilhas que convém conhecer." — steve_jo, tópico 484105

O que muda quando a tarifa vive no contador é que a aritmética deixa de ser sua para montar. O plano — zonas por hora, taxas, impostos, IVA — é configurado uma vez no dispositivo, e cada ponto tem o custo calculado separadamente, em tempo real e hora a hora, com a energia exportada valorizada ao seu próprio preço.

⚠️ Mas seja claro quanto a onde esse dinheiro aparece, porque não está dentro do painel de energia. O Home Assistant não tem um campo de custo para um equipamento individual — essa é a lacuna, e nenhuma integração a consegue preencher a partir do exterior. O que obtém é o valor em três sítios que pode usar: uma entidade de custo por ponto, em tempo real, para pôr em qualquer cartão; o custo horário por ponto nas estatísticas de longo prazo, para um cartão de estatísticas; e as tabelas Points e History do próprio painel. O painel de energia continua a mostrar os seus pontos como dispositivos com a energia. Por isso, o dinheiro por circuito lê-se ao lado do painel de energia, não dentro dele — que é a forma honesta, e melhor do que a solução alternativa, mas não é a coluna do painel que possa estar a imaginar. Nenhum sensor template está no caminho, o que elimina uma classe de problemas e não todos: os limites das zonas e o IVA são aplicados onde a energia é medida, e não reconstruídos a jusante.

⚠️ Um limite honesto. O que chega às estatísticas do Home Assistant é horário, porque esse é o período mais curto que o Home Assistant guarda. Os períodos de 15 minutos ficam no hub, onde o registo do preço aplicado os guarda em CSV. Se o seu contrato se move em períodos de 15 minutos, o dispositivo é o sítio onde essa resolução existe — o Home Assistant mostrar-lhe-á horas dela.

Três perguntas que decidem

  1. O Home Assistant é onde vê tudo, ou um de vários sítios? Se tudo já vive lá, a rota ESPHome elimina uma aplicação e um broker. Se for um de vários, o hub autónomo mantém a sua própria porta de entrada.
  2. Quer um sítio onde olhar quando o Home Assistant estiver em baixo? A medição continua independentemente, nas duas rotas. Mas na rota ESPHome o painel é parte do Home Assistant, por isso, enquanto ele estiver em baixo, não tem onde abrir.
  3. As suas próprias ferramentas precisam de MQTT, REST ou WebSocket? Se sim, a escolha já está feita por si: estes existem apenas na rota autónoma.

Se, depois disso, continuar empatado, escolha o hub autónomo — não porque possa sair com o seu histórico, porque não pode: nada se move em nenhum dos sentidos, e isso é verdade para as duas rotas. Escolha-o porque os seus dados saem em ficheiros. Uma exportação CSV e uma cópia de segurança da configuração são coisas que pode guardar noutro lado, e no dia em que mudar de ideias essa é a diferença entre recomeçar o registo com o antigo na mão ou recomeçá-lo sem ele.

O que isto não faz

  • Nenhuma das rotas liga nem desliga seja o que for. O hub mede e valoriza; o que fazer numa janela barata é decisão da sua automatização, não do contador.
  • Nenhuma das rotas dá ao Home Assistant resolução de 15 minutos. Os períodos são do dispositivo; o Home Assistant guarda horas.
  • Nenhum histórico passa entre as rotas. Uma mudança é uma regravação e um início do zero, nos dois sentidos.
  • A rota não altera a forma como o dispositivo mede. Mesmo núcleo, mesmas pinças, mesmos períodos — só o envolvente é diferente.

Onde ler mais