Giter VIP home page Giter VIP logo

ideenergy's Introduction

ideenergy's People

Contributors

ldotlopez avatar lopezl avatar luca-angemi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ideenergy's Issues

Consumo instantáneo

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?

¿Cambio en formato de hora en API?

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?

Manejar error de autenticación

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.'}

Datos históricos: potencia demanda y contratada

Se puede realizar en dos pasos

  1. Solicitar intervalo disponible para datos de potencia
api.raw_request("https://www.i-de.es/consumidores/rest/consumoNew/obtenerLimitesFechasPotencia/")
# {'fecMin': '01-04-202100:00:00', 'fecMax': '30-04-202223:00:00'}
  1. Con esos datos ya se puede realizar la consulta:
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'}

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

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.