Skip to main content

enerBit DSO (Distribution System Operator) API client

Project description

███████╗██████╗     ██████╗ ███████╗ ██████╗ 
██╔════╝██╔══██╗    ██╔══██╗██╔════╝██╔═══██╗
█████╗  ██████╔╝    ██║  ██║███████╗██║   ██║
██╔══╝  ██╔══██╗    ██║  ██║╚════██║██║   ██║
███████╗██████╔╝    ██████╔╝███████║╚██████╔╝
╚══════╝╚═════╝     ╚═════╝ ╚══════╝ ╚═════╝ 
                                             

Introducción

Un programa de línea de comandos para preparar y empujar reportes de lectura desde el api de enerBit al MDM.

Se distribuye como un paquete de Python ejecutable.

Como empezar

Instalación

  1. Crear un ambiente virtual de Python para aislar la instalación del paquete de otros paquetes.

    python3 -m venv venv
    source ./venv/Scripts/activate
    
  2. Instalar paquete usando pip (asegurarse de tener activo el ambiente virtual).

    python -m pip install enerbitdso
    
  3. Comprobar la instalación con el comando de ayuda

    enerbitdso --help
    

Uso

El comando es enerbitdso.

Se tiene una ayuda usando la opción --help. Esta explica los sub-comandos y las opciones disponibles de cada uno.

Esta herramienta usa las variables de entorno para configurar su ejecución.

Sub-comandos

enerbitdso usages fetch

Consulta los consumos usando el API para DSO de enerBit para un conjunto de fronteras.

Variables de entorno requeridas

Para ejecutar este sub-comando se requieren tres variables de entorno configuradas con sus respectivos valores.

  • ENERBIT_API_BASE_URL: La URL base del API del DSO, su valor debe ser https://dso.enerbit.me/
  • ENERBIT_API_USERNAME: El nombre de usuario para autenticarse contra el API, ejemplo: pedro.perez@example.com
  • ENERBIT_API_PASSWORD: La contraseña del usuario para autenticarse, ejemplo: mIClaVeSUperseCRETa

Para configurar estas variables de entorno se pueden ejecutar los siguientes comandos en la terminal de PowerShell:

$env:ENERBIT_API_BASE_URL='https://dso.enerbit.me/'
$env:ENERBIT_API_USERNAME='pedro.perez@example.com'
$env:ENERBIT_API_PASSWORD='mIClaVeSUperseCRETa'

Especificación de fronteras a consultar

Las fronteras a consultar se pueden especificar como una lista al final del comando separadas por espacios:

> enerbitdso usages fetch Frt00000 Frt00001

También se puede usar un archivo de texto con un código de frontera por línea usando la opción --frt-file y pasando la ubicación de dicho archivo.

> enerbitdso usages fetch --frt-file "D://Mi CGM/misfronteras.txt"

Donde el archivo D://Mi CGM/misfronteras.txt tiene un contenido así:

Frt00000
Frt00001

Especificación de intervalo de tiempo para la consulta

El intervalo de tiempo se define a través de los parámetros de tipo fecha --since y --until (desde y hasta, respectivamente). Por defecto, se consultan los 24 periodos del día de ayer.

Para consultar los periodos entre 2023-04-01 a las 09:00 y el 2023-04-05 a las 17:00:

> enerbitdso usages fetch Frt00000 Frt00001 --since 20230401 --until 20230405

Salida tipo CSV

Para que el formato de salida sea CSV (valores separados por coma) se puede usar el parámetro --out-format con el valor csv (por defecto se usa jsonl que es una línea de JSON por cada registro).

> enerbitdso usages fetch Frt00000 Frt00001 --since 20230401 --until 20230405 --out-format csv

Salida a archivo local

Tanto en sistemas Linux, macOS y Windows se puede usar el operador de redirección > para enviar a un archivo la salida de un comando. En este caso el comando seria así:

> enerbitdso usages fetch --frt-file "D://Mi CGM/misfronteras.txt" --since 20230401 --until 20230405 --out-format csv > "D://Mi CGM/mi_archivo_de_salida.csv" 

Opción de ayuda

También tiene opción --help que muestra la ayuda particular de este sub-comando.

> enerbitdso usages fetch --help

 Usage: enerbitdso usages fetch [OPTIONS] [FRTS]...

╭─ Arguments ────────────────────────────────────────────────────────────────────────────────────────────────────╮
   frts      [FRTS]...  List of frt codes separated by ' ' [default: None]                                      
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────╮
 *  --api-base-url        TEXT               [env var: ENERBIT_API_BASE_URL] [default: None] [required]         
 *  --api-username        TEXT               [env var: ENERBIT_API_USERNAME] [default: None] [required]         
 *  --api-password        TEXT               [env var: ENERBIT_API_PASSWORD] [default: None] [required]         
    --since               [%Y-%m-%d|%Y%m%d]  [default: (yesterday)]                                             
    --until               [%Y-%m-%d|%Y%m%d]  [default: (today)]                                                 
    --timezone            TEXT               [default: America/Bogota]                                          
    --out-format          [csv|jsonl]        Output file format [default: jsonl]                                
    --frt-file            PATH               Path file with one frt code per line [default: None]               
    --help                                   Show this message and exit.                                        
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Librería DSO

Para poder hacer uso de la librería DSO se debe hacer lo siguiente

Inicializar el constructor

Para ello se debe importar el constructor de la siguiente forma:

from enerbitdso.enerbit import DSOConnector

La inicialización se debe hacer asi:

ebconnector = enerbit.DSOConnector(
    api_base_url="https://dso.enerbit.me/",
    api_username="usuario_del_DSO",
    api_password="contraseña_del_DSO",
)

Al tener el objeto ya se pueden realizar consultas de la siguiente forma:

usage_records = ebconnector.fetch_schedule_usage_records_large_interval(
    frt_code=frt_code, since=since, until=until
)

Tambien se puede hacer una consulta de perfiles de la siguiente forma:

schedule_records = ebconnector.fetch_schedule_measurements_records_large_interval(
    frt_code=frt_code, since=since, until=until
)

Project details


Download files

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

Source Distribution

enerbitdso-0.1.13.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

enerbitdso-0.1.13-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file enerbitdso-0.1.13.tar.gz.

File metadata

  • Download URL: enerbitdso-0.1.13.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for enerbitdso-0.1.13.tar.gz
Algorithm Hash digest
SHA256 3f4cd13cd14c3a22e7e3972241ac722877147a5fb4623e0ebe826876ce1fa93d
MD5 4735fe232291498c706fe540c074ca72
BLAKE2b-256 1e345391571f18e36d673d8c2b52db725707b76a2d95df487f50294f57b190f1

See more details on using hashes here.

File details

Details for the file enerbitdso-0.1.13-py3-none-any.whl.

File metadata

  • Download URL: enerbitdso-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for enerbitdso-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 0566bae4ba231c382d39ac7ae07098543d1c1184e95d05e3dffc11ae1f59c0a2
MD5 b5b51f2eaac62e31d12d182b234e0736
BLAKE2b-256 7a02e0c51da93deafed2fe64b60e73dea1fb50ca923a4828e48a62c36b6a2c04

See more details on using hashes here.

Supported by

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