Skip to main content

Python library for managing spanish energy data from various web providers

Reason this release was yanked:

async get requests not working in datadis connector

Project description

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:

  • Conectores (módulo connectors), para definir los métodos de consulta a los diferentes proveedores: Datadis y REData.
  • Procesadores (módulo processors), para procesar datos de consumo, maxímetro, o coste (tarificación). Ahora mismo consta de tres procesadores: billing, consumption y maximeter, además de algunas utilidades ubicadas en utils. Los procesadores deben heredar de la clase Processor definida en base.py
  • Ayudantes (módulo helpers), para ayudar en el uso y gestión de los anteriores, presentando de momento un único ayudante llamado EdataHelper que te permite recopilar X días de datos (por defecto 365) y automáticamente procesarlos. Los datos son almacenados en la variable data, mientras que los atributos autocalculados son almacenados en la variable attributes. Por lo general, primero utilizan los conectores y luego procesan los datos, gestionando varias tareas de recuperación (principalmente para Datadis).

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:

  • No es necesario solicitar API pública en el registro (se utilizará la API privada habilitada por defecto)
  • El username suele ser el NIF del titular
  • Copie el CUPS de la web de Datadis, algunas comercializadoras adhieren caracteres adicionales en el CUPS mostrado en su factura.
  • La herramienta acepta el uso de NIF autorizado para consultar el suministro de otro titular.
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)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

e_data-1.3.2.tar.gz (61.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

e_data-1.3.2-py3-none-any.whl (52.1 kB view details)

Uploaded Python 3

File details

Details for the file e_data-1.3.2.tar.gz.

File metadata

  • Download URL: e_data-1.3.2.tar.gz
  • Upload date:
  • Size: 61.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for e_data-1.3.2.tar.gz
Algorithm Hash digest
SHA256 32dcda86022ef55f3ca871008c209490370bb7acc7d2609db489c49234156cab
MD5 17e729bfaef18e1fe4afcfc8c248d1bd
BLAKE2b-256 aa5f954c490f402783dcfd38c7627e66d54e8160bb48751ab25267d2cb9d2931

See more details on using hashes here.

File details

Details for the file e_data-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: e_data-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 52.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for e_data-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 530783e019c31f1dec67703d0e8d8cf6254054be25bd56c9178517a3247a0cbc
MD5 0c9358209acf9fe028c4d29edd45cf91
BLAKE2b-256 f75daeb2dfa403f9a14a794094da05647b8bd2616196a336b588d2f0eb6bc015

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page