Skip to content
Skillv1.0.0

esios-telegram-report

Generar informe diario del mercado eléctrico español con gráficos Canvas/PNG y análisis automático vía Telegram — script esios-telegram.js.

by Ntizar(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from Ntizar/MasterMind (agent/skills/esios/esios-telegram-report/SKILL.md). Install upstream with npx skills add Ntizar/MasterMind --skill esios-telegram-report. Copyright stays with the author.

Informe Diario ESIOS — Telegram con Gráficos

Qué envía

  1. Texto resumen con análisis automático del día (precios, demanda, renovables, CO2, interconexiones)
  2. 5 gráficos PNG generados con Canvas:
    • 💰 Precio PVPC horario
    • ⚡ Demanda real horaria
    • ☀️ Solar FV vs Demanda (comparativo)
    • 🔌 Interconexiones netas (Francia + Portugal, con negativos)
    • 🌍 CO₂ asociado a generación

Estructura del script

scripts/esios-telegram.js — Node.js puro + canvas npm

Dependencias

  • canvas — generación de imágenes PNG
  • https — llamadas API (sin dependencias externas)

Variables de entorno

  • TELEGRAM_BOT_TOKEN — token del bot
  • TELEGRAM_CHAT_ID — chat de destino
  • ESIOS_API_TOKEN — token ESIOS/REE

Uso

node scripts/esios-telegram.js [YYYY-MM-DD]
# Sin fecha = ayer automáticamente

Gráficos

Todos usan drawLineChart() con:

  • Fondo oscuro #0f172a
  • Líneas con relleno semitransparente
  • Puntos en cada hora
  • Ejes con valores formateados
  • Leyenda inferior
  • Estilo ESIOS dashboard (azul #2563eb, naranja #f97316)

Opciones de drawLineChart

drawLineChart(title, datasets, unit, { stacked: false, showZero: true })
  • stacked: true — apilado (no se usa actualmente)
  • showZero: true — línea de cero punteada para datos negativos

Análisis automático

La función analyzeDay() calcula:

  • Si precios fueron altos (>150), moderados (>100) o bajos
  • Pico/valle de precios con hora
  • Diferencia pico-valle
  • Demanda media/máx/mín con horas
  • % renovable sobre total
  • Factor de emisión CO₂
  • Balance neto exportación/importación
  • Horas exportando de cada país

Cron job

job_id: 9e7570152a99
name: esios-daily-telegram
schedule: 0 9 * * *  (09:00 UTC = 11:00 Madrid verano / 10:00 invierno)
prompt: Ejecuta el script de resumen diario ESIOS: node /root/workspace/Mastermind/scripts/esios-telegram.js

IMPORTANTE: El cron debe apuntar a la Mastermind version (/root/workspace/Mastermind/scripts/esios-telegram.js), NO a la del dashboard. La versión del dashboard no carga .env ni /proc/1/environ, por lo que falla con "Faltan TELEGRAM_BOT_TOKEN o TELEGRAM_CHAT_ID".

⚠️ ESIOS API /values endpoint — 404 masivo (2026-06-16)

Estado: La API de ESIOS devuelve {"status": 404, "message": "Not Found"} para todos los endpoints /indicators/{id}/values, independientemente del indicador, fecha o método de llamada (date=, date_start/end=).

Síntomas:

  • GET /indicators/{id}/values?date=YYYY-MM-DD → 404
  • GET /indicators/{id}/values?date_start=...&date_end=... → 404
  • GET /indicators/{id}/values (sin fecha) → 404
  • GET /indicators/{id} (info del indicador) → OK
  • GET /indicators?filter=... → OK
  • Token funciona (403 sin token, 404 con token)

Causas probables:

  1. API de ESIOS migró a nueva versión (endpoint v2 requiere token diferente)
  2. Token caducado/restringido para endpoint de valores
  3. Datos de 2026 no disponibles aún

Fallback: Usar cache local en /root/workspace/esios-dashboard/data/esios-cache/ (archivos {id}_{fecha}.json). Verificar si hay datos válidos antes de intentar API.

No capturar como restricción persistente: Esto es un fallo temporal de la API, no una regla duradera.

⚠️ Script version mismatch — Solución definitiva (2026-06-17)

Hay DOS versiones del script:

  1. Dashboard version (/root/workspace/esios-dashboard/scripts/esios-telegram.js) — simplificada, NO carga .env, NO lee /proc/1/environ. NO USAR en cron.
  2. Mastermind version (/root/workspace/Mastermind/scripts/esios-telegram.js) — completa, con .env loading, /proc/1/environ fallback, TELEGRAM_CHAT_ID desde TELEGRAM_HOME_CHANNEL, gráficos PNG.

Siempre ejecutar la Mastermind version:

cd /root/workspace/Mastermind && node scripts/esios-telegram.js

NUNCA ejecutar la del dashboard en cron — siempre fallará con "Faltan TELEGRAM_BOT_TOKEN o TELEGRAM_CHAT_ID".

Pitfalls

  • NUNCA usar IDs de generación medida por tecnología (10035-10043) — devuelven null
  • Interconexiones son MWh/periodo — dividir entre 1000 para MW
  • Solar medida (10205) es MW directo — NO dividir
  • Valores negativos en interconexiones = importación, mostrar línea de cero
  • El script usa canvas npm — requiere instalación previa npm install canvas
  • Cache en /tmp/esios-telegram-cache/ — se limpia tras envío
  • Cron jobs no heredan variables del gateway — el script lee TELEGRAM_BOT_TOKEN de /proc/1/environ y TELEGRAM_CHAT_ID de /hermes-home/.env como fallback
  • Ruta del script: /root/workspace/Mastermind/scripts/esios-telegram.js — SIEMPRE esta (Mastermind version). La del dashboard NO funciona en cron.
  • ⚠️ Cron config drift: El prompt del cron job puede tener la ruta incorrecta (Mastermind en vez de Mastermind). Verificar siempre con cronjob action='list' que el prompt apunta a /root/workspace/Mastermind/scripts/esios-telegram.js. Si no, actualizar con cronjob action='update'.

⚠️ TELEGRAM_BOT_TOKEN ausente (2026-06-26)

Problema: El TELEGRAM_BOT_TOKEN no está configurado en ningún sitio del sistema:

  • No en /proc/1/environ (solo tiene GITHUB_TOKEN)
  • No en /hermes-home/.env (solo tiene GITHUB_TOKEN + TELEGRAM_HOME_CHANNEL)
  • No en /hermes-home/config.yaml (sección telegram sin tokens)
  • No en ningún .env del workspace
  • No en /root/workspace/esios-dashboard/.env (solo tiene ESIOS_API_TOKEN)

Consecuencia: El cron job esios-daily-telegram falla con "Faltan TELEGRAM_BOT_TOKEN o TELEGRAM_CHAT_ID".

Solución requerida: David necesita configurar un bot de Telegram:

  1. Crear bot con @BotFather en Telegram → obtener TOKEN
  2. Añadir TELEGRAM_BOT_TOKEN=<token> a /hermes-home/.env
  3. El TELEGRAM_CHAT_ID ya existe: 7288273982 (de TELEGRAM_HOME_CHANNEL)
  4. Opcional: migrar a NaN Cloud Env para persistencia

Formateo de unidades de potencia

  • NUNCA usar "k MW" (ej: "30k MW" es incorrecto).
  • Valores >= 1000 MW → mostrar en GW (ej: "30.0 GW").
  • Valores < 1000 MW → mostrar en MW (ej: "500 MW").
  • Función fmtMW() en el script implementa esta lógica: convierte automáticamente a GW cuando corresponde.
  • En textos y captions, la función devuelve la unidad incluida ("30.0 GW" o "500 MW"), por lo que NO añadir "MW" manualmente después.

Archivos del proyecto

  • scripts/esios-telegram.js — script principal
  • data/esios-reference.json — mapeo IDs útiles
  • data/esios-indicator-index.md — índice robusto con unidades
  • data/all-esios-indicators.json — todos los indicadores ESIOS

Referencias

  • references/esios-api-values-404-2026-06-16.md — Transcripción completa del fallo masivo de /values en ESIOS API

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/ntizar-mastermind-esios-telegram-report/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

ntizar-mastermind-esios-telegram-report.ocm.jsonjson
{
  "ocm": "1",
  "id": "ntizar-mastermind-esios-telegram-report",
  "kind": "skill",
  "name": "esios-telegram-report",
  "description": "Generar informe diario del mercado eléctrico español con gráficos Canvas/PNG y análisis automático vía Telegram — script esios-telegram.js.",
  "publisher": "Ntizar",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "esios",
      "telegram",
      "cron",
      "informe",
      "github"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Generar informe diario del mercado eléctrico español con gráficos Canvas/PNG y análisis automático vía Telegram — script esios-telegram.js."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/Ntizar/MasterMind",
      "path": "agent/skills/esios/esios-telegram-report/SKILL.md",
      "ref": "444260df247ff0cffec043a77107e47fa66d3e45",
      "url": "https://github.com/Ntizar/MasterMind/blob/444260df247ff0cffec043a77107e47fa66d3e45/agent/skills/esios/esios-telegram-report/SKILL.md",
      "key": "Ntizar/MasterMind/agent/skills/esios/esios-telegram-report/SKILL.md"
    }
  },
  "instructions": "# Informe Diario ESIOS — Telegram con Gráficos\n\n## Qué envía\n\n1. **Texto resumen** con análisis automático del día (precios, demanda, renovables, CO2, interconexiones)\n2. **5 gráficos PNG** generados con Canvas:\n   - 💰 Precio PVPC horario\n   - ⚡ Demanda real horaria\n   - ☀️ Solar FV vs Demanda (comparativo)\n   - 🔌 Interconexiones netas (Francia + Portugal, con negativos)\n   - 🌍 CO₂ asociado a generación\n\n## Estructura del script\n\n`scripts/esios-telegram.js` — Node.js puro + canvas npm\n\n### Dependencias\n- `canvas` — generación de imágenes PNG\n- `https` — llamadas API (sin dependencias externas)",
  "cost": {
    "context_tokens": 1691
  }
}

Fetch it by URL: GET /api/v1/registry/ntizar-mastermind-esios-telegram-report/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.