Skip to main content

EcoFlow Reader

Librería en Python para interactuar con la API pública de EcoFlow. Permite obtener información sobre las cuotas y el estado de los equipos vinculados a tu cuenta, implementando de forma nativa el flujo de autenticación seguro requerido por la plataforma mediante firmas criptográficas (HMAC-SHA256).

A partir de la versión 0.1.5, la librería ha sido rediseñada con estándares de nivel empresarial:

  • Modelos Estructurados: Respuestas tipadas utilizando Pydantic para autocompletado de código y extracción de telemetría avanzada (voltajes, frecuencias, estado de interruptores y capacidad real).
  • Alta Fiabilidad: Probada exhaustivamente con una cobertura de código superior al 97%.
  • Tipado Estricto: Código 100% validado estáticamente en origen mediante mypy.
  • Compatibilidad Total: Matriz de pruebas automatizada para entornos con Python 3.10, 3.11, 3.12 y 3.13.

Instalación

Puedes instalar la librería directamente desde PyPI utilizando pip o uv:

uv pip install ecoflow-reader

Configuración

Para utilizar esta librería necesitas tus credenciales de acceso (Access Key y Secret Key) obtenidas en el portal de desarrolladores de EcoFlow, además del número de serie (SN) de tu equipo.

La librería lee estas credenciales desde variables de entorno. En la raíz de tu proyecto, copia la plantilla proporcionada:

cp env.example .env

Edita el archivo .env con tus credenciales reales:

ECOFLOW_API_KEY="tu_access_key_obtenida_en_ecoflow"
ECOFLOW_API_SECRET="tu_secret_key_obtenida_en_ecoflow"
ECOFLOW_DEVICE_SN="el_numero_de_serie_de_tu_equipo"

Importante: Asegúrate de que el archivo .env esté incluido en tu .gitignore para evitar exponer tus credenciales.

Uso

1. Desde la Terminal (CLI)

Al instalar el paquete, se expone un binario global en tu sistema. Si tienes el archivo .env configurado en el directorio actual, simplemente ejecuta:

ecoflow-cli

Si la configuración es correcta, recibirás en consola un resumen limpio y formateado mostrando la capacidad real de la batería (mAh), voltajes de la red eléctrica, estado de encendido de los puertos (AC/DC) y el consumo desglosado. En caso de error, el sistema de logging te indicará el problema.

2. Como Librería en tu Código Python

Puedes importar la clase EcoFlowClient para integrarla en tus propias aplicaciones, contenedores o APIs. Gracias a Pydantic, navegar por la telemetría del equipo es sumamente intuitivo:

import os
from dotenv import load_dotenv
from ecoflow_reader import EcoFlowClient

# 1. Cargar las variables de entorno
load_dotenv()
API_KEY = os.getenv('ECOFLOW_API_KEY')
API_SECRET = os.getenv('ECOFLOW_API_SECRET')
DEVICE_SN = os.getenv('ECOFLOW_DEVICE_SN')

# 2. Inicializar el cliente
client = EcoFlowClient(api_key=API_KEY, api_secret=API_SECRET)

# 3. Consultar la API (Retorna un objeto DeviceQuota estructurado)
quota = client.get_device_quota(sn=DEVICE_SN)

if quota:
    print("=== BATERÍA ===")
    print(f"Nivel: {quota.battery.level}% ({quota.battery.remain_cap_mah} mAh)")
    print(f"Temperatura: {quota.battery.temp_c}°C")
    
    print("\n=== ENTRADA (CARGA) ===")
    print(f"Total: {quota.power_in.total_watts} W")
    if quota.power_in.ac_in_voltage > 0:
        print(f"Red Eléctrica: {quota.power_in.ac_in_voltage / 1000} V @ {quota.power_in.ac_in_freq} Hz")
    
    print("\n=== SALIDA (CONSUMO) ===")
    print(f"Total: {quota.power_out.total_watts} W")
    print(f"Enchufes AC Encendidos: {bool(quota.power_out.ac_enabled)}")
    print(f"Consumo AC: {quota.power_out.ac_watts} W")
    
    # Si quieres ver todo el objeto Pydantic en formato JSON estructurado:
    # print(quota.model_dump_json(indent=2))
else:
    print("No se pudo obtener la información del equipo.")

Acceso al JSON Original (Avanzado)

Si necesitas acceder a claves específicas del JSON de EcoFlow que no están mapeadas en el modelo principal, puedes solicitar la respuesta en formato diccionario nativo (crudo) pasando el parámetro as_model=False:

raw_data = client.get_device_quota(sn=DEVICE_SN, as_model=False)

Licencia y Autor

Desarrollado por Jesús Palencia (sinfallas)

Release files for ecoflow-reader 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ecoflow-reader 0.1.5
File Size Uploaded
ecoflow_reader-0.1.5.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ecoflow-reader 0.1.5
File Interpreter ABI Platform
ecoflow_reader-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 33.5 kB

Release files / ecoflow_reader-0.1.5.tar.gz

Download URL ecoflow_reader-0.1.5.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f005226b0af93883bf2b46c69c6cd3e66b71041cb84c8bdc69cc02f18727fab2
BLAKE2b-256 checksum
How to use checksums
9a7b6b26242e61d5229036b1d19aa5df362ab59e949ce1bf0b93ffdca2f8c84e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / ecoflow_reader-0.1.5-py3-none-any.whl

Download URL ecoflow_reader-0.1.5-py3-none-any.whl
Size 14.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1ee63b89b2eca93ea11b529c9fbf096f8b601a8b9c5f8bbdd8f51bfdcfe5dd5d
BLAKE2b-256 checksum
How to use checksums
97d7c9302e9e862f17570f04b225228573e67cec82c50d23f1c4b98ace12a8cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page