Bem, lá se vai a minha ideia. O utility_meter acusa referência circular e não permite…
Invalid config for [utility_meter]: [circle] is an invalid option for [utility_meter]. Check: utility_meter->utility_meter->monthly_excedente_rede_15min->circle. (See /config/configuration.yaml, line 62).
Ideias? Talvez criar um template para acumular os valores de 15 em 15 minutos (-1 ou 2 segundos antes da hora do reset do utility_meter), e esse sim, já daria para voltar a integrar noutro utility_meter, não?
Achei isto: https://github.com/reptilex/plainsum
Ou criar um template sensor baseado em tempo, que aos minutos 0 / 15 / 30 / 45 de cada hora calcule o máximo do utility_meter nos últimos 15 minutos (ou 5, por exemplo, é igual…)… Não sei estou por aqui a divagar…
- platform: statistics
name: Consumo Máximo Últimos 15 min (kWh)
entity_id: sensor.p15min_energy_consumo_rede
state_characteristic: value_max
max_age:
minutes: 14
- platform: statistics
name: Excedente Máximo Últimos 15 min (kWh)
entity_id: sensor.p15min_energy_excedente_rede
state_characteristic: value_max
max_age:
minutes: 14
Estes são os sensores provenientes do utility_meter, de 15 em 15 min:
Este um de estatísticas (max últimos 15min):
O que falta:
Criar outro sensor para somar apenas de 15 em 15 minutos o valor das estatísticas (serve ao minuto 1 / 16 / 31 / 46 . Não queria usar automações.
E continuando a divagar:
Editor de templates:
CONSUMO: {{ states('sensor.consumo_maximo_ultimos_15min_kwh')|float(default=0) }}
EXCEDENTE: {{ states('sensor.excedente_maximo_ultimos_15min_kwh')|float(default=0) }}
Se consumo > excedente, adiciona ao consumo a diferença;
caso contrário adiciona ao excedente a diferença:
{% if states('sensor.consumo_maximo_ultimos_15min_kwh')|float(default=0) > states('sensor.excedente_maximo_ultimos_15min_kwh')|float(default=0) %}
CONSUMO REDE = + {{ states('sensor.consumo_maximo_ultimos_15min_kwh')|float(default=0) - states('sensor.excedente_maximo_ultimos_15min_kwh')|float(default=0) }}
{% else %}
EXCEDENTE REDE = + {{ states('sensor.excedente_maximo_ultimos_15min_kwh')|float(default=0) - states('sensor.consumo_maximo_ultimos_15min_kwh')|float(default=0) }}
{% endif %}
Minuto a usar para calcular:
{% set minutos = now()|as_timestamp|timestamp_custom('%M')|int(default=0) %}
{% set segundos = now()|as_timestamp|timestamp_custom('%S')|int(default=0) %}
{% if (minutos in [1,16,31,46]) and (segundos == 0) %}
CALCULA = TRUE
{% endif %}
Devo estar a fazer um bicho de 7 cabeças disto, mas estou um pouco perdido, lol. Acho que realmente isto vai precisar de algo mais do que usar o que já existe no HA @dgomes. Mas vou ver o que consigo…