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

Com base no trabalho que partilhei em Adquirir preços OMIE - #18 por luuuis lancei agora o https://github.com/luuuis/hass_omie para quem quer uma coisa mais fácil e que não implique andar a “pastar” de Gists e a lamber YAMLs. :smiley:

A instalação é com HACS conforme as instruções do README. A versão 0.0.1:

  • Puxa os preços horários do mercado diário assim como do mecanismo de ajuste
  • O sensor actualiza a cada minuto com a valor horário correcto
  • As atributos disponibilizam os valores para as 24 horas do dia e também a média aritmética (facilita utilização no ApexCharts ou com Template Sensors)

Em breve:

  • Melhoria interna para fazer chamadas de rede ao omie.es com menos frequência
  • Acrescentar os sensores relativos ao dia seguinte

Experimentem e digam da vossa justiça, reportem erros no GitHub, etc.

10 Curtiram

Que coincidência gira. Estava a ler o teu comentário hoje de tarde, e agora publicas isto :slight_smile: Thanks!!

Uma coisa, não era suposto ter um sensor com o valor horário? Do meu lado só tenho sensores com o Marginal price…

Então, esses sensores vão assumindo o valor da presente hora ao longo do tempo, se é que me faço entender.

Também estão lá os valores futuros e passados nos atributos.

Excelente trabalho :clap:

Comentarios para melhorar:

Esses 2 pontos e podes abrir PR para inclusão oficial :slight_smile:

1 Curtiu

Obrigado @dgomes. Tenho de ver isso da biblioteca separada, já vi que é o que é feito nos vários componentes oficiais. Não tenho grande experiência Python por isso sempre é mais um entrave.

Já estou a a usar DataUpdateCoordinator, se bem que vou fazer umas alterações no forma de actualizar para aquilo não estar a ir ao OMIE todos os minutos. O DataUpdateCoordinator não foi concebido para esse tipo de funcionamento, estilo cron.

Excelente trabalho e a funcionar perfeitamente!
Sugestão pois acho que vai gerar muita questão em breve, adionar possivelmente um exemplo de um apexchart card com os dados de forma a mostrar as variações.
Falo em parte por mim pois o apexchart pode ser um mundo gigante e as vezes fazer algo “simples” pode tornar-se uma confusão gigante, extrapolar valores de max, min e avg de um so sensor tem-se provado ser maior dor de cabeço do que estava à espera.

1 Curtiu

Obrigado, pretendo colocar exemplos de ApexCharts no Wiki para demonstrar o que se pode fazer com estes sensores.

1 Curtiu

Por agora criei esta página com o exemplo dos preços ao longo do dia. Os valores max/min o próprio ApexCharts consegue calcular e assinalar. Em breve estarão disponíveis como atributos do sensor para facilitar automatismos a partir desses dados.

2 Curtiram

obrigado pelo update!
ter aquele erro ao virar do dia tava a deixar-me doido! :slight_smile:

1 Curtiu

Não reparei logo que não estava a actualizar. Para a próxima avisa. :slightly_smiling_face:

acho que ainda ha qualquer coisa a falhar, por volta da 1 ele começa a dar erro.
queres que abra um ticket pelo github?
estranho porque os que ficam sempre com problemas são:

Adjustment mechanism price tomorrow - Portugal
        entity_id: sensor.omie_adjustment_price_pt_tomorrow
        state: unknown

    Adjustment mechanism price tomorrow - Spain
        entity_id: sensor.omie_adjustment_price_es_tomorrow
        state: unknown

    Adjustment unit amount for production facilities tomorrow
        entity_id: sensor.omie_adjustment_unit_price_tomorrow
        state: unknown

    Marginal price tomorrow - Portugal
        entity_id: sensor.omie_spot_price_pt_tomorrow
        state: unknown

    Marginal price tomorrow - Spain
        entity_id: sensor.omie_spot_price_es_tomorrow
        state: unknown

o DEBUG log

2023-03-06 02:59:33.605 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot: _async_update_data refreshing data
2023-03-06 02:59:33.708 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot: _schedule_refresh scheduling an update at 2023-03-06 03:00:00.438893+00:00 (none_before=2023-03-06 00:00:00.438893+01:00, next_hour=2023-03-06 04:00:00.438893+01:00)
2023-03-06 02:59:33.718 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment: _schedule_refresh scheduling an update at 2023-03-06 03:00:03.236550+00:00 (none_before=2023-03-06 00:00:03.236550+01:00, next_hour=2023-03-06 04:00:03.236550+01:00)
2023-03-06 02:59:33.773 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot_next: _schedule_refresh scheduling an update at 2023-03-06 03:00:01.424267+00:00 (none_before=2023-03-06 13:30:01.424267+01:00, next_hour=2023-03-06 04:00:01.424267+01:00)
2023-03-06 02:59:33.782 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment_next: _schedule_refresh scheduling an update at 2023-03-06 03:00:03.292704+00:00 (none_before=2023-03-06 13:30:03.292704+01:00, next_hour=2023-03-06 04:00:03.292704+01:00)
2023-03-06 02:59:34.245 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.spot data in 0.640 seconds (success: True)
2023-03-06 02:59:34.245 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot: _schedule_refresh scheduling an update at 2023-03-06 03:00:00.438893+00:00 (none_before=2023-03-06 00:00:00.438893+01:00, next_hour=2023-03-06 04:00:00.438893+01:00)
2023-03-06 02:59:34.248 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment: _async_update_data refreshing data
2023-03-06 02:59:34.358 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.adjustment data in 0.110 seconds (success: True)
2023-03-06 02:59:34.358 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment: _schedule_refresh scheduling an update at 2023-03-06 03:00:03.236550+00:00 (none_before=2023-03-06 00:00:03.236550+01:00, next_hour=2023-03-06 04:00:03.236550+01:00)
2023-03-06 02:59:34.361 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot_next: _async_update_data returning None before [13, 30] CET
2023-03-06 02:59:34.361 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.spot_next data in 0.000 seconds (success: True)
2023-03-06 02:59:34.362 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot_next: _schedule_refresh scheduling an update at 2023-03-06 03:00:01.424267+00:00 (none_before=2023-03-06 13:30:01.424267+01:00, next_hour=2023-03-06 04:00:01.424267+01:00)
2023-03-06 02:59:34.362 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment_next: _async_update_data returning None before [13, 30] CET
2023-03-06 02:59:34.362 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.adjustment_next data in 0.000 seconds (success: True)
2023-03-06 02:59:34.362 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment_next: _schedule_refresh scheduling an update at 2023-03-06 03:00:03.292704+00:00 (none_before=2023-03-06 13:30:03.292704+01:00, next_hour=2023-03-06 04:00:03.292704+01:00)

2023-03-06 03:00:00.520 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot: _async_update_data returning cached (market_date=2023-03-06, updated_at=2023-03-06 02:59:34.245181+00:00, update_interval=None)
2023-03-06 03:00:00.520 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.spot data in 0.001 seconds (success: True)
2023-03-06 03:00:00.520 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot: _schedule_refresh scheduling an update at 2023-03-06 04:00:00.438893+00:00 (none_before=2023-03-06 00:00:00.438893+01:00, next_hour=2023-03-06 05:00:00.438893+01:00)
2023-03-06 03:00:01.425 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot_next: _async_update_data returning None before [13, 30] CET
2023-03-06 03:00:01.425 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.spot_next data in 0.000 seconds (success: True)
2023-03-06 03:00:01.425 DEBUG (MainThread) [custom_components.omie.coordinator] omie.spot_next: _schedule_refresh scheduling an update at 2023-03-06 04:00:01.424267+00:00 (none_before=2023-03-06 13:30:01.424267+01:00, next_hour=2023-03-06 05:00:01.424267+01:00)
2023-03-06 03:00:03.238 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment: _async_update_data returning cached (market_date=2023-03-06, updated_at=2023-03-06 02:59:34.358245+00:00, update_interval=1:00:00)
2023-03-06 03:00:03.238 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.adjustment data in 0.001 seconds (success: True)
2023-03-06 03:00:03.238 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment: _schedule_refresh scheduling an update at 2023-03-06 04:00:03.236550+00:00 (none_before=2023-03-06 00:00:03.236550+01:00, next_hour=2023-03-06 05:00:03.236550+01:00)
2023-03-06 03:00:03.294 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment_next: _async_update_data returning None before [13, 30] CET
2023-03-06 03:00:03.294 DEBUG (MainThread) [custom_components.omie.coordinator] Finished fetching omie.adjustment_next data in 0.000 seconds (success: True)
2023-03-06 03:00:03.294 DEBUG (MainThread) [custom_components.omie.coordinator] omie.adjustment_next: _schedule_refresh scheduling an update at 2023-03-06 04:00:03.292704+00:00 (none_before=2023-03-06 13:30:03.292704+01:00, next_hour=2023-03-06 05:00:03.292704+01:00)

Então, esses são os sensores que dão os valores do dia seguinte, valores esses que só estão disponíveis depois da publicação dos resultados do mercado diário que inicia às 12:00 CET.

Conclusão, é de esperar que esses sensores não tenham valor entre a meia noite e sensivelmente as 12:30 de Portugal. Não é erro. :slight_smile:

Settings – Home Assistant 2023-03-06 11-17-24

https://www.omie.es/pt/mercado-de-electricidad

para manter coerencia nao seria preferivel manter o valor anterior em cache e so substituir pelo novo após o novo pull?
evitava termos o HA a queixar-se de terem sensores com valores Unknown durante um par de horas

:thinking: Onde é que o HA se queixa? Aqui deste lado não tenho nada nos logs e tanto quanto sei o valor “Unknown” é um estado válido que os sensores podem assumir.

O que descreves é que não seria coerente pois teríamos sensores com valores “às vezes de hoje e outras vezes de amanhã”, o que induz em erro. Como está, é uma representação fiel à realidade.

O que já me ocorreu é acabar com esses sensores e colocar a informação do dia de amanhã como atributos dos outros sensores (que só ganham valores a partir das 12:30) até porque suspeito que muitos não têm interesse nesses sensores.

Já agora, podes partilhar como e para quê estás a utilizar os sensores “futuros”?

realmente agora vendo/lendo a coisa da tua prespectiva faz sentido.
ainda ando a estudar a coisa de forma a ver como será a melhor maneira de usar os sensores, neste momento estão num card so para ver mas ei de acabar por integrar em alguma coisa para calculo de despesas/ganhos.
Pago a conta de energia à endesa (com aquele tarifario de aniversário nao bi-horario) e recebo do excedente da LuzBoa, queria ver a melhor maneira de meter tudo a calcular o que entra e o que sai e ter uma ideia mais aproximada da realidade ao final do mês.

Bom dia!

Antes de mais, MUITO OBRIGADO pela integração, andava à procura disto desde que me iniciei no HA. O que na verdade não é assim há tanto tempo, coisa de mês e meio.

Como tal, não percebo grande coisa disto.

Questões:
1- Adicionei a entidade como valor de compensação da Injeção do Excedente e as contas batem certo. No entanto, devido à hora de atualização +/- às 12.30, o valor horário OMIE que está, por exemplo, neste momento a ser utilizado é o do sensor de dia 6 e não o de hoje, dia 7. Ou seja, quando deveria estar a usar o valor horário de 137€/MWh, está a 150€/ MWh.
Alguma forma de contornar isto?

2- Tenho tentado utilizar os valor futuros no ApexChart, mas lá está… percebo muito pouco disto. Já alguém conseguiu?

Novamente, muito obrigado!!
AL

EDIT: Utilizei o código para o Apex disponibilizado no exemplo em cima, mas percebi que os valores futuros que estão a ser apresentados são os de ontem. Ou seja, só após a atualização (por volta das 12.30) é que estará correto, mas só até ao final do dia. A partir das 0.00h volta a estar errado. Percebi bem a questão?!

Chart|395x259

https://www.omie.es/pt/market-results/monthly/daily-market/hourly-market?scope=monthly&year=2023&month=3&data=8

1 Curtiu

@Thy_Hunter os sensores que actualizam às 12:30 são relativos aos valores do dia seguinte conforme discutido nos últimos comentários deste tópico.

Quanto à questão 1 podes colocar uma captura do sensor expandindo a secção dos atributos, onde mostra os dados que estão a ser usados? Por aqui está tudo certo, os dados actualizam à meia noite e os sensores assumem o valor da respectiva hora.

Estás a usar que versão da integração?

Muito obrigado pela atenção!

De facto, o problema estará na data “fetched”.

Instalei a integração de forma manual, visto que o HACS desde o último update deixou de funcionar. A versão que tenho é 0.0.4. Também já vi que está diponível uma mais recente. Quando chegar a casa vou atualizar.

bem haja,
AL

1 Curtiu

A v0.0.4 não actualiza correctamente, terás mesmo de actualizar para a v0.0.5.

Está Perfeito!

Obrigado!

2 Curtiram

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


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