
Research
/Security News
CanisterWorm: npm Publisher Compromise Deploys Backdoor Across 29+ Packages
The worm-enabled campaign hit @emilgroup and @teale.io, then used an ICP canister to deliver follow-on payloads.
e-data
Advanced tools
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.
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
El paquete consta de tres módulos diferenciados:
connectors), para definir los métodos de consulta a los diferentes proveedores: Datadis y REData.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.pyhelpers), 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
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)
FAQs
Python library for managing spanish energy data from various web providers
We found that e-data demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The worm-enabled campaign hit @emilgroup and @teale.io, then used an ICP canister to deliver follow-on payloads.

Research
/Security News
Attackers compromised Trivy GitHub Actions by force-updating tags to deliver malware, exposing CI/CD secrets across affected pipelines.

Security News
ENISA’s new package manager advisory outlines the dependency security practices companies will need to demonstrate as the EU’s Cyber Resilience Act begins enforcing software supply chain requirements.