yinyang17 / pvpc_energy

Importa en el panel de energía el consumo y coste de electricidad desde ufd.es y ree.es. Calcula las facturas desde cnmc.gob.es.
10 stars 2 forks source link

Error al importar datos #4

Closed driosalido closed 8 months ago

driosalido commented 8 months ago

Acabo de instalar el componente y en el log puedo ver que parece que la importación inicial de datos ha fallado

2024-01-26 09:47:20.361 INFO (MainThread) [custom_components.pvpc_energy.coordinator] last_stat=defaultdict(<class 'list'>, {'pvpc_energy:consumption': [{'start': 1706133600.0, 'end': 1706137200.0}]}), stats=defaultdict(<class 'list'>, {'pvpc_energy:cost': [{'start': 1706133600.0, 'end': 1706137200.0, 'sum': 35.545834839999955}], 'pvpc_energy:consumption': [{'start': 1706133600.0, 'end': 1706137200.0, 'sum': 242.6159999999999}]})
2024-01-26 09:47:20.361 INFO (MainThread) [custom_components.pvpc_energy.coordinator] start_date=2024-01-25, end_date=2024-01-24
2024-01-26 09:47:20.434 INFO (MainThread) [custom_components.pvpc_energy.coordinator] periods_start_date=2023-12-28, periods_end_date=2024-01-26, (periods_end_date - periods_start_date).days=29
2024-01-26 09:47:20.580 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/config/custom_components/pvpc_energy/coordinator.py", line 135, in import_energy_data
    await PvpcCoordinator.calculate_bills(total_consumptions, hass)
  File "/config/custom_components/pvpc_energy/coordinator.py", line 212, in calculate_bills
    current_billing_period = {'start_date': billing_periods[-1]['end_date'] + datetime.timedelta(days=1), 'end_date':datetime.date.today()}
                                            ~~~~~~~~~~~~~~~^^^^
IndexError: list index out of range

Alguna idea de que puede estar ocurriendo?

yinyang17 commented 8 months ago

Hola, diría que si, el problema parece ser que hay un límite de peticiones para obtener los consumos desde UFD lo que hace que al instalar no se descargue todo el histórico y tampoco los periodos de facturación. Acabo de publicar la versión v0.1.7, que mejora esto para ir descargando cada día lo que UFD permita y que controle el error que te ha dado en el caso de que aún no tenga los periodos de facturación. Con eso deberías ver los consumos que se haya podido descargar en el panel de energía pero no el importe de las facturas, para esto tengo que cambiar para que descargue los periodos antes de los consumos. Un saludo.

driosalido commented 8 months ago

Acabo de probar con v0.1.7 y aunque la descripción del error es distinta parece que pueden ir los tiros por el mismo problema que comentabas

2024-01-26 10:22:41.942 INFO (MainThread) [custom_components.pvpc_energy.coordinator] last_stat=defaultdict(<class 'list'>, {'pvpc_energy:consumption': [{'start': 1706133600.0, 'end': 1706137200.0}]}), stats=defaultdict(<class 'list'>, {'pvpc_energy:cost': [{'start': 1706133600.0, 'end': 1706137200.0, 'sum': 35.545834839999955}], 'pvpc_energy:consumption': [{'start': 1706133600.0, 'end': 1706137200.0, 'sum': 242.6159999999999}]})
2024-01-26 10:22:41.942 INFO (MainThread) [custom_components.pvpc_energy.coordinator] start_date=2024-01-25, end_date=2024-01-24
2024-01-26 10:22:42.022 INFO (MainThread) [custom_components.pvpc_energy.coordinator] periods_start_date=2023-12-28, periods_end_date=2024-01-26, (periods_end_date - periods_start_date).days=29
2024-01-26 10:22:42.164 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/config/custom_components/pvpc_energy/coordinator.py", line 135, in import_energy_data
    await PvpcCoordinator.calculate_bills(total_consumptions, hass)
  File "/config/custom_components/pvpc_energy/coordinator.py", line 212, in calculate_bills
    billing_periods += new_billing_periods
                                    ^^^^^^^
IndexError: list index out of range
yinyang17 commented 8 months ago

Si entras en el complemento suele refrescar antes, yo lo acabo de hacer para probar a instalar la nueva versión y ver que ya no de este error. A pesar del error si deberías tener las estadísticas PVPC: Consumo y PVPC: Coste para poder importar en el panel de energía y ver hasta que fecha se pudo descargar (en lo que acabo de probar solo un mes). Cada día que se va descargando el día nuevo y lo que pueda del histórico.

driosalido commented 8 months ago

No veo estadísticas por que no veo que se cree ninguna entidad ni device.

Poniendo el componente en Debug veo algo mas de entradas en el log

2024-01-26 10:35:31.999 DEBUG (MainThread) [custom_components.pvpc_energy.coordinator] START - import_energy_data()
2024-01-26 10:35:32.294 INFO (MainThread) [custom_components.pvpc_energy.coordinator] last_stat=defaultdict(<class 'list'>, {'pvpc_energy:consumption': [{'start': 1706133600.0, 'end': 1706137200.0}]}), stats=defaultdict(<class 'list'>, {'pvpc_energy:cost': [{'start': 1706133600.0, 'end': 1706137200.0, 'sum': 35.545834839999955}], 'pvpc_energy:consumption': [{'start': 1706133600.0, 'end': 1706137200.0, 'sum': 242.6159999999999}]})
2024-01-26 10:35:32.294 INFO (MainThread) [custom_components.pvpc_energy.coordinator] start_date=2024-01-25, end_date=2024-01-24
2024-01-26 10:35:32.295 DEBUG (MainThread) [custom_components.pvpc_energy.coordinator] START - load_energy_data(file_path=/config/custom_components/pvpc_energy/user_files/energy_data.csv)
2024-01-26 10:35:32.370 DEBUG (MainThread) [custom_components.pvpc_energy.coordinator] END - load_energy_data: len(consumptions): 672, len(prices): 23230
2024-01-26 10:35:32.371 DEBUG (MainThread) [custom_components.pvpc_energy.coordinator] START - calculate_bills(len(consumptions)=672)
2024-01-26 10:35:32.371 DEBUG (MainThread) [custom_components.pvpc_energy.coordinator] START - load_billing_periods(file_path=/config/custom_components/pvpc_energy/user_files/billing_periods.csv)
2024-01-26 10:35:32.371 DEBUG (MainThread) [custom_components.pvpc_energy.coordinator] END - load_billing_periods: len(billing_periods): 0
2024-01-26 10:35:32.371 INFO (MainThread) [custom_components.pvpc_energy.coordinator] periods_start_date=2023-12-28, periods_end_date=2024-01-26, (periods_end_date - periods_start_date).days=29
2024-01-26 10:35:32.372 DEBUG (MainThread) [custom_components.pvpc_energy.ufd] START - UFD.billingPeriods(start_date=2023-12-28, end_date=2024-01-26)
2024-01-26 10:35:32.583 DEBUG (MainThread) [custom_components.pvpc_energy.ufd] END - UFD.billingPeriods: len(result)=0
2024-01-26 10:35:32.583 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/config/custom_components/pvpc_energy/coordinator.py", line 135, in import_energy_data
    await PvpcCoordinator.calculate_bills(total_consumptions, hass)
  File "/config/custom_components/pvpc_energy/coordinator.py", line 212, in calculate_bills
    billing_periods += new_billing_periods

He mirado el fichero que se descarga y hay datos aunque las primeras entradas tienen un campo vacío mientras que las ultimas tienen todos los campos. Podría ser eso?

➜  user_files git:(main) ✗ head -10 energy_data.csv
timestamp,consumption,price
1622498400,,0.11633
1622502000,,0.11595
1622505600,,0.11489
1622509200,,0.11496
1622512800,,0.11484
1622516400,,0.11603
1622520000,,0.11629
1622523600,,0.1157
1622527200,,0.15289
➜  user_files git:(main) ✗ tail -10 energy_data.csv
1706101200,1.262,0.11365
1706104800,0.412,0.11877
1706108400,0.599,0.12186
1706112000,0.548,0.14911
1706115600,0.681,0.20698
1706119200,0.579,0.27524
1706122800,0.526,0.27764
1706126400,0.49,0.21769
1706130000,0.404,0.15011
1706133600,0.286,0.13519
driosalido commented 8 months ago

Ah, tienes razón, aunque no veo entidad ni device si que puedo ver los datos en el dashboard de energia

image

yinyang17 commented 8 months ago

Ok, eso tiene más sentido. El fichero está correcto, el último valor es el coste hora del kWh, que se descarga de REE y ahí no hay problema y se ha descargado desde el 01/06/2021 (timestamp 1622498400). El valor que ves vacío es el consumo que ahí solo tendrás hasta que UFD haya dado error y que cada día intentará descargar hacia atrás lo que pueda, con lo que deberías ir viendo que se completan valores más antiguos.

En cuanto al error al intentar obtener los periodos de facturación no consigo reproducirlo y no veo el modo en que pueda dar error ahí. ¿En user_files no tienes un fichero billing_periods.csv verdad?

driosalido commented 8 months ago

No, solo tengo un fichero energy_data.csv

yinyang17 commented 8 months ago

Publicada la versión v0.1.8 que descarga los periodos antes que los consumos. Con esto deberías poder ver las facturas de las que tengas datos de consumo. Cada día irá descargando más datos pasados y verás facturas anteriores.