Integração OMIE: preços horários, diários, mecanismo de ajuste

Olá boa tarde a todos. Antes de mais, um grande obrigado a todas as contribuições neste tópico, já consegui avançar bastante e estou bastante inclinado para aderir ao mercado indexado. Já adicionei os tarifários em que estou interessado e a integração omie e estão a funcionar na perfeição.

No entanto, gostaria de esclarecer duas questões.

1 - eu actualmente tenho o energy dashboard a contar os custos com o meu provedor actual e não quero desfazer isso. Há alguma forma de similar o custo diário sem ser através do energy dashboard?

2 - tenho dois carros Phev e eléctrico que actualmente carrego a partir das 22h, no horário de vazio. Estive a procurar, mas não sei ao certo como consigo automatizar o carregamento para acontecer nas horas mais baratas do dia. Imagino que já alguém teve o mesmo desafio. Alguma sugestão de como alcançar isto?

Outra questão, não relacionada directamente com o HA, já alguém sabe somo serão os tarifários para 2024, considerando as mudanças nas tarifas de acesso à rede? Como posso actualizar os templates da coopernico para simular já o que será 2024?

Obrigado desde já pela vossa ajuda.

  1. É possível. Os dados de consumos e valores horários são armazenados na base de dados de estatísticas do HA por isso é uma questão de fazer as contas. Pode-se usar SQL directamente na base de dados ou desenvolver um componente de HA para isso. Tenho este exemplo em como acedo às estatísticas do HA para calcular as médias do OMIE.

  2. Já tentaste fazer uma pesquisa sobre o assunto? Penso que haverá já discussões sobre isso. Não é uma coisa com a qual eu tenha experiência mas já ouvi falar em OpenEVSE, tanto aqui como no FB ou outros fóruns.

É actualizar os valores onde está escrito TAR_fora_vazio ou TAR_vazio.

O SQL parece promissor. Nem sabia que dava para adicionar essa integração. Vou explorar e partilho se conseguir chegar a algo.

Relativamente ao OpenEVSE vou explorar também, ver o que aprendo.

Obrigado uma vez mais. Admiro o trabalho que teve em implementar e partilhar isto com todos

Bem, depois de alguma pesquisa no site da ERSE e noutros, já encontrei o que procuro, e as notícias são mesmo muito desanimadoras… informação das TAR retirada daqui: https://www.facebook.com/photo?fbid=122093230214166912

depois de actualizar os templates, as notícias não são animadoras para 2024:
image

em sumário, estamos a falar de aumentos de uns 4 a 5 cêntimos por kWh

Eu tenho 10.35 de potência contratato e já pago, em 2023 0,4191€ por dia. Como é que sei qual é o meu TAR? Estou na Luzboa

Viva,

Actualizei os tarifários da Luzboa e Coopérnico para as novas TAR de 2024.

(1) Facebook 2023-12-31 13-17-31

Trata-se essencialmente de propagar as seguintes linhas pelos vários sensores (diff) para que as TAR actualizem na mudança de ano. Mais tarde é uma questão de remover as TAR de 2023.

TAR: "{{ -12.1 if now().date().isoformat() < '2024-01-01' else 36.5 }}"
TAR_vazio: "{{ -34.9 if now().date().isoformat() < '2024-01-01' else 9.2 }}"
TAR_fora_vazio: "{{ -0.5 if now().date().isoformat() < '2024-01-01' else 50.2 }}"

Também incluí outras pequenas melhorias (diff). É só ir buscar ao Wiki.

Boas entradas indexadas!

1 Curtiu

Nota: os sensores dos tarifários não incluem as componentes diárias do termo de potência. Se cada um tem mecanismos para contabilizar esses custos então deve actualizá-los independentemente.

Cada comercializador deve notificar os clientes das alterações neste componente (eu recebi email da Coopérnico com os novos valores).

@luuuis para quando tornar isto oficial :slight_smile: ?

Boa noite e bom ano a todos!

Estou com um problema no sensor disponibilizado na wiki para o tarifário coopérnico tarifa simples.

Atualizei a TAR e deixei de ter “today_hours” e “tomorrow_hours”.
image

Já apaguei tudo e voltei a copiar o que está na wiki, mas fica sempre assim.
image

log:
image

Parece-me estar tudo bem com o sensor.omie_spot_price_pt

O que me está a falhar?

Obrigado!
AL

Também estava com erros e a minha conclusão foi que o campo do mecanismo de ajuste está a retornar “undefined” em vez de “0” e isso está a crashar o script. Temporariamente, substituindo as linhas de definição do MAJ por {% set MAJ = 0 -%}, resolve o problema. Presumo que a mudança de ano tenha alterado qualquer coisa na origem deste parâmetro.

Remediou o erro de facto!

Muito obrigado!
AL

Entretanto o @luuuis alterou o código na página Wiki para resolver a questão. Fica 0 enquanto está indisponível, mas se voltar a ter valores, são incorporados…

Bom dia e bom ano a todos.

Continuo com erros, mesmo igualando os templates ao que está na Wiki
Aparentemente os erros ainda estão relacionados com “sensor.omie_adjustment_price_pt”

Mais um dia mais uma actualização… :slightly_smiling_face:

Embora por aqui esteja tudo a funcionar bem, claramente escapou-me algo pois do vosso lado há um estado que não foi antecipado nos templates e que causa erro.

Em todo o caso há pouco removi todas as referências ao mecanismo de ajuste pois este cessou em Dezembro 2023. Que seja desta que acabam estes erros! Mais tarde removo o sensor para o ajuste da integração.

Estive a ver isso ontem e já comecei um branch local, mais tarde dou notícias (mas se demorar muito podes dar mais um empurrão! :joy: ).

1 Curtiu

Obrigado @luuuis

Para mim (Coopérnico) ficou resolvido.

Para quem está a usar Luzboa, o template devolve “unavailable”. Possívelmente por ainda ter referências ao “sensor.omie_adjustment_price_pt”.

Removidas essas referências no availability. :+1:

1 Curtiu

Se quiseres ajuda coloca online que vou contribuindo :wink:

boa tarde. estava agora a verificar o template bi horário da LuzBoa e fiquei na dúvida se está tudo correcto.

A fórmula no site da LuzBoa é image
com os valores descritos assim:
Preço (Pp) = Preço de energia ativa a pagar (em €/kWh);
OMIE (OMIEh) = Preço horário médio mensal, no período faturado, no mercado OMIE (em €/kWh);
CGS = Custos de operação e gestão do sistema (valor de 0.0065 €/kWh);
Perdas (Perdas ERSE) = = são as perdas da rede, fixadas pela ERSE - Entidade Reguladora dos Serviços Energéticos
FA = Fator de Adequação 1.02
Kp = 5 - Valor fixo correspondente aos gastos operacionais da Luzboa (em €/MWh)

No template do github está assim:
((PFC*(1+PT))*FA+(CG)+(TEPAi))

sendo o PFC = PMD + Desvios + SAJ
o PMD é o valor diário médio do MIBEL e o TEPAi as TAR

o resto dos valores estão definidos como
MIBEL: “{{ 0 }}”
Desvios: “{{ 0 }}”
SAJ: “{{ 4 }}”
FA: “{{ 1.02 }}”
PT: “{{ 0.1507 }}”
CG: “{{ 5 }}”

As minhas dúvidas prendem-se com dois pontos.

  1. O que é o SAJ no template? não consigo perceber a correspondência com o que está na fórmula da LuzBoa

  2. O CG está como 5, no entanto no site da LuzBoa referem o CGS como 0.0065

Está a escapar-me algo? Se alguém me puder ajudar a perceber, agradeço.

UPDATE:

Estive a refazer o template bi horário da LuzBoa com base nas fórmulas no site, cruzei com os resultados que outras pessoas tiveram em excels que partilharam num grupo de facebook, e estão a bater certo. Fica aqui a minha versão do template revisto e simplificado.

    - unique_id: luzboa_spot_btn_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 FA = state_attr(this.entity_id, 'FA') -%}
        {% set k = state_attr(this.entity_id, 'k') -%}

        {% set TAR = state_attr(this.entity_id, 'TAR') -%}
        
        {% if None in [OMIE, CGS, Perdas, FA, k, TAR] %}
          {{ None }}
        {% else %}
          {{ ((OMIE+CGS)*Perdas*FA+k+TAR) | round(2) }}
        {% endif %}
      attributes:
        friendly_name: "Luzboa SPOT BTN (tarifário bi-horário)"
        formula: (OMIE+CGS)*Perdas*FA+k+TAR
        OMIE: "{{ state_attr('sensor.omie_spot_price_pt', 'today_average') }}"
        CGS: "{{ 6.5 }}"
        Perdas: "{{ 1.1507 }}"
        FA: "{{ 1.02 }}"
        k: "{{ 5 }}"
        TAR_vazio: "{{ -34.9 if now().date().isoformat() < '2024-01-01' else 9.2 }}"
        TAR_fora_vazio: "{{ -0.5 if now().date().isoformat() < '2024-01-01' else 50.2 }}"
        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') }}"

        today_hours: >
          {% 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 FA = state_attr(this.entity_id, 'FA') -%}
          {% set k = state_attr(this.entity_id, 'k') -%}

          {% set ns = namespace(hourly_data=[]) %}
          {% for h in state_attr('sensor.omie_spot_price_pt', 'today_hours') -%}
            {% if None in [OMIE, CGS, Perdas, FA, k, TAR] %}
              {% set price = None %}
            {% else %}
              {% 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') -%}
              {% set price=((OMIE+CGS)*Perdas*FA+k+TAR) | 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 Perdas = state_attr(this.entity_id, 'Perdas') -%}
          {% set FA = state_attr(this.entity_id, 'FA') -%}
          {% set k = state_attr(this.entity_id, 'k') -%}

          {% set ns = namespace(hourly_data=[]) %}
          {% for h in state_attr('sensor.omie_spot_price_pt', 'tomorrow_hours') -%}
            {% if None in [OMIE, CGS, Perdas, FA, k, TAR] %}
              {% set price=None %}
            {% else %}
              {% 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') -%}
              {% set price=((OMIE+CGS)*Perdas*FA+k+TAR) | round(2) %}
            {% endif %}
            {% set ns.hourly_data=ns.hourly_data + [(h.isoformat(), price)] %}
          {% endfor -%}
          {{ dict(ns.hourly_data) }}
2 Curtiram

Dei conta da integração https://www.home-assistant.io/integrations/opower que pode servir de base a um refactor da integração do OMIE :slight_smile:

Uma das coisas que ela faz é injectar histórico e ter exemplos de como consultar as estatísticas programaticamente (evitando a necessidade de usar SQL)


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade