azogue / aiopvpc

Simple aio library to download Spanish electricity hourly prices (PVPC) from esios.ree.es
MIT License
42 stars 10 forks source link

No funciona la integración con HA desde el 2 de noviembre #27

Closed r-jordan closed 3 years ago

r-jordan commented 3 years ago

Hola, la integración con Homeassistant ha dejado de funcionar (estado unavailable) cuando he realizado una actualización de versión del core y se ha reiniciado HA. He vuelto a configurar la integración por si era algún problema con mi instalación y sigue sin funcionar. Incluso he vuelto a la versión anterior de HA y tampoco se soluciona. ¿Puede ser algún problema con el reciente cambio de hora del día 1 de noviembre? Se agradece una rápida respuesta. Saludos!

lobolobo commented 3 years ago

Me pasa exactamente lo mismo. ¿Puede alguien arrojar algo de luz al respecto? Muchas gracias por anticipado.

jlopez77 commented 3 years ago

I have the same situation here but I think the tittle of the issue is misleading.

It looks that some of the data received in the JSON is not being correctly parsed and thus throwing an error. Here is what I've found so far.

image

image

lobolobo commented 3 years ago

Por añadir más información. En mi caso:

Home Assistant CORE: core-2021.10.7 Home Assistant SUPERVISOR: supervisor-2021.10.8 Home Assistant OS: Home Assistant OS 6.6

r-jordan commented 3 years ago

Gracias por el mensaje de error @jlopez77 !

Por cierto, si crees que el título de la incidencia no es informativo lo puedes cambiar sin problema.

Creo que he encontrado lo que ocurre pero no sé muy bien porqué ni como arreglarlo. Por si acaso era un problema en la api de REE he probado a hacer llamadas a la URL donde se descarga el JSON y funciona correctamente.

URL

https://api.esios.ree.es/archives/70/download_json?locale=es&date=2021-11-03

Datos devueltos:

{"PVPC":[{"Dia":"03/11/2021","Hora":"00-01","PCB":"187,22","CYM":"187,22", ...

Pero si intentas acceder a un día para el que no hay datos, por ejemplo mañana día 4, pasa lo siguiente:

URL

https://api.esios.ree.es/archives/70/download_json?locale=es&date=2021-11-04

Datos devueltos:

{"message":"No values for specified archive"}

Y ese es justo el JSON que intenta parsear y no encuentra la clave PVPC. Hay que investigar el código para saber como se genera la fecha para construir la URL.

sermayoral commented 3 years ago

Gracias por el mensaje de error @jlopez77 !

Por cierto, si crees que el título de la incidencia no es informativo lo puedes cambiar sin problema.

Creo que he encontrado lo que ocurre pero no sé muy bien porqué ni como arreglarlo. Por si acaso era un problema en la api de REE he probado a hacer llamadas a la URL donde se descarga el JSON y funciona correctamente.

URL

https://api.esios.ree.es/archives/70/download_json?locale=es&date=2021-11-03

Datos devueltos:

{"PVPC":[{"Dia":"03/11/2021","Hora":"00-01","PCB":"187,22","CYM":"187,22", ...

Pero si intentas acceder a un día para el que no hay datos, por ejemplo mañana día 4, pasa lo siguiente:

URL

https://api.esios.ree.es/archives/70/download_json?locale=es&date=2021-11-04

Datos devueltos:

{"message":"No values for specified archive"}

Y ese es justo el JSON que intenta parsear y no encuentra la clave PVPC. Hay que investigar el código para saber como se genera la fecha para construir la URL.

Tiene toda la pinta a que, desde el 1 de Noviembre por el cambio de hora, está enviando una petición de un día posterior

azogue commented 3 years ago

Parece que han cambiado algo en el server y ahora la combinación de aiohttp==3.7.4.post0 y la config del servidor de esios chocan, y le está devolviendo un 403 (Forbidden) error, como si hiciese falta el token 🕵️‍♂️🤷

Se resuelve de 2 maneras, ambas tontísimas 😅:

Como la 2ª no es incompatible con la 1ª, y como HA Core sigue usando aiohttp==3.7.4.post0, voy a hacer un quickfix con ese cambio, para publicar versión, y de ahí a subir la versión en HA Core a 2.2.1

azogue commented 3 years ago

@r-jordan, he cambiado el título para eliminar lo del reinicio y marcar fallo desde ayer (yo no he reiniciado y ayer tenía precios, hasta las 11PM 😅)

jlopez77 commented 3 years ago

Parece que han cambiado algo en el server y ahora la combinación de aiohttp==3.7.4.post0 y la config del servidor de esios chocan, y le está devolviendo un 403 (Forbidden) error, como si hiciese falta el token 🕵️‍♂️🤷

Se resuelve de 2 maneras, ambas tontísimas 😅:

  • Con aiohttp==3.8.0 ya no ocurre
  • Añadiendo un 'User-Agent' a los headers de la petición

Como la 2ª no es incompatible con la 1ª, y como HA Core sigue usando aiohttp==3.7.4.post0, voy a hacer un quickfix con ese cambio, para publicar versión, y de ahí a subir la versión en HA Core a 2.2.1

That's fast!

azogue commented 3 years ago

Re-abro la issue, que el travis CI ya no funciona 😔, y me toca publicar a manita...

Cerraré la issue cuando todo esté mergeado en HA Core

That's fast!

Uff, pero es sólo el 1º paso. Intentaré hacer los siguientes a lo largo del día de hoy, a ratitos 🙈

jlopez77 commented 3 years ago

quickfix, if you can't wait for the official quickfix, edit aiopvpc.py and

Line 30, add: ` ~~ _REQUEST_HEADERS = {~~ ~~ "User-Agent": "aioPVPC Python library",~~ ~~ "Accept": "application/json",~~ } `

Line 173: resp = await self._session.get(url) -> modify to: resp = await self._session.get(url, headers=_REQUEST_HEADERS)

See the oficial quickfix.

azogue commented 3 years ago

quickfix, if you can't wait

Aún más sencillo, para todos aquellos que usen HA OS y no puedan/sepan/quieran cambiar el código, es añadir la integración como custom_components.

pvpc_hourly_pricing.zip

Descomprimir el ZIP adjunto en la carpeta de config/custom_components (debería crear una subcarpeta pvpc_hourly_pricing con el manifest.json modificado, apuntando a la nueva versión 2.2.1 ), y reiniciar HA Core

Captura de pantalla 2021-11-03 a las 10 15 21
r-jordan commented 3 years ago

@r-jordan, he cambiado el título para eliminar lo del reinicio y marcar fallo desde ayer (yo no he reiniciado y ayer tenía precios, hasta las 11PM sweat_smile)

Perfecto! :+1:

luism2p commented 3 years ago

El parche funciona perfecto... Muchas gracias por el trabajo. Saludos

somar05 commented 3 years ago

@azogue primero gracias por la solución provisional. Quería preguntar... ¿Una vez se complete el merge en HA core, puede haber algún conflicto al haberlo agregado como custom component? Lo digo porque, primero, no tengo ni idea, y segundo, como ya funciona es fácil olvidarse del custom component. Gracias de antemano

azogue commented 3 years ago

@azogue primero gracias por la solución provisional. Quería preguntar... ¿Una vez se complete el merge en HA core, puede haber algún conflicto al haberlo agregado como custom component? Lo digo porque, primero, no tengo ni idea, y segundo, como ya funciona es fácil olvidarse del custom component. Gracias de antemano

Cuando vayas a actualizar HA Core a una nueva versión que contenga la corrección, borra la carpeta config/custom_components/pvpc_hourly_pricing justo antes; o en cualquier momento, y reiniciando HA Core a continuación.

La lógica de carga es sencilla: si existe en custom_components, se carga de ahí, si no, se busca internamente.

r-jordan commented 3 years ago

quickfix, if you can't wait

Aún más sencillo, para todos aquellos que usen HA OS y no puedan/sepan/quieran cambiar el código, es añadir la integración como custom_components.

pvpc_hourly_pricing.zip

Descomprimir el ZIP adjunto en la carpeta de config/custom_components (debería crear una subcarpeta pvpc_hourly_pricing con el manifest.json modificado, apuntando a la nueva versión 2.2.1 ), y reiniciar HA Core

Funciona perfecto! :tada:

Además veo que has añadido el control del error por si vuelve a pasar que se pueda ver en el log: :+1:

                elif resp.status == 403:  # pragma: no cover
                    self._logger.error(
                        "Forbidden error with '%s' -> Headers:  %s", url, resp.headers
                    )

Muchas gracias por la rapidez @azogue !

ldsmovil commented 3 years ago

perfecto ! somos muchos los que te lo agradecemos

deltazerorsan commented 3 years ago

Muchisimas gracias por la integración y por el parche, funciona como custom sin problemas.

Bravo!

cyberdie commented 3 years ago

Probado en docker y funcionando. Gracias!!

gloaysa commented 3 years ago

Pregunta: si volviera a pasar el sensor seguiría mostrando su estado como unavailable?

Muchas automatizaciones en casa dependen del precio actual de la luz y no había caído en comprobar el estado del sensor, gracias a esto ahora ya lo tengo en cuenta e incluso me mando un mensaje para estar al tanto.

Mil gracias por esta integración!!!

lobolobo commented 3 years ago

quickfix, if you can't wait

Aún más sencillo, para todos aquellos que usen HA OS y no puedan/sepan/quieran cambiar el código, es añadir la integración como custom_components.

pvpc_hourly_pricing.zip

Descomprimir el ZIP adjunto en la carpeta de config/custom_components (debería crear una subcarpeta pvpc_hourly_pricing con el manifest.json modificado, apuntando a la nueva versión 2.2.1 ), y reiniciar HA Core

Captura de pantalla 2021-11-03 a las 10 15 21

Muchas gracias por el fichero. Funciona perfectamente como custom component.

serpini1 commented 3 years ago

Lo acabo de poner, pero no me actualiza tras reiniciar, en el log sale esto:

[homeassistant.loader] We found a custom integration pvpc_hourly_pricing which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

Edit: He quitado la integración, reiniciado y vuelto a añadir la integración y ya parece que actualiza los datos, recupera los precios, pero en el estado no pone el precio actual

azogue commented 3 years ago

en el log sale esto

Hola @serpini1, ese warning es genérico para todos los custom_components, no es más que una descarga de responsabilidad por parte de HA Core sobre las integraciones no oficiales, puedes ignorarlo.

Edit: He quitado la integración, reiniciado y vuelto a añadir la integración y ya parece que actualiza los datos, recupera los precios, pero en el estado no pone el precio actual

Eso es bastante extraño, ¿a qué te refieres con que recupera los precios pero no muestra el estado?, ¿puedes pasar captura del sensor, logs, y demás?

en 'Developer Tools->States', filtrando la entidad sensor.pvpc, debería salir algo parecido a esto:

pvpc-sensor-ha

:

azogue commented 3 years ago

Por cierto, el parche en HA Core ya está hecho, se incluirá en la próxima versión 2021.11.1 🚀

Cuando se publique cierro esta issue 👍

serpini1 commented 3 years ago

en el log sale esto

Hola @serpini1, ese warning es genérico para todos los custom_components, no es más que una descarga de responsabilidad por parte de HA Core sobre las integraciones no oficiales, puedes ignorarlo.

Edit: He quitado la integración, reiniciado y vuelto a añadir la integración y ya parece que actualiza los datos, recupera los precios, pero en el estado no pone el precio actual

Eso es bastante extraño, ¿a qué te refieres con que recupera los precios pero no muestra el estado?, ¿puedes pasar captura del sensor, logs, y demás?

en 'Developer Tools->States', filtrando la entidad sensor.pvpc, debería salir algo parecido a esto:

pvpc-sensor-ha

:

Me sale así, como ves, sí que actualiza los datos de los atributos, pero no el del estado sensor-PVPC

foglietti commented 3 years ago

quickfix, if you can't wait

Aún más sencillo, para todos aquellos que usen HA OS y no puedan/sepan/quieran cambiar el código, es añadir la integración como custom_components.

pvpc_hourly_pricing.zip

Descomprimir el ZIP adjunto en la carpeta de config/custom_components (debería crear una subcarpeta pvpc_hourly_pricing con el manifest.json modificado, apuntando a la nueva versión 2.2.1 ), y reiniciar HA Core

Captura de pantalla 2021-11-03 a las 10 15 21

Muchas gracias! Volvemos a tener integración.

azogue commented 3 years ago

Me sale así, como ves, sí que actualiza los datos de los atributos, pero no el del estado [![sensor-PVPC]

@serpini1 ¿Estás usando una versión < 2021.11.0 o 2021.10.0?

Si es así, el ZIP no va a funcionar, sorry (contiene el código de la integración conforme a HA Core 2021.11)

azogue commented 3 years ago

@gloaysa, sobre tu pregunta:

Pregunta: si volviera a pasar el sensor seguiría mostrando su estado como unavailable? Muchas automatizaciones en casa dependen del precio actual de la luz y no había caído en comprobar el estado del sensor, gracias a esto ahora ya lo tengo en cuenta e incluso me mando un mensaje para estar al tanto.

, el estado del sensor pasa a 'unavailable' en el momento que ya no tiene el precio actual. Y, aunque no muestre excesivos errores en el log (para no atusar), internamente sigue tratando de capturar los precios (2 veces / hora, creo) y, si eventualmente se resuelve el problema, los precios vuelven a aparecer (en ese contexto, un 'reload' de la integración sólo va a forzar un nuevo intento de coger los precios)

Por ejemplo, si la gente de ESIOS hubiese hecho un revert al cambio que hicieron en el servidor *, los sensores habrían vuelto a funcionar sin ninguna intervención.

Sobre lo que comentas de las automatizaciones, si quieres estar totalmente cubierto, puedes hacer una más que vigile el sensor, y si el pvpc pasa a unavailable, o vuelve a tener valor, te notifica y apaga/enciende las automatizaciones que toque 👍

* Parece que lo que hicieron en el servidor fue empezar a filtrar las peticiones anónimas (sin User-Agent en los headers), devolviendo errores de 'prohibido'. Una desafortunada combinación de código en nuestro lado hizo el resto, y dejó ilegible una información pública como esta: https://api.esios.ree.es/archives/70/download_json 😖

azogue commented 3 years ago

Cerraré la issue cuando todo esté mergeado en HA Core

Ya está incluido el fix en la nueva versión de HA Core 2021.11.1 🌈

(release-notes)

deltazerorsan commented 3 years ago

Funcionando sin custom en la 11.1

Gracias.