Sistema autónomo de monitoreo energético y optimización de producción para uso personal
Chocolate Factory es un sistema personal de monitoreo y optimización diseñado para funcionar completamente on-premise en tu infraestructura local, con acceso remoto seguro a través de Tailscale. No es una aplicación comercial - es una herramienta personal para experimentar con datos reales de energía española y aplicar machine learning de forma privada y controlada.
- Tus datos, tu control: Todo funciona en tu hardware local
- Sin dependencias cloud: Infraestructura completamente autónoma
- Acceso privado: Dashboard accesible solo desde tu Tailnet personal
- Aprendizaje experimental: Perfecto para proyectos académicos y desarrollo personal
- Tailscale Integration: Acceso remoto cifrado desde cualquier dispositivo en tu tailnet
- SSL Automático: Certificados gestionados automáticamente por Tailscale
- Dashboard Personal:
https://chocolate-factory.tu-tailnet.ts.net/dashboard
- Zero-Config Security: Sin configuración manual de firewalls o puertos
- REE (Red Eléctrica): Precios reales de electricidad española PVPC
- AEMET: Datos meteorológicos oficiales (Linares, Andalucía)
- OpenWeatherMap: Datos complementarios en tiempo real
- ✅ SIAR Histórico: 88,935 registros de 25+ años (2000-2025) - COMPLETADO
- Direct ML Training: sklearn + pickle storage (sin dependencias MLflow)
- 2 Modelos Productivos: Energy Optimization (R²=0.89) + Production Classifier (90% accuracy)
- Feature Engineering: 13 características derivadas de datos reales REE+Weather
- Predicciones Automáticas: Recomendaciones cada 30 minutos
- 🎯 Datos Históricos: 25+ años de datos SIAR para entrenamiento robusto
- Sistema Self-Healing: Recuperación automática de gaps de datos
- Scheduler Inteligente: 10+ jobs automatizados con APScheduler
- Monitoreo Continuo: Health checks y alertas automáticas
- Backup de Datos: Persistencia garantizada con Docker bind mounts
🔐 Tailscale Sidecar (Alpine) 🧠 FastAPI Brain
├── Nginx + SSL automático ├── Dashboard integrado
├── Solo /dashboard expuesto ├── APIs REST completas
└── 52MB ultra-ligero └── ML predictions + scheduling
💾 InfluxDB Storage
├── Time series database
├── REE + Weather data (current)
├── SIAR Historical (88,935 records)
└── Automated ETL pipelines
- Tailscale Zero-Trust: Solo accesible desde tu tailnet privada
- Endpoint Isolation: APIs administrativas bloqueadas externamente
- SSL End-to-End: Cifrado automático con certificados válidos
- Local-First: Datos nunca salen de tu infraestructura
- Docker & Docker Compose instalados
- Cuenta de Tailscale activa
- Claves API (REE, AEMET, OpenWeatherMap) - gratis para uso personal
# Clonar el repositorio personal
git clone https://github.com/tu-usuario/chocolate-factory.git
cd chocolate-factory
# Configurar variables de entorno personales
cp .env.example .env
cp .env.tailscale.example .env.tailscale
# Editar con tus claves personales
nano .env .env.tailscale
# REE (España) - Datos públicos
# ✅ Sin registro requerido
REE_API_TOKEN=<your_token_here>
# AEMET - Registro gratuito
# 🌐 https://opendata.aemet.es/centrodedescargas/obtencionAPIKey
AEMET_API_KEY=<your_jwt_token>
# OpenWeatherMap - Plan gratuito
# 🌐 https://openweathermap.org/api
OPENWEATHERMAP_API_KEY=<your_api_key>
# Tailscale Auth Key
# 🌐 https://login.tailscale.com/admin/settings/keys
TAILSCALE_AUTHKEY=tskey-auth-<your-key-example>
# Construir y lanzar infraestructura completa
docker compose up -d
# Verificar que todo está corriendo
docker compose ps
# Ver logs del sistema
docker compose logs -f
# Local (desarrollo) - Dashboard visual con heatmap semanal
http://localhost:8000/dashboard
# Datos JSON para desarrollo
http://localhost:8000/dashboard/complete
# Remoto seguro (desde cualquier lugar)
https://chocolate-factory.tu-tailnet.ts.net/dashboard
Dashboard completo con datos reales de REE, AEMET y predicciones ML para Linares, Andalucía
Características destacadas:
- 📅 Heatmap Semanal: Calendario visual 7 días con zonas de precios color-coded
- ⚡ Precio Energía: Tiempo real con tendencia y predicción
- 🌡️ Condiciones Climáticas: AEMET + OpenWeatherMap (cobertura 24/7)
- 🏭 Estado Fábrica: Operativo con métricas en tiempo real
- 🤖 ML Predictions: Optimización energética y recomendaciones producción
- 🎯 Interactive Tooltips: Hover sobre cada día para detalles completos
Localización específica, fuentes de datos y estado completo del sistema
Fuentes de datos integradas:
- ⚡ REE: Precios electricidad España (42,578 registros)
- 🌡️ AEMET: Estación 5279X Linares (00:00-07:00)
- ☁️ OpenWeatherMap: Tiempo real (08:00-23:00)
- 📊 SIAR Histórico: 88,935 registros de 25+ años (2000-2025)
- 🤖 ML Models: Modelos de producción específicos cargados
- Optimización Energética: Predicciones ML basadas en precios reales REE
- Análisis Climático: Datos AEMET + OpenWeatherMap para Andalucía
- Recomendaciones Inteligentes: Sistema experto para producción
- Dashboard Profesional: Visualización completa en tiempo real
- Learning FastAPI: Proyecto real para aprender desarrollo web
- DevOps Practice: Docker, ML, scheduling, monitoreo
- Data Engineering: ETL, time series, feature engineering
- Security Learning: Tailscale, SSL, container security
- Monitoreo Energético: Precios eléctricos para optimización personal
- Dashboard Personal: Visualización datos España desde casa
- Experimentos ML: Entrenar modelos con datos reales
- Self-Hosting: Infraestructura personal completamente privada
# Cambiar localización weather
# src/fastapi-app/services/aemet_client.py
AEMET_STATION_ID = "tu_estacion_local"
COORDINATES = (tu_lat, tu_lon)
# Personalizar intervalos
# Scheduler jobs en main.py
@scheduler.scheduled_job('cron', minute='*/15') # Cada 15 min
- Nuevas APIs: Integrar fuentes de datos adicionales
- Modelos Custom: Entrenar modelos específicos para tus necesidades
- Alertas Personal: Notificaciones Telegram/email personalizadas
- Dashboard Custom: Modificar visualizaciones según preferencias
# Gestión de datos personales
curl http://localhost:8000/gaps/summary # Estado datos
curl -X POST http://localhost:8000/gaps/backfill # Recuperar gaps
# Monitoreo sistema personal
curl http://localhost:8000/scheduler/status # Estado jobs
curl http://localhost:8000/influxdb/verify # Verificar DB
# ML personal
curl http://localhost:8000/models/status # Estado modelos
curl http://localhost:8000/predict/energy-optimization # Predicciones energía
El proyecto incluye 25+ documentos técnicos en /docs/
cubriendo:
SYSTEM_ARCHITECTURE.md
- Arquitectura completa del sistemaDIRECT_ML_IMPLEMENTATION.md
- Pipeline ML simplificadoTAILSCALE_INTEGRATION.md
- Setup acceso remoto seguroAUTOMATIC_BACKFILL_SYSTEM.md
- Sistema auto-recuperación- ✅
SIAR_ETL_SOLUTION.md
- Solución ETL histórico completada QUICK_START_GUIDE.md
- Guía rápida personalizada
✅ COMPLETADO (Sept 17, 2025) - Implementación exitosa del sistema ETL para datos históricos del Sistema de Información Agroclimática para el Regadío (SIAR):
- 88,935 registros históricos procesados exitosamente
- 25+ años de cobertura temporal (Agosto 2000 - Septiembre 2025)
- 2 estaciones: SIAR_J09_Linares (2000-2017) + SIAR_J17_Linares (2018-2025)
- 10 campos meteorológicos por registro (temperatura, humedad, viento, precipitación)
- Bucket dedicado:
siar_historical
completamente separado de datos actuales
- Unicode cleaning: Espacios especiales que rompían parsing CSV
- Formatos españoles: DD/MM/YYYY dates y decimales con coma (,)
- Encoding robusto: Detección automática (latin-1, iso-8859-1, cp1252, utf-8)
- Separación de datos: Arquitectura clara para ML training vs predicción real-time
- 26 archivos CSV procesados con 100% éxito
- ~3 minutos para procesar 25 años de datos históricos
- Script automático:
/scripts/test_siar_simple.py
- Error handling: Continúa procesando aunque falle un archivo individual
Impacto: El sistema ML ahora dispone de 25+ años de datos históricos para entrenamiento robusto, complementando los datos en tiempo real de AEMET/OpenWeatherMap.
- Modelos ML: Energy R² = 0.89, Production accuracy = 90%
- Base de Datos: 134,415 registros totales (REE + Weather + SIAR)
- Cobertura Histórica: 25+ años datos meteorológicos (2000-2025)
- Dashboard: Heatmap interactivo con datos en tiempo real
- Latencia: <100ms respuesta API local
- Recursos: 4GB RAM, 2 CPU cores recomendados
- Startup rápido: <30 segundos sistema completo
- Bajo consumo: Ideal para Raspberry Pi 4, NUC, mini-PC
- Auto-mantenimiento: Funciona semanas sin intervención
- Backup automático: Estado persistente garantizado
Este proyecto está diseñado para uso personal y educativo:
- ✅ Uso personal ilimitado
- ✅ Modificación y personalización
- ✅ Proyectos de desarrollo personal
- ✅ Aprendizaje y desarrollo personal
- Fork personal: Crea tu versión personalizada
- Documentación: Comparte mejoras y customizaciones
- Issues: Reporta bugs o solicita features personales
- Discussions: Ideas para expansión personal del sistema
- Dashboard Heatmap Semanal: Calendario visual 7 días con precios REE + weather
- Integración Híbrida Weather: AEMET + OpenWeatherMap para cobertura 24/7
- Interactive Tooltips: Detalles completos hover por día (precio, clima, recomendación)
- Color-coded Price Zones: Sistema visual de zonas de precio optimizado
- Export Planning: Calendarios producción exportables (PDF, CSV, iCal)
- Extended Forecasts: Ampliar a 14 días con precios futuros REE
Implementación técnica:
# Endpoints actuales (✅ implementados)
GET /dashboard # Dashboard visual con heatmap semanal
GET /dashboard/complete # JSON completo datos dashboard
GET /weather/hybrid # Weather híbrido AEMET+OpenWeatherMap
GET /predict/energy-optimization # Predicciones optimización energética
GET /predict/production-recommendation # Recomendaciones producción inteligente
# Endpoints futuros
GET /predict/production-planning?days=14 # Planning extendido 2 semanas
POST /planning/export?format=pdf # Export calendarios producción
- Mobile Dashboard: App personal iOS/Android
- Telegram Alerts: Notificaciones personalizadas
- Energy Automation: Control dispositivos domóticos
- Multi-Location: Soporte múltiples ubicaciones
- Advanced ML: Deep learning models personales
- IoT Integration: Sensores personales ESP32/Arduino
- Home Assistant: Integración domótica personal
- Solar Optimization: Cálculos energía solar personal
- Cost Tracking: Análisis facturas eléctricas reales
- Tus datos nunca salen de tu infraestructura
- Sin telemetría ni tracking externo
- Control completo sobre información sensible
- Acceso privado solo desde tu tailnet
- APIs gratuitas para uso personal (REE, AEMET, OpenWeather)
- Sin suscripciones cloud mensuales
- Hardware personal que ya tienes
- Escalado según tus necesidades reales
- Datos reales de España para experimentar
- Stack completo moderno (FastAPI, Docker, ML)
- Proyecto portfolio profesional
- Tecnologías transferibles a entorno empresarial
🍫 Construido con ❤️ para uso personal y aprendizaje
📊 Dashboard Demo | 📖 Docs Técnicas | 🔧 Issues | 💬 Discussions