Desculpem se não estou a fazer isto da forma correcta, mas penso que isto é algo do interesse de muitos, e apesar de achar que deve ter erros, se toda a gente interessada der uma maozinha isto parece-me que fica a funcionar bem.
Portanto o que eu fiz foi criar helpers de horários para cada tarifa (Cheia/Ponta/Vazio para inverno e verão) de acordo com o existe na minha localidade.
Até aqui tudo fácil, após umas trocas de mensagens com uma pessoa (Troon) no fórum oficial o código final a inserir no configuration.yaml será este (se ja tiver algum template basta só copiar apartir da segunda linha):
template:
- sensor:
- name: "Preço Electricidade"
unit_of_measurement: "EUR/kWh"
state: >
{% set cv, ci, ev, ei, pv, pi, hv = bool(states("schedule.cheias_verao")), #IDs dos horários
bool(states("schedule.cheias_inverno")),
bool(states("schedule.eda_vazio_verao")),
bool(states("schedule.eda_vazio_inverno")),
bool(states("schedule.ponta_verao")),
bool(states("schedule.ponta_inverno")),
(5 < now().month < 11) %} #Meses
{% if (cv and hv) or (ci and not hv) %}
{{ (0.1711 * 1.16) | round(4) }}
{% elif (ev and hv) or (ei and not hv) %}
{{ (0.1056 * 1.16) | round(4) }}
{% elif (pv and hv) or (pi and not hv) %}
{{ (0.2380 * 1.16) | round(4) }}
{% endif %}
Basta só ajustar os campos relevantes no código acima.
Julgo que assim torna tudo mais fácil de ajustar horários e até usar para outras coisas, e até para quem quiser os preços podem ser helpers que se pode ajustar no dashboard em vez de ser os valores no YAML.
Pelo que testei basta adicionar este novo sensor template como entidade com o valor da electricidade no Dashboard da Energia e ele faz o resto sozinho
Sim, é como eu faço também para os tarifários indexados ao OMIE. Acontece que quando o dgomes/ha_erse foi criado o HA ainda não tinha o painel Energy, de modo que a própria integração fazia-te os cálculos. E pode ainda ser útil para quem quiser fazer cálculos a tarifários diferentes em simultâneo.
Agora tenho curiosidade de saber se com o teu método o HA calcula bem o custo do consumo nos períodos que acabam, por exemplo, às 14:30 e não à hora certa. Isto porque o HA internamente armazena os dados de hora em hora.
Pois eu pensava que só com o ERSE dava para fazer isto, depois la me lembrei da funcionalidade do Schedule e tentei e como não tinha visto ninguém aqui a usar isto meti
É uma boa observação isso de nao acabar na hora certa, mas quando vais às estatísticas para mudar alguma valor, os valores kWh (que que parto do principio que ele deve usar para fazer as contas), estão lá guardados de 5 em 5 min. Portanto penso que vai funcionar, mas vou tentar ver se consigo perceber.
Em que ficheiro se coloca o código? Configuration.yaml ou sensors.yaml
Alguem consegue ajudar na implementação disto.? estou a tentar colocar como template mas depois não aparece nada como sensor…
Adicioneio o coding no meu configuration.yaml … e fiz o restart do home assistant … mas quando vou a configuração de energia e seleciono “Utilizar uma entidade com o preço atual” o sensor “preco de eletricidade” nao aparece, como se o configuration.yaml nao o estivesse a criar/reconhecer … tem algo errado no meu código abaixo ?
configuration.yaml:
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
template:
- sensor:
- name: "Preço Electricidade"
unit_of_measurement: "EUR/kWh"
state: >
{% set cv, ci, ev, ei, pv, pi, hv = bool(states("schedule.eda_cheias_verao")), #IDs dos horários
bool(states("schedule.eda_cheias_inverno")),
bool(states("schedule.eda_vazio_verao")),
bool(states("schedule.eda_vazio_inverno")),
bool(states("schedule.eda_ponta_verao")),
bool(states("schedule.eda_ponta_inverno")),
(5 < now().month < 11) %} #Meses
{% if (cv and hv) or (ci and not hv) %}
{{ (0.1736 * 1.16) | round(4) }}
{% elif (ev and hv) or (ei and not hv) %}
{{ (0.1072 * 1.16) | round(4) }}
{% elif (pv and hv) or (pi and not hv) %}
{{ (0.2416 * 1.16) | round(4) }}
{% endif %}
Boas, epá pelo q estou a ver no meu configuration.yaml
template:
- sensor:
- name: "Preço Electricidade"
unit_of_measurement: "EUR/kWh"
state: >
{% set cv, ci, ev, ei, pv, pi, hv = bool(states("schedule.cheias_verao")),
bool(states("schedule.cheias_inverno")),
bool(states("schedule.eda_vazio_verao")),
bool(states("schedule.eda_vazio_inverno")),
bool(states("schedule.ponta_verao")),
bool(states("schedule.ponta_inverno")),
(5 < now().month < 11) %}
{% if (cv and hv) or (ci and not hv) %}
{{ (states("input_text.preco_cheio")) }}
{% elif (ev and hv) or (ei and not hv) %}
{{ (states("input_text.preco_vazio")) }}
{% elif (pv and hv) or (pi and not hv) %}
{{ (states("input_text.preco_ponta")) }}
{% endif %}
Parece-me q tens tudo certo.
No meu caso eu criei 3 entidades novas para puder fazer input do preço da electricidade sempre que a EDA actualizar o tarifário.
Mas mudar pela config yaml resulta tbm.
Fizeste reboot ao HA para ele assumir o config novo?
Acabei fazendo ligeiramente diferente, fix o helper em “number” ao invés de texto e mantive os cálculos no sensor
assim sendo, o numero no helper continua priva e o código ficou assim:
template:
- sensor:
- name: "Preço Electricidade"
unit_of_measurement: "EUR/kWh"
state: >
{% set cv, ci, ev, ei, pv, pi, hv = bool(states("schedule.eda_cheias_verao")),
bool(states("schedule.eda_cheias_inverno")),
bool(states("schedule.eda_vazio_verao")),
bool(states("schedule.eda_vazio_inverno")),
bool(states("schedule.eda_ponta_verao")),
bool(states("schedule.eda_ponta_inverno")),
(5 < now().month < 11) %}
{% if (cv and hv) or (ci and not hv) %}
{{ (float(states('input_number.eda_preco_cheias')) * 1.16) | round(4) }}
{% elif (ev and hv) or (ei and not hv) %}
{{ (float(states('input_number.eda_preco_vazio')) * 1.16) | round(4) }}
{% elif (pv and hv) or (pi and not hv) %}
{{ (float(states('input_number.eda_preco_ponta')) * 1.16) | round(4) }}
{% endif %}
deixo aqui em caso seja util para mais alguem
Agora o meu objetivo e criar um Card que utilise o scheduler para mostrar no momento qual a tarifa em vigor e ate qual hora, estou fazer um painel com um tablet para esta informação estar bem visível …
Tambem vou tentar fazer um sensor virtual para calcular os custos de acesso, assim faco um total que inclui o consumo mais os custos… se conseguir adiciono aqui