uvejota / homeassistant-edata

Home Assistant integration for spanish energy data providers (e.g., datadis)
GNU General Public License v3.0
264 stars 22 forks source link

Bug 2024.07.5 y .4: async_first_refresh #266

Open zeehio opened 2 months ago

zeehio commented 2 months ago

Los datos de consumo no se me actualizan desde el 22 de agosto. He probado a actualizar a la beta a ver si así con el coordinador nuevo se arreglaba.

Diari de registre: homeassistant.core Font: core.py:552 Produït per primer cop: 3 de setembre del 2024, a les 21:55:43 (1 ocurrències) Últim registre: 3 de setembre del 2024, a les 21:55:43

Something is blocking Home Assistant from wrapping up the start up phase. We're going to continue anyway. Please report the following info at https://github.com/home-assistant/core/issues: bluetooth, homeassistant, cover, select, ffmpeg, onboarding, matter.number, [...] The system is waiting for tasks: {<Task pending name='Task-488' coro=<async_setup_entry..async_first_refresh() running at /config/custom_components/edata/init.py:101> wait_for=<Future pending cb=[_chain_future.._call_check_cancel() at /usr/local/lib/python3.12/asyncio/futures.py:387, <1 more>, Task.task_wakeup()]> cb=[set.remove()]>}

Creo que el setup de e-data toma demasiado tiempo y hace operaciones de i/o al llamar al coordinador en async_first_refresh()

No sé qué quiere decir home assistant con "We are going to continue anyway". Temo que no haya el refresco inicial de los datos porque home assistant se canse de esperar el first refresh de e-data.

¿Hay forma de evitar todas las operaciones de i/o en el arranque de la integración? Quizás usando una tarea que no bloquee el inicio del componente? https://developers.home-assistant.io/docs/asyncio_working_with_async/#starting-independent-task-from-async

He visto este problema en la versión 2024.07.4 y la beta 2024.07.5 de la integración, con home assistant actualizado a 2024.08.3

uvejota commented 2 months ago

Creo que simplemente indica que HA va a proceder sin esperar a la finalización del hilo, pero no detiene la actividad.

En cualquier caso investigaré qué se puede hacer. En teoría la integración debería esperar a que HA esté arrancada para llevar a cabo la primera sincronización.

salsa956 commented 2 months ago

2024.07.6

A mí no se me actualizaban los datos desde el 15.08.2024, por eso decidí borrar edata e instalarlo de nuevo. Ahora al darme de alta en datadis con mis credenciales me aparece el cups y al seleccionar enviar me dice que ya está configurado y vuelve a parecer el ya está configurado y no se instala en Homeassistent.

zeehio commented 2 months ago

Por hacer un update:

Para intentar obtener datos de nuevo (porque estaba clavado en el 22 de agosto) activé el modo depuración. Fue un poco raro activarlo desde la GUI porque cuando fui a configuración/integraciones/e-data y di a "configurar" en mi cups, vi el botón de depuración. Lo marqué y le di a guardar. Eso hizo que se abrieran las pantallas siguientes de configuración (precios y fórmulas), que no modifiqué y me límité a dar a siguiente y guardar. Lo más raro es que al dar a guardar el botón quedó como marcado y no fue hasta pasado bastante rato (mas de medio minuto yo creo) que me aparecio la ventana de que se habian efectuado los cambios.

Viendo los logs de depuración, vi que al hacer la petición de agosto y septiembre decía que tomaba la respuesta de la caché porque era una petición que ya estaba hecha anteriormente. Entré en la carpeta de la caché y me encontré dos JSON, uno con los datos de agosto que me faltaban.

Deduje que el problema estaba no con datadis ni con python-edata, sino con como se ingestan y procesan los datos en home assistant.

Sin mucho mas tiempo para poder dedicarle a esto, decidí usar el botón de reestablecer que añadiste en 2024.07.5. Al cabo de unos minutos me ha aparecido la información que me faltaba.

Muchas gracias.

@salsa956 si has eliminado un dispositivo de home assistant el dispositivo queda eliminado permanentemente y no se puede volver a añadir sin que lo borres a mano del JSON /homeassistant/.storage/core.device_registry en la sección deleted_devices. Cuidado al editar el JSON a mano no la lies...