uvejota / python-edata

A python tool to retrieve and process spanish energy consumption data
GNU General Public License v3.0
9 stars 4 forks source link

Downloads Downloads Downloads

python-edata

Este paquete proporciona herramientas para la descarga de tus datos de consumo eléctrico (desde Datadis.es) y su posterior procesado. La motivación principal es que conocer el consumo puede ayudarnos a reducirlo, e incluso a elegir una tarifa que mejor se adapte a nuestras necesidades. A día de hoy sus capacidades de facturación (€) son limitadas, soporta PVPC (según disponibilidad de datos de REData) y tarificación fija por tramos. Es el corazón de la integración homeassistant-edata.

Esta herramienta no mantiene ningún tipo de vinculación con los proveedores de datos anteriormente mencionados, simplemente consulta la información disponible y facilita su posterior análisis.

Instalación

Puedes instalar la última versión estable mediante:

pip install e-data

Si quieres probar la versión dev o contribuir a su desarrollo, clona este repositorio e instala manualmente las dependencias:

pip install -r requirements.txt

Estructura

El paquete consta de tres módulos diferenciados:

Estos módulos corresponden a la siguiente estructura del paquete:

edata/
    · __init__.py
    · connectors/
        · __init__.py
        · datadis.py
        · redata.py
    · processors/
        · __init__.py
        · base.py
        · billing.py
        · consumption.py
        · maximeter.py
        · utils.py
    · helpers.py

Ejemplo de uso

Partimos de que tenemos credenciales en Datadis.es. Algunas aclaraciones:

from datetime import datetime
import json

# importamos definiciones de datos que nos interesen
from edata.definitions import PricingRules
# importamos el ayudante
from edata.helpers import EdataHelper
# importamos el procesador de utilidades
from edata.processors import utils

# Preparar reglas de tarificación (si se quiere)
PRICING_RULES_PVPC = PricingRules(
    p1_kw_year_eur=30.67266,
    p2_kw_year_eur=1.4243591,
    meter_month_eur=0.81,
    market_kw_year_eur=3.113,
    electricity_tax=1.0511300560,
    iva_tax=1.05,
    # podemos rellenar los siguientes campos si quisiéramos precio fijo (y no pvpc)
    p1_kwh_eur=None,
    p2_kwh_eur=None,
    p3_kwh_eur=None,
)

# Instanciar el helper
# 'authorized_nif' permite indicar el NIF de la persona que nos autoriza a consultar su CUPS.
# 'data' permite "cargar" al helper datos anteriores (resultado edata.data de una ejecución anterior), para evitar volver a consultar los mismos.
edata = EdataHelper(
            "datadis_user",
            "datadis_password",
            "cups",
            datadis_authorized_nif=None,
            pricing_rules=PRICING_RULES_PVPC, # si se le pasa None, no aplica tarificación
            data=None, # aquí podríamos cargar datos anteriores
        )

# Solicitar actualización de todo el histórico (se almacena en edata.data)
edata.update(date_from=datetime(1970, 1, 1), date_to=datetime.today())

# volcamos todo lo obtenido a un fichero
with open("backup.json", "w") as file:
    json.dump(utils.serialize_dict(edata.data), file) # se puede utilizar deserialize_dict para la posterior lectura del backup

# Imprimir atributos
print(edata.attributes)