azogue / ha-pvpc-custom

HomeAssistant custom integration for Spain electricity hourly pricing (PVPC)
MIT License
21 stars 2 forks source link

PVPC vs Indexada #17

Open MiguelAngelLV opened 7 months ago

MiguelAngelLV commented 7 months ago

Buenas.

En unos días llega «la nueva PVPC» dónde un 25% de la tarifa son a mercados futuros, por lo tanto, a diferir de precios indexados.

¿Está planificado añadir un modo «indexada» para aquellos que tengan estas tarifas en vez de la «oficial» de PVPC?

azogue commented 7 months ago

Hola @MiguelAngelLV,

La verdad es que estoy poco puesto con los cambios que vienen (estoy con precio fijo desde hace > 1 año).

Tanto para el acceso con token o el público, habría que ver si esios publica nuevos 'indicadores', y a priori sería fácil adaptarlo.

Si conoces más detalles y puedes dejarlos por aquí 🙏, podemos estudiar los cambios a realizar que sean necesarios 👌

MiguelAngelLV commented 7 months ago

Pues estamos más o menos igual... Yo me cambié a Octopus hace casi un año y dejé de usar la indexada, pero claro, tengo amigos que aún la usan y «me dan la turra» sobre cómo configurarlo.

Les mandé un correo a los de ESIOS por si iban a incluir un indicador nuevo y también estuve mirando hace un tiempo como poder «simular» el cálculo usando los indicadores ya existentes, aunque no llegué a muy buen puerto.

A ver si contestan desde ESIOS algo.

MiguelAngelLV commented 6 months ago

Me contestaron diciéndome que tengo contactar con el soporte directo en https://www.portalclientes.ree.es/#/home dónde me obligan a estar registrado, y para registrarte tienes que ser autónomo, empresa o asociación, de lo cual no cumplo ninguna....

albertdb commented 5 months ago

En indicador en cuestión es este: https://www.esios.ree.es/es/analisis/2108

En principio, indexada = PVPC - indicador 2108 (suponiendo que ambos sean €/MWh, si no, dividir entre 1000)

MiguelAngelLV commented 5 months ago

Parece bastante aceptable sí. Y además no hace falta el token.

@azogue quizás se podría añadir este indicador también a aiopvpc y en el componente una opción para elegir entre PVPC o Indexada, y en caso de seleccionar esta última aplicar la resta.

albertdb commented 5 months ago

@MiguelAngelLV o, si no supone mucho cambio, ambos, estaría bien poder comparar.

MiguelAngelLV commented 5 months ago

@MiguelAngelLV o, si no supone mucho cambio, ambos, estaría bien poder comparar.

Supongo que sería incluso más fácil poner ambos que poner el selector.

albertdb commented 5 months ago

@MiguelAngelLV o, si no supone mucho cambio, ambos, estaría bien poder comparar.

Supongo que sería incluso más fácil poner ambos que poner el selector.

Y luego ya quien quiera que deshabilite el que no quiera.

olivayfuente commented 5 months ago

Hola. Estoy intenta

En indicador en cuestión es este: https://www.esios.ree.es/es/analisis/2108

En principio, indexada = PVPC - (indicador 2108)/1000

Hola. No encuentro el indicador como lo describes. Estoy empezando a hacer scrap y no veo el indicador de indexada en ningun sitio. Una manita por favor que saquemos el sensor

albertdb commented 5 months ago

En indicador en cuestión es este: https://www.esios.ree.es/es/analisis/2108 En principio, indexada = PVPC - (indicador 2108)/1000

Hola. No encuentro el indicador como lo describes. Estoy empezando a hacer scrap y no veo el indicador de indexada en ningun sitio. Una manita por favor que saquemos el sensor

No hay un indicador de indexada, es coger el dato de PVPC y restarle el dato del indicador 2108 (dividido entre 1000 porque son €/MWh y el de PVPC se devuelve en €/kWh). No lo he llevado a la práctica, pero la forma más simple parece ser esta.

Edito: creo que el endpoint de PVPC también devuelve el precio en €/MWh por algún ejemplo que he visto.

olivayfuente commented 5 months ago

Perdona pero no se mucho de esto. No se que es el indicador 2108, no lo encuentro en la web que pones. Los precios que aparecen son mucho mas caros, la indexada está ahora mismo a 1.8 y la media del día a 1.6 en céntimos

image

albertdb commented 5 months ago

Perdona pero no se mucho de esto. No se que es el indicador 2108, no lo encuentro en la web que pones. Los precios que aparecen son mucho mas caros, la indexada está ahora mismo a 1.8 y la media del día a 1.6 en céntimos

image

Pues es precisamente el que da el dato del pantallazo. Es el 2108 porque la URL lo identifica así.

olivayfuente commented 5 months ago

al pvpc le quitamos esos 22,42 por ejemplo y nos da la media del dia de la indexada. Ya lo pillo. Está dificil hacerle scrap a esta web, a alguna de PVPC si es muy facil. Vamos a a darle una vuelta. Muchas gracias por la ayuda.

albertdb commented 5 months ago

al pvpc le quitamos esos 22,42 por ejemplo y nos da la media del dia de la indexada. Ya lo pillo. Está dificil hacerle scrap a esta web, a alguna de PVPC si es muy facil. Vamos a a darle una vuelta. Muchas gracias por la ayuda.

Se puede hacer por hora. Mira ver si lo encuentras en esta API que es pública y nos dices por favor https://www.ree.es/es/apidatos

olivayfuente commented 5 months ago

Hola Alberto, creo que nos leemos en telegram. No se manejar esa api. Tengo muy pocos conocimientos, solo se extraer los datos si apareciesen en una web. p.e.

image

olivayfuente commented 5 months ago

Buenas. Ya tengo los sensores, pero no me cuadra el resultado {{ states("sensor.pvpc") |float - states("sensor.ajuste_mercado_a_plazo") | float }}
esa plantilla da 0.02579 y el bot de telegram da 1.5

albertdb commented 5 months ago

Buenas. Ya tengo los sensores, pero no me cuadra el resultado {{ states("sensor.pvpc") |float - states("sensor.ajuste_mercado_a_plazo") | float }} esa plantilla da 0.02579 y el bot de telegram da 1.5

Cómo lo has hecho?

Lo único que se me ocurre restarle son los servicios de ajuste, pero me extraña que eso no se pague en la indexada.

olivayfuente commented 5 months ago

te paso los sensores para ha, el de pvpc ya lo tendrás. Te pongo el de precio Ajuste de mercado a plazo: Y el de la resta de pvpc el ajuste de mercado:

Te pongo una # en el token de eios que yo en ese sensor no lo uso, pero si es verdad que en uno del pvpc inyectado que tengo si. Vamos que si no te funciona ese sensor te saques un toquen en eios y lo pones. Comenta que tal

sensores ha.txt

albertdb commented 5 months ago

Parece que funciona, gracias!

tmallafre commented 4 months ago

Otra cosa que estaría bien sería poder configurar el margen que aplican algunas comercializadoras sobre el PVPC (por ejemplo 0,005 €/kWh)

albertdb commented 4 months ago

Otra cosa que estaría bien sería poder configurar el margen que aplican algunas comercializadoras sobre el PVPC (por ejemplo 0,005 €/kWh)

Para eso antes habría que restar el margen de comercialización que incluye el PVPC y ya probablemente valdría la pena calcular el precio indexado desde cero. Aquí hablamos de un apaño para tener un precio semejante al de una indexada y el margen de error de momento todavía es superior a ese margen que comentas, así que no tiene mucho sentido sumar nada adicional.

En otras palabras, la idea puede estar bien pero falta mucho para estar esto en condiciones de considerarlo.

MiguelAngelLV commented 4 months ago

He enviado dos Pull Request (una para la biblioteca y otra para el componente) que añade tanto la indexada haciendo el cálculo (no es muy elegante, pero no se me ocurre otra cosa) y también el ajuste por separado.

Componente: #18

olivayfuente commented 4 months ago

No se como usarlo, me aclaras un poco como ponerlo en ha?

MiguelAngelLV commented 4 months ago

No se como usarlo, me aclaras un poco como ponerlo en ha?

Lo mejor es esperar a que se integre correctamente, @azogue está haciendo un par de cambios para dejarlo «fino fino».

olivayfuente commented 4 months ago

Ah, ok ok. Gracias.

albertdb commented 4 months ago

No se como usarlo, me aclaras un poco como ponerlo en ha?

Lo mejor es esperar a que se integre correctamente, @azogue está haciendo un par de cambios para dejarlo «fino fino».

Ya "puestos", habría que restar el margen de comercialización, que es ridículo, pero si el dato está a mano, pues eso. Si hay que hacer petición expresa, ni os molestéis, son 0.1 céntimos o así.

MiguelAngelLV commented 4 months ago

Cada comercializadora puede hacer cálculos distintos para obtener el margen, y dado que realmente la fórmula del PVPC - Ajuste no va a ser «exacta», no creo aporte mucho.

tmallafre commented 4 months ago

Creo que se refiere al margen que ganan las comercialzadoras de referencia que comercializan el PVPC.

jose2403 commented 4 months ago

Hola. Gracias por el trabajo. Creo que hay algo que no funciona en el gráfico de la tarjeta cuando se configura como sensor, la indexada. El problema viene de que los atributos de ese sensor (los precios por hora) no están ordenados por hora sino de una manera, parece que aleatoria. Los atributos de los otros sensores sí están ordenados por horas. EF95EAB1-EE14-4174-A54F-20223561E84D

8939C67B-D0E6-4B4E-BBC7-435747D6B862

azogue commented 4 months ago

Hola @jose2403, gracias por reportar 🍻

Sí, en efecto, van desordenados 😓, pero es fácil de corregir, trataré de publicar nuevas versiones de aiopvpc y de este componente a lo largo del día 💪

azogue commented 4 months ago

trataré de publicar nuevas versiones de aiopvpc y de este componente a lo largo del día 💪

Ya están listas 🚀🚀

Prueba ahora @jose2403 👍

new-release
jose2403 commented 4 months ago

Impresionante. Muchas gracias

olivayfuente commented 4 months ago

trataré de publicar nuevas versiones de aiopvpc y de este componente a lo largo del día 💪

Ya están listas 🚀🚀

Prueba ahora @jose2403 👍

new-release

algo tengo mal. la key de la api es copia pega.

image

tmallafre commented 4 months ago

Me pasa lo mismo. Tengo el token y el PVPC me funciona sin problema.

image

sargue commented 4 months ago

Yo estoy igual, la "indexed" no aparece. En los logs de HA veo estos dos errores:

Diari de registre: homeassistant.components.sensor
Font: helpers/entity_platform.py:719
integració: Sensor (documentació, problemes)
Produït per primer cop: 17:48:37 (3 ocurrències)
Últim registre: 18:02:02

Platform pvpc_hourly_pricing does not generate unique IDs. ID 2.0TD_INDEXED already exists - ignoring sensor.indexed_price
Diari de registre: homeassistant.components.sensor
Font: helpers/entity_platform.py:576
integració: Sensor (documentació, problemes)
Produït per primer cop: 17:48:37 (3 ocurrències)
Últim registre: 18:02:02

Error adding entity None for domain sensor with platform pvpc_hourly_pricing
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 576, in _async_add_entities
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 720, in _async_add_entity
    entity.add_to_platform_abort()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1318, in add_to_platform_abort
    self._call_on_remove_callbacks()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1311, in _call_on_remove_callbacks
    self._on_remove.pop()()
  File "/config/custom_components/pvpc_hourly_pricing/sensor.py", line 222, in <lambda>
    lambda: coordinator.api.update_active_sensors(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiopvpc/pvpc_data.py", line 215, in update_active_sensors
    assert data_id in ALL_SENSORS
AssertionError
jose2403 commented 4 months ago

A mí me funciona bien. A veces hay que recargar la integración y reiniciar. Probad con esto.

tmallafre commented 4 months ago

A mí me funciona bien. A veces hay que recargar la integración y reiniciar. Probad con esto.

Buenísimo :-)

olivayfuente commented 4 months ago

El mio es una chapucilla pa apañarnos, se aproxima pero no es preciso porque hay calculos que no hacemos, solo le quitamos el ajuste de mercado.

sargue commented 4 months ago

A mí me funciona bien. A veces hay que recargar la integración y reiniciar. Probad con esto.

He reiniciado la integración y HA varias veces... nada, sale "no disponible". Y me siguen saliendo los errores en el log. Antes tenía la integración oficial, no sé si puede ser la causa del problema. Quizás voy a quitar la integración, reiniciar para limpiar, y a ver si lo vuelvo a instalar todo.

MiguelAngelLV commented 4 months ago

Creo que el problema viene de aquellos que tenéis la integración oficial e instaláis la nueva sin quitar la antigua.

Probad eliminar la configuración, reiniciar y añadir de nuevo la configuración.

sargue commented 4 months ago

Pues no. Acabo de hacer eso, he tenido que configurar la integración de nuevo, añadir el token, etc. He activado el sensor y sale no disponible. En los logs:

Diari de registre: homeassistant.components.sensor
Font: helpers/entity_platform.py:576
integració: Sensor (documentació, problemes)
Produït per primer cop: 19:46:26 (1 ocurrències)
Últim registre: 19:46:26

Error adding entity sensor.indexed_price for domain sensor with platform pvpc_hourly_pricing
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 576, in _async_add_entities
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 841, in _async_add_entity
    entity.add_to_platform_abort()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1318, in add_to_platform_abort
    self._call_on_remove_callbacks()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1311, in _call_on_remove_callbacks
    self._on_remove.pop()()
  File "/config/custom_components/pvpc_hourly_pricing/sensor.py", line 222, in <lambda>
    lambda: coordinator.api.update_active_sensors(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiopvpc/pvpc_data.py", line 215, in update_active_sensors
    assert data_id in ALL_SENSORS
AssertionError
Aquest error té origen en una integració personalitzada.

Diari de registre: homeassistant
Font: custom_components/pvpc_hourly_pricing/sensor.py:254
integració: Spain electricity hourly pricing (PVPC) (documentació, problemes)
Produït per primer cop: 19:47:12 (2 ocurrències)
Últim registre: 19:47:12

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1494, in _async_process_registry_update_or_remove
    self.async_registry_entry_updated()
  File "/config/custom_components/pvpc_hourly_pricing/sensor.py", line 254, in async_registry_entry_updated
    self.coordinator.api.update_active_sensors(self.entity_description.key, True)
  File "/usr/local/lib/python3.12/site-packages/aiopvpc/pvpc_data.py", line 215, in update_active_sensors
    assert data_id in ALL_SENSORS
AssertionError

Uno de los errores es ligeramente diferente...

MiguelAngelLV commented 4 months ago

@azogue parece que es al comprobar que el sensor que quiere actualizar es uno de los «reales» y quizás se esté colando el ID de la Indexada que no está entre ellos.

sargue commented 3 months ago

Sigo con este problema. He desinstalado la integración de nuevo, y revisado incluso en "statistics" a ver si había aún rastro.

Yendo ya por SSH he encontrado un rastro de ese sensor en .storage pero no me atrevo a tocar nada ahí:

[core-ssh .storage]$ grep -i indexed *
core.entity_registry:      {"config_entry_id":null,"entity_id":"sensor.indexed_price","id":"03fb8d00a1f46dd12d0868731f572df4",
"orphaned_timestamp":1712313937.433374,"platform":"pvpc_hourly_pricing","unique_id":"2.0TD_INDEXED"},

¿Es posible que se haya "roto" mi instalación? ¿Sugerencias?

sargue commented 3 months ago

Me despista bastante que haya gente a la que le funcione, pero sigo investigando. El stacktrace del error parece apuntar más a la libreria aiopvp.py que al código de la integración propiamente dicho.

Básicamente, por lo que entiendo del error no encuentra la referencia al sensor en la lista interna.

Reproduzco el error de nuevo:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 580, in _async_add_entities
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 857, in _async_add_entity
    entity.add_to_platform_abort()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1324, in add_to_platform_abort
    self._call_on_remove_callbacks()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1317, in _call_on_remove_callbacks
    self._on_remove.pop()()
  File "/config/custom_components/pvpc_hourly_pricing/sensor.py", line 222, in <lambda>
    lambda: coordinator.api.update_active_sensors(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiopvpc/pvpc_data.py", line 215, in update_active_sensors
    assert data_id in ALL_SENSORS
AssertionError

Concretamente esta línea: assert data_id in ALL_SENSORS

Si miramos en la libreria donde se define ALL_SENSORS veo esto:

# unique ids for each series
KEY_PVPC = "PVPC"
KEY_INJECTION = "INJECTION"
KEY_MAG = "MAG"  # regargo GAS
KEY_OMIE = "OMIE"  # precio mayorista
KEY_ADJUSTMENT = "ADJUSTMENT"  # ajuste mercado
# composed sensors
KEY_INDEXED = "INDEXED"  # precio indexada (:= PVPC - ADJUSTMENT)

ALL_SENSORS = (KEY_PVPC, KEY_INJECTION, KEY_MAG, KEY_OMIE, KEY_ADJUSTMENT)

¿No faltaria añadir KEY_INDEXED a esa lista? Parece que se le trata diferente, supongo que porque se calcula más que pillarlo del API, aún así.... @azogue ? 🙏

MiguelAngelLV commented 3 months ago

@sargue el problema creo es que NO debería consultar ese key...

olivayfuente commented 3 months ago

A mi después de la ultima actualización de HA ya me funciona.

image

sargue commented 3 months ago

No es mi caso, mismas versiones.

tmallafre commented 2 months ago

Ops... https://www.esios.ree.es/es/analisis/2108 image

sargue commented 2 months ago

Si, desde anoche que no tengo datos y pensaba que habían cambiado algo en el API de ESIOS. Veo que simplemente falla su lado. Pues no queda otra que esperar.