Isto aqui tem de referenciar o teu HA, podes usar o lápis para editar.
Também podes configurar manualmente, está tudo explicado em
Isto aqui tem de referenciar o teu HA, podes usar o lápis para editar.
Também podes configurar manualmente, está tudo explicado em
Não conseguia postar mais até haver resposta.
Esquece Luís! Já dei com o problema. Já está tudo ok. E sim, era isso mesmo!!
Tive que alterar o URL e tudo funcionou. Eu tenho um duckdns para aceder por fora.
Muito obrigado por tudo!
Boa tarde a todos
Novas TAR:
AL
Bom dia,
excelente trabalho.
Instalei, mas para os preços de mecanismo, não apresenta valor, sendo como Desconhecido! Onde poderá estar o problema?
Obrigado.
O mecanismo ibérico acabou em 1/1/2024 portanto não há mecanismo nenhum atualmente. Certo que se poderia remover essas entidades, mas basta simplesmente ignorar essas entidades.
Boa tarde,
Obrigado pela resposta.
Faz todo o sentido;)
Obrigado.
nova versão do template Ibelectra Familia Bi horário, a incluir o novo valor de financiamento da Tarifa Social (FTS) a partir de 20 de Junho de 2024, bem como os valores actualizados para as Tarifas de Acesso às Redes, com efeito a partir de 1 de Junho de 2024.
Não fiz para a versão Simples, mas será uma questão de adaptar com as alterações que partilho nesta versão bi horária.
- unique_id: ibelectra_familia_bihorario
unit_of_measurement: '€/MWh'
availability: "{{ state_attr('sensor.omie_spot_price_pt', 'today_average') != None }}"
state_class: measurement
state: >
{% set OMIE = state_attr('sensor.omie_spot_price_pt', 'today_average') -%}
{% set CGS = state_attr(this.entity_id, 'CGS') -%}
{% set Perdas = state_attr(this.entity_id, 'Perdas') -%}
{% set k = state_attr(this.entity_id, 'k') -%}
{% set TAR = state_attr(this.entity_id, 'TAR') -%}
{% set FTS = state_attr(this.entity_id, 'FTS') -%}
{% if None in [CGS, Perdas, k, TAR, FTS] %}
{{ None }}
{% else %}
{{ ((OMIE+CGS)*(1+Perdas)+k+TAR+FTS) | round(2) }}
{% endif %}
attributes:
friendly_name: "Ibelectra Solução Familia (tarifário bi-horário)"
formula: (OMIE+CGS)*(1+Perdas)+k+TAR+FTS
OMIE: "{{ state_attr('sensor.omie_spot_price_pt', 'today_average') }}"
CGS: "{{ 7 }}"
Perdas_vazio: "{{ 0.1430 }}"
Perdas_fora_vazio: "{{ 0.1728 }}"
Perdas: "{{ state_attr(this.entity_id, 'Perdas_vazio') if now().hour < 8 or now().hour > 21 else state_attr(this.entity_id, 'Perdas_fora_vazio') }}"
k: "{{ 3.5 }}"
TAR_vazio: "{{ 9.2 if now().date().isoformat() < '2024-06-01' else 15.7 }}"
TAR_fora_vazio: "{{ 50.2 if now().date().isoformat() < '2024-06-01' else 86 }}"
TAR: "{{ state_attr(this.entity_id, 'TAR_vazio') if now().hour < 8 or now().hour > 21 else state_attr(this.entity_id, 'TAR_fora_vazio') }}"
FTS: "{{ 0 if now().date().isoformat() < '2024-06-20' else 2.893 }}"
today_hours: >
{% set OMIE = state_attr('sensor.omie_spot_price_pt', 'today_average') -%}
{% set CGS = state_attr(this.entity_id, 'CGS') -%}
{% set k = state_attr(this.entity_id, 'k') -%}
{% set FTS = state_attr(this.entity_id, 'FTS') -%}
{% set ns = namespace(hourly_data=[]) %}
{% for h in state_attr('sensor.omie_spot_price_pt', 'today_hours') -%}
{% set Perdas = state_attr(this.entity_id, 'Perdas_vazio') if h.hour < 8 or h.hour > 21 else state_attr(this.entity_id, 'Perdas_fora_vazio') -%}
{% set TAR = state_attr(this.entity_id, 'TAR_vazio') if h.hour < 8 or h.hour > 21 else state_attr(this.entity_id, 'TAR_fora_vazio') -%}
{% if None in [OMIE, CGS, Perdas, k, TAR, FTS] %}
{% set price = None %}
{% else %}
{% set price=((OMIE+CGS)*(1+Perdas)+k+TAR+FTS) | round(2) %}
{% endif %}
{% set ns.hourly_data=ns.hourly_data + [(h.isoformat(), price)] %}
{% endfor -%}
{{ dict(ns.hourly_data) }}
tomorrow_hours: >
{% set OMIE = state_attr('sensor.omie_spot_price_pt', 'tomorrow_average') -%}
{% set CGS = state_attr(this.entity_id, 'CGS') -%}
{% set k = state_attr(this.entity_id, 'k') -%}
{% set FTS = state_attr(this.entity_id, 'FTS') -%}
{% set ns = namespace(hourly_data=[]) %}
{% for h in state_attr('sensor.omie_spot_price_pt', 'tomorrow_hours') -%}
{% set Perdas = state_attr(this.entity_id, 'Perdas_vazio') if h.hour < 8 or h.hour > 21 else state_attr(this.entity_id, 'Perdas_fora_vazio') -%}
{% set TAR = state_attr(this.entity_id, 'TAR_vazio') if h.hour < 8 or h.hour > 21 else state_attr(this.entity_id, 'TAR_fora_vazio') -%}
{% if None in [OMIE, CGS, Perdas, k, TAR, FTS] %}
{% set price=None %}
{% else %}
{% set price=((OMIE+CGS)*(1+Perdas)+k+TAR+FTS) | round(2) %}
{% endif %}
{% set ns.hourly_data=ns.hourly_data + [(h.isoformat(), price)] %}
{% endfor -%}
{{ dict(ns.hourly_data) }}
Actualizei todos os tarifários para adoptarem as novas TAR a partir de 1 de Junho, incluindo também a alteração relativa à TSE nos tarifários Ibelectra.
Corrigi ainda um pequeno erro nos tomorrow_hours
que só manifesta na véspera de uma alteração (de TAR ou do FTS) que levava a que se usasse o valor do dia actual em vez do valor do dia seguinte. Está no Wiki e penso que testei tudo, se encontrarem problemas avisem.
Boas,
Testado com sucesso o da Ibelectra bi-horário
Olá,
Não estou a conseguir configurar este template no meu HA, certamente estará alguma coisa a escapar-me e por isso preciso da vossa ajuda.
Já tenho a integração OMIE instalada e a funcionar, embora os 2 sensores de Preço de mecanismo de ajuste estejam a dar valor “desconhecido”, mas o preço marginal ES e PT estão a funcionar bem.
Criei um template sensor, copiando o código disponibilizado ( unique_id: ibelectra_familia_bihorario ), mas depois de reiniciar o HA, não existe nenhum sensor relacionado com a ibelectra… O que é que estarei a fazer mal?
Será que tenho que substituir onde diz “this.entity_id” por algum valor?
Peço desculpa, mas estou um bocadinho perdido e precisava da vossa ajuda.
Obrigado desde já.
Ok, já consegui por a funcionar. Tenho um ficheiro sensores.yaml separado e por alguma razão não estava a conseguir. Meti diretamente no configuration.yaml e funcionou logo.
Os valores é que me parecem altos.
Qual é a fonte dos valores da fórmula? Onde estão publicados?
Deixo aqui a minha proposta, caso pretendas adicionar ao wiki:
Boa tarde a todos,
espero que me consigam ajudar, ando às voltas com isto à dias e parece que a minha sanidade está a escoar devagarinho.
Os apex mencionados na wiki da integração são excelentes e dão para ter uma boa ideia das coisas, mas acontecer que algo deve ter mudados porque os que mostram forecast, por algum motivo, deixaram de mostrar os valores de forma correta e por mais que olhe e teste não consigo perceber o que possa estar errado.
Isto é o gráfico para o dia de hoje:
como podem ver, algo de errado ser passa com a curva de forecast, devia estar metade do que mostra, mas por algum motivo a coisa sai sempre com valores disparatados.
O código usado é o seguinte:
- type: custom:apexcharts-card
update_interval: 5m
header:
show: true
title: Today/Now
span:
start: day
graph_span: 1d
all_series_config:
type: area
extend_to: false
stroke_width: 1
group_by:
func: avg
duration: 15m
series:
- entity: sensor.solax_x1_hybrid_g3_pv_power_total
name: Solar
yaxis_id: power
fill_raw: 'null'
transform: return x / 1000
unit: kW
show:
legend_value: false
- entity: sensor.solax_x1_hybrid_g3_house_load
name: Load
yaxis_id: power
fill_raw: zero
transform: return x / 1000
unit: kW
show:
legend_value: false
- entity: sensor.template_ibelectra_familia_simples
name: Buy
float_precision: 2
yaxis_id: price
type: line
curve: stepline
data_generator: |
return Object.entries(entity.attributes.today_hours)
.map(([dateString, price]) => [ new Date(dateString), price ])
show:
extremas: true
legend_value: false
- entity: sensor.template_luzboa_excedente_indexado
name: Sell
float_precision: 2
yaxis_id: price
type: line
curve: stepline
fill_raw: 'null'
data_generator: |
return ((hours) =>
Object.keys(hours)
.map((dateString) => [ new Date(dateString), hours[dateString]])
.map(([date, price]) => [ date, (date.getHours() > 6 && date.getHours() < 21) ? price : null])
)(entity.attributes.today_hours)
show:
extremas: true
legend_value: false
- entity: sensor.solcast_forecast_today
name: Forecast
yaxis_id: power
type: line
curve: smooth
fill_raw: 'null'
data_generator: |
return (() => {
const to_pair = ({period_start,pv_estimate}) => ([
new Date(period_start),
pv_estimate
])
const has_solar = ([,kWh]) => kWh !== 0
const normalize_kW = ({ minutes }) => ([datetime, kWh]) => [datetime, kWh * 60/minutes]
return entity.attributes.detailedForecast
.map(to_pair)
.map(normalize_kW({ minutes: 30 }))
.filter(has_solar)
})()
show:
legend_value: false
yaxis:
- id: power
align_to: 0.5
- id: price
opposite: true
min: '|-5|'
max: '|5|'
align_to: 1
o forecast do dia seguinte também deve estar com algum problema porque esse nem valores apresenta, mas também não é da coisa mais importante para agora
Alguém mais entendido na coisa que eu que consiga perceber que raio de estranho passa-se aqui?
A dado momento deixou de ser necessária esta transformação dos valores do Solcast. É apagar esta linha do Apex.
Edit: também mudaram os nomes das entidades. É consultar os nomes que estão agora no Wiki.
Perfeito, ficou a funcionar lindamente
realmente nao tinha reparado nessas mudanças, por mais que visse o codigo nao iria chegar la garantidamente.
ja agora, o oziee/ha-solcast-solar desapareceu, ja fizeram fork para continuar o projecto mas o original, ninguem sabe porquê mas o autor apagou tudo e desapareceu.
A nova versão funcional é esta https://github.com/BJReplay/ha-solcast-solar
Coisa bizarra… estive a ler o histórico disso, basicamente o autor não aguentou a chateação de ter de lidar com (alguns) utilizadores e amuou. Enfim.
Bom dia,
Antes de mais quero agradecer ao Luís e a todos os contribuidores aqui presentes.
Percebo pouco de HA e aos poucos estou a fazer aqui as integrações de todos os dispositivos da casa incluindo agora a questão da eletricidade.
Já consegui fazer alguns graficos e ajustar tudo para os meus valores. O meu grande problema / desejo é querer ter no grafico apex as barras com o preço da omie e a linha com o valor que eu pago.
Consegui fazer um sensor para calcular mas esse sensor apenas mostra até à hora em que estamos.
Consigo fazer algo que calcule o valor para os dados todos do dia?
Isto é, tenho a Omie e ter um sensor/variavel com o calculo da omie/1000 + o resto que eu lhe queira somar mas para as horas todas e não apenas até à hora em que estamos.
Isto é o grafico que tenho de momento.
Gostava de ter o valor kWh previsto para o restante dia.
Obrigado!
Já consultaste o Wiki? Tens lá vários exemplos disso, tanto a nível do tarifário como do gráfico.
É preciso mexer com atributos de sensor e usar um data_generator
no gráfico, pois caso indicação contrária esses componentes estão feitos para tratar dados do passado e presente.
Obrigado Luís vou tentar ver se consigo usar data_generator!
I just installed this on my HA, it was easy and its working out of the box: I get my omie_spot_price_es sensor that I can display on the dashboard and I can use for automations. Thanks a lot.
One question: is there a way for it to show the full day before it’s happened? I can go here in the morning and see the prices for this full day, I’d like to use that for my automations:
https://www.omie.es/es/market-results/daily/daily-market/daily-hourly-price
Copyright © 2017-. Todos os direitos reservados
CPHA.pt - info@cpha.pt