ldotlopez / ideenergy

Programmatic access to consumer energy consumption from https://www.i-de.es/ (Spanish energy distributor)
GNU General Public License v3.0
12 stars 5 forks source link

Datos históricos: generación de energía #3

Closed ldotlopez closed 2 years ago

ldotlopez commented 2 years ago

Para poder integrar los datos de generación de energía necesitamos información de usuarios que tengan este tipo de instalación en su casa.

He creado unas pequeñas instrucciones para obtener estos registros.

Creación de un entorno controlado de python

Desde la linea de comandos ejecutar los siguientes comandos:

(python3.9 -m venv /tmp/ide-test || echo "Version incorrecta de python"; false ) && /tmp/ide-test/bin/pip install --quiet ideenergy==1.0.0a1 ipython && /tmp/ide-test/bin/ipython

Si el comando anterior muestra "Version incorrecta de python" prueba a cambiar python3.9 por python3.8 o python3.7. Si ninguna opción funciona deberías buscar la manera de poder instalar python3.9 y probar de nuevo

En caso de éxito nos aparecerá un mensaje similar a esto:

$ /tmp/ide-test/bin/ipython
Python 3.9.7 (default, Sep 10 2021, 14:59:43) 
Type 'copyright', 'credits' or 'license' for more information
IPython 8.3.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 

Ejecución de un pequeño script en ipython

Sustituyendo USERNAME y PASSWORD por los valores adecuados pegar y ejecutar el código siguiente en el interprete del paso anterior:

USERNAME = "user@example.com"
PASSWORD = "******"

from datetime import date, timedelta

import ideenergy
from ideenergy.client import _GENERATION_PERIOD_ENDPOINT

from pprint import pprint

end = date.today()
start = end - timedelta(days=7)
url = _GENERATION_PERIOD_ENDPOINT.format(start=start.strftime("%d-%m-%Y"), end=end.strftime("%d-%m-%Y"))

api = ideenergy.Client(await ideenergy.get_session(), USERNAME, PASSWORD)
await api.login()
resp = await api.raw_request('GET', url)

pprint({
    'url': url,
    'status': resp.status,
    'content': await resp.content.read(),
    'content_disposition': resp.content_disposition,
    'content_type': resp.content_type
    })

exit

Información obtenida

La salida de ese comando es lo que necesitamos.

ldotlopez commented 2 years ago

Implementado en commit https://github.com/ldotlopez/ideenergy/commit/b422c608038da41614f8293feebf3269172cad6e