Ligou um preço spot ao Home Assistant, apontou para ele o painel de energia e o número saiu errado. Não ligeiramente errado — errado o suficiente para ter ido procurar o erro nos seus próprios templates.
O erro normalmente não está nos templates. Está em o preço que foi buscar e o preço que paga serem dois números diferentes, e nada na cadeia lhe diz qual dos dois está a usar.
"The Energy Dashboard in Home Assistant, while powerful, presents a challenge" — arva, tópico 682847 do fórum do Home Assistant
É o início, com pouca ênfase, de um tópico cujo autor acabou por escrever a sua própria integração. Este artigo trata do passo anterior: que fonte de preço cobre a sua zona, o que é que ela realmente lhe dá e o que pede em troca.
Spot ou tudo incluído: acerte nesta e a maior parte do resto segue
Cada fonte é de um de dois tipos, e o hub precisa de saber qual:
- Um preço spot é o início de um cálculo, não o fim. É o preço grossista do período. O que paga é isso, multiplicado por um fator (1.0 a não ser que o seu contrato indexe o preço da bolsa), mais a margem (markup) do seu fornecedor por quilowatt-hora, mais a taxa de rede (grid fee), mais os impostos e taxas, e depois o IVA sobre tudo — cada componente introduzido sem IVA, porque o IVA se aplica uma única vez, à soma. Todos os campos monetários são por quilowatt-hora, na unidade principal da sua moeda: uma margem de 2.5 cêntimos introduz-se como
0.025, não como2.5. O hub converte sozinho o que as fontes públicas indicam por megawatt-hora; o que você escreve, ele toma como dado. Se introduzir um valor que já inclui IVA, ele é tributado duas vezes, que é a forma mais comum de uma configuração spot dar alto. Um preço tudo incluído (all-in) nunca é tributado outra vez. Se alimentar um preço spot diretamente numa figura de custo, ela sai baixa demais — até acrescentar as partes, e a partir daí a aritmética passa a ser sua para manter. - Um preço tudo incluído já contém tudo isso. É o que o seu fornecedor fatura para esse período, impostos e tudo. Se acrescentar a sua própria margem por cima, a figura sai alta demais.
As duas falhas parecem iguais de fora: um custo que não bate com a fatura. A metade que se esquece são as partes que não são kWh, e não são pequenas:
"+1 for this. In the UK this is pretty much standard too" — thefunkygibbon, tópico 330609
Esse tópico é sobre termos fixos (standing charge) — um valor diário que não tem nada a ver com a quantidade consumida. É pedido desde 2021.
No hub, o tipo é uma propriedade da fonte. Escolha uma fonte spot e o fator, a margem, as taxas, os impostos e o IVA do seu contrato são campos que preenche uma vez; escolha uma fonte tudo incluído e o preço é tomado tal como chega. Em qualquer dos casos, o hub calcula cada período de 15 minutos com o preço desse período, e guarda o preço ao lado da energia, para que a figura possa ser rastreada mais tarde em vez de ser recalculada.
⚠️ Porque vale a pena acertar à primeira. O hub guarda qual o preço que aplicou, período a período — mas um preço já aplicado é histórico, não uma fórmula para voltar a executar. O Home Assistant tem a mesma propriedade, e as pessoas descobrem-no da pior maneira:
"I'm pretty sure there's no way to backdate changes in HA." — tinkergnome, tópico 585379
As seis fontes públicas
| Fonte | Tipo | Resolução | Áreas | Moeda |
|---|---|---|---|---|
| Energy-Charts (Fraunhofer ISE) | spot | 15 minutos | AT, BE, CH, CZ, DE-LU, DK1, DK2, FR, HU, IT-North, NL, NO2, PL, SE4, SI | EUR |
| Nord Pool (portal de dados não oficial) | spot | 15 minutos | SE1–4, NO1–5, DK1–2, FI, EE, LV, LT | a da área: SEK, NOK, DKK ou EUR |
| Elpriset just nu (SE) | spot | 15 minutos | SE1–4 | SEK |
| Hva koster strømmen (NO) | spot | 1 hora | NO1–5 | NOK |
| EnergyZero (NL) | tudo incluído | 15 minutos | NL | EUR |
| Octopus Agile (UK) | tudo incluído | 30 minutos | as 14 regiões GSP, de A a P | GBP |
Nenhuma exige token ou conta.
Uma fonte tudo incluído traz o preço de venda desse fornecedor. Se o seu fornecedor for outro, esse número não é o seu — envie antes o seu próprio preço a partir do Home Assistant, que é explicado mais abaixo.
A resolução não é o passo de faturação. Um preço de 30 minutos ou horário aplica-se a cada período de 15 minutos dentro dele — quatro períodos partilham simplesmente um mesmo preço — por isso os custos continuam a ser calculados por período de 15 minutos. E uma fonte de 15 minutos não obriga a faturar em 15 minutos: se lhe faturam por período ou pela média da hora é uma propriedade do seu contrato, definida à parte.
⚠️ A moeda nunca é convertida. O hub não converte SEK em EUR. Uma zona cuja moeda difere da do seu plano é recusada quando a guarda, e uma fonte noutra moeda é ignorada em vez de aproximada. Defina primeiro a moeda do seu plano e depois escolha uma zona que coincida.
O que cada uma pede em troca
Público não quer dizer incondicional. Cada fonte traz a menção que a sua licença exige — Bundesnetzagentur | SMARD.de / Energy-Charts (CC BY 4.0), por exemplo — e o hub mostra-a na página Prices. Essa linha não é decorativa: é a condição em que os dados podem ser usados. O Energy-Charts só é servido para as zonas publicadas sob CC BY 4.0.
Quem tem de a mostrar é decidido por quem mostra o preço. O hub transporta a menção e a ligação aos termos ao lado de cada preço, por isso tudo o que apresenta esse preço tem o que é preciso. A aplicação do próprio hub credita a fonte na página Prices. O painel RBgrid no Home Assistant também a apresenta. Se construir um painel seu com os dados do hub, mostrá-la cabe-lhe a si — o texto e a ligação vêm no conteúdo do preço exatamente por essa razão.
⚠️ O Nord Pool é acedido através de um portal de dados não oficial, e o hub di-lo onde nomeia a fonte. Não há nenhum acordo de serviço por trás: pode mudar ou parar sem aviso. Use-o com conhecimento de causa, e dê-lhe uma alternativa onde exista uma — veja o terceiro passo abaixo; para FI, EE, LV e LT é a única fonte da lista, por isso aí a alternativa só pode ser um envio a partir do Home Assistant.
Esta é também a resposta honesta a «trabalham com o meu fornecedor?» — o hub não trabalha com fornecedores. Lê dados públicos de preços de um mercado e aplica-lhes o contrato que descreve. Uma fonte da lista é uma definição que escolheu, não uma relação que alguém tenha.
Se a sua zona não estiver na lista
Então a sétima fonte é você. O Home Assistant — ou qualquer cliente — pode enviar preços ao hub em vez de o hub os ir buscar: até 200 períodos de cada vez, guardados no armazenamento do próprio hub. Você indica se o que envia é spot ou tudo incluído, e a partir daí é tratado exatamente como um fornecedor desse tipo.
É esse o caminho para um fornecedor para o qual o hub não tem fonte, e para um preço que você próprio calcula. Na versão ESPHome, o Home Assistant aparece desde o início entre as fontes; no firmware autónomo só surge depois de chegar um envio. Em qualquer dos casos, os preços dinâmicos estão desligados até os ativar, e a fonte é sua para escolher — o Home Assistant é uma opção na lista, não a que já vem escolhida.
Quatro coisas sobre o envio são mais fáceis de saber de antemão do que descobrir:
- Spot ou tudo incluído declara-se uma vez, nas definições de preços dinâmicos — não em cada lote. Defina-o de acordo com o que envia, e depois esqueça.
- Envia um lote de períodos, cada um com um início e um fim. O passo da sua fonte pode ser de 15 minutos, 30 ou uma hora; o hub calcula cada um dos seus períodos de 15 minutos a partir da entrada que o cobre.
- Reenviar um período substitui-o. Mesmo início, novo preço, e o valor guardado é sobrescrito — por isso reenviar um dia corrigido é a forma de o corrigir.
- As horas que não enviou não ficam sem preço. Seguem a cadeia habitual: a sua fonte de reserva (backup), se tiver definido uma, senão a tarifa da zona do seu plano. O registo indica qual cobriu cada período, por isso nada se perde em silêncio — apenas é calculado a partir de outro sítio.
Quando um preço não chega
Um mercado de dia seguinte publica o dia de amanhã uma vez por dia. Essa publicação pode atrasar-se, a obtenção pode falhar, a sua zona pode faltar numa resposta. O hub não desiste de um dia atrasado: continua a pedir — a cada quinze minutos na janela inicial e depois de hora a hora enquanto o dia estiver em falta — de modo que uma publicação que chegue tarde ao serão é apanhada em cerca de uma hora, e os períodos são recalculados a partir da fonte em vez de ficarem na tarifa do plano. Para cada período de 15 minutos, o hub resolve exatamente um preço, por esta ordem:
| fonte | o que significa | |
|---|---|---|
| 1 | Primária (primary) | o fornecedor que escolheu, para a sua zona |
| 2 | Reserva | opcional, tem de ser um fornecedor diferente; usada apenas nos períodos que a primária não cobre |
| 3 | O seu plano | a tarifa da zona em vigor nesse período |
Nada é misturado: um período, um preço, uma fonte — e a fonte fica guardada com o período, por isso um valor que leia na semana seguinte continua a poder ser rastreado até à origem do seu preço.
Ter ou não uma reserva disponível vem primeiro. Doze das áreas de mercado acima são cobertas por duas ou mais destas fontes; quinze são cobertas por exatamente uma, e aí a única segunda fonte é um preço que envia a partir do Home Assistant. Descubra a sua zona antes de ler o resto deste parágrafo como conselho.
Onde existe uma reserva, vale os cinco minutos. Sem uma, entra o plano. Isso é o comportamento correto — a sua energia continua a ser contada e calculada — mas é um preço diferente, e os seus custos nesse trecho não baterão com o mercado.
Uma reserva do outro tipo é permitida, e muda o que tem de preencher. Cada período é calculado pela classe da fonte que efetivamente o cobriu, não pela classe da primária — por isso uma primária tudo incluído com uma reserva spot exige que preencha de qualquer forma os componentes do seu contrato, senão os períodos da reserva saem como spot puro, ou seja, baixos demais. Preenchê-los não custa nada a um utilizador tudo incluído: uma fonte tudo incluído ignora esses campos. As únicas regras são que a reserva seja de um fornecedor diferente e que ambas cotem na moeda do seu plano.
⚠️ E uma reserva mantém um preço de mercado no lugar, do seu próprio tipo, que nem sempre é o mesmo número. Nos Países Baixos, por exemplo, uma reserva spot por trás de uma primária tudo incluído calcula esses períodos como spot mais os componentes do seu contrato, e não como o valor tudo incluído do seu fornecedor. O registo do hub indica que fonte usou em cada período, por isso uma substituição silenciosa distingue-se de uma falha silenciosa — e de um dia calculado com outra base.
Escolher, pela ordem que poupa trabalho
- Defina primeiro a moeda do seu plano. Ela limita as zonas que sequer consegue guardar, por isso fazê-lo depois obriga a refazer o resto.
- Encontre a sua zona na tabela e leia a coluna Tipo. Essa palavra decide se preenche os componentes do seu contrato ou se os deixa em paz.
- Escolha uma reserva — se a sua zona tiver uma segunda fonte. Doze áreas são cobertas duas vezes: SE1–4 e NO1–5 (Nord Pool ao lado da fonte nacional), DK1–2 e NL (Energy-Charts ao lado de uma segunda), e SE4 e NO2 três vezes. As restantes são cobertas uma vez. Para DE-LU, FR, AT, BE, CH, CZ, HU, IT-North, PL, SI, FI, EE, LV, LT e as regiões do Reino Unido não há um segundo fornecedor nesta lista, por isso o que segue a primária é a tarifa da zona do seu plano — a não ser que envie um preço a partir do Home Assistant, que é uma fonte com direito próprio.
- Confira o primeiro dia completo com as cifras do seu fornecedor, não com o gráfico grossista. Duas diferenças distintas significam coisas distintas: uma discrepância da ordem da fração de impostos e IVA significa que o tipo está mal definido, que é o caso comum — enquanto uma diferença da ordem do seu termo fixo não significa que haja erro algum. O hub calcula a energia, por quilowatt-hora. Um montante fixo diário ou mensal — vastrecht, Grundpreis, netbeheer, um termo fixo — não entra na sua figura, por isso o mês vai diferir da fatura exatamente nesse valor, e nenhuma definição o altera.
O que isto não faz
- Não é uma relação com um fornecedor. As fontes são dados públicos de preços de áreas de mercado; o contrato é o que descreve no plano.
- Não converte moeda. Uma incompatibilidade é recusada no momento em que a guarda, que é o melhor sítio para o descobrir.
- Não liga nem desliga nada quando o preço muda. As janelas baratas são um sinal; o que fazer com uma delas é decisão da sua automação.
- Não recalcula o passado. Um período mantém o preço que lhe foi aplicado, com a sua fonte. Corrigir uma definição muda o que acontece a seguir.
Onde ler mais
- Where your price comes from — a referência completa: cada campo, cada motivo de falha e o que cada um significa para si.
- Preços de mercado — a versão curta, se ainda estiver a decidir se quer isto.
- Prices in the app — a página Prices, a tabela por período e o registo do preço aplicado.
- How cost is calculated — a cadeia desde um quilowatt-hora medido até ao dinheiro.
- Tariffs and plans — zonas, taxas, impostos e IVA, que é onde está a outra metade de uma fonte spot.