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
Agradeço todos os inputs