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.
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.
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.
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
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.
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?!
@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.
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.