Programmatic access to consumer energy consumption from https://www.i-de.es/ (Spanish energy distributor)
Useful links
Programmatic access to consumer energy consumption from https://www.i-de.es/ (Spanish energy distributor)
License: GNU General Public License v3.0
Programmatic access to consumer energy consumption from https://www.i-de.es/ (Spanish energy distributor)
Useful links
Desde 2023-09-10 las medidas parece que tienen desfase de 2 horas. No he podido ejecutarlo en cli porque da un error sys:1: RuntimeWarning: coroutine 'main' was never awaited, pero en homeassistant ha pasado de
lastest state found at 2023-09-08 22:00:00+00:00 (0.434)
a
lastest state found at 2023-09-09 20:00:00+00:00 (0.425)
¿Puede ser que hayan cambiado el formato de hora en la API y no se esté parseando correctamente?
Suponemos un consumo entre las 03:00 y 04:00 de 0,1 kwh.
¿Qué valor de tiempo debería acompañar a ese dato? datatime.datetime(2022, 1, 1 , 3, 0, 0)
o datatime.datetime(2022, 1, 1, 4, 0, 0)
Actualmente se usa el valor del inicio de periodo pero tal vez no sea el correcto.
Levantar una excepción adecuada para los fallos de autenticación.
Los datos devueltos por el API son los siguientes:
{'success': 'false', 'message': 'El usuario o la contraseña que has introducido son incorrectos. Por favor, inténtalo de nuevo.'}
Se puede realizar en dos pasos
api.raw_request("https://www.i-de.es/consumidores/rest/consumoNew/obtenerLimitesFechasPotencia/")
# {'fecMin': '01-04-202100:00:00', 'fecMax': '30-04-202223:00:00'}
api.raw_request("https://www.i-de.es/consumidores/rest/consumoNew/obtenerPotenciasMaximasRangoV2/{fecMin}/{fecMax}")
Faltaría dar forma a la respuesta obtenida que es similar a esto:
{'potCont': [{'fecDesenganche': '20214',
'fecEnganche': '201611',
'periodos': [{'potCont': 5750}]},
{'fecDesenganche': '20215',
'fecEnganche': '20214',
'periodos': [{'potCont': 5750}]},
{'fecDesenganche': '99991',
'fecEnganche': '20215',
'periodos': [{'potCont': 5750},
{'nomPeriodo': 'Periodo Punta', 'potCont': 5750},
{'nomPeriodo': 'Periodo Valle', 'potCont': 5750}]}],
'potMaxMens': [[{'name': '24/04/2021 13:00', 'x': 3, 'y': 3012.0}],
[{'name': '24/05/2021 21:15', 'x': 4, 'y': 1388.0}],
[{'name': '25/06/2021 15:45', 'x': 5, 'y': 4032.0},
{'name': '13/06/2021 02:30', 'x': 5, 'y': 440.0}],
[{'name': '22/07/2021 14:15', 'x': 6, 'y': 2304.0},
{'name': '11/07/2021 14:30', 'x': 6, 'y': 2720.0}],
[{'name': '05/08/2021 00:00', 'x': 7, 'y': 2476.0},
{'name': '15/08/2021 14:30', 'x': 7, 'y': 2596.0}],
[{'name': '09/09/2021 21:15', 'x': 8, 'y': 2852.0},
{'name': '26/09/2021 13:30', 'x': 8, 'y': 2572.0}],
[{'name': '07/10/2021 20:15', 'x': 9, 'y': 2412.0},
{'name': '30/10/2021 14:30', 'x': 9, 'y': 3588.0}],
[{'name': '09/11/2021 20:45', 'x': 10, 'y': 2748.0},
{'name': '01/11/2021 13:45', 'x': 10, 'y': 3936.0}],
[{'name': '15/12/2021 20:30', 'x': 11, 'y': 4092.0},
{'name': '19/12/2021 19:30', 'x': 11, 'y': 4236.0}],
[{'name': '10/01/2022 08:15', 'x': 0, 'y': 4480.0},
{'name': '15/01/2022 11:00', 'x': 0, 'y': 4456.0}],
[{'name': '16/02/2022 21:15', 'x': 1, 'y': 5204.0},
{'name': '05/02/2022 18:00', 'x': 1, 'y': 5580.0}],
[{'name': '02/03/2022 18:30', 'x': 2, 'y': 4148.0},
{'name': '06/03/2022 21:15', 'x': 2, 'y': 3840.0}],
[{'name': '19/04/2022 19:45', 'x': 3, 'y': 3956.0},
{'name': '16/04/2022 21:00', 'x': 3, 'y': 3580.0}]],
'resultado': 'correcto'}
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 = "[email protected]"
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.
Hola buenas, primero que nada agradecer tu trabajo. Leyendo el readme, veo que indicas que hay un sensor en tiempo real de consumo, y viendo el archivo sensors.yaml, veo que también está, pero al añadir la integración no me aparece. Es un problema conocido o es algo mío particular?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.