Gestor de escenas - Gestionario inteligente de ambientes para Gladys

**El contexto

Nota: Esto fue lo último que hice, después los dejaré en paz, lo siento por el flood de estos últimos días. Pero quería cerrar esta migración domótica porque después no tendré mucho tiempo para ocuparme de ello.

Al migrar de Home Assistant a Gladys, uno de mis mayores desafíos fue la gestión de las ambientes luminosas. Tengo 22 luces en 4 protocolos diferentes (Philips Hue, Z-Wave, MQTT, Tuya) y quería ambientes que se adapten al momento del día y al clima.

Las escenas de Gladys permiten controlar las luces, pero tan pronto como quieres gestionar variantes (colores más cálidos cuando está gris, ambiente diferente día/noche), se vuelve rápidamente complejo con muchas escenas que mantener.

Por lo tanto, creé un Gestor de Escenas: un contenedor Docker ligero (~25 Mo RAM) con una interfaz web que:

  1. Captura el estado de tus luces con un clic — todos los protocolos, a través de la API de Gladys

  2. Almacena presets con variantes adaptativas (día/noche, clima)

  3. Aplica la variante correcta automáticamente cuando una escena de Gladys la llame

¿Cómo funciona?

Escena Gladys (trigger hora, presencia, botón, etc.)
  └→ Acción "HTTP Request": POST http://localhost:8890/scenes/soiree-chambre/apply
       └→ Gestor de Escenas
            ├─ Verificación: ¿día o noche? (cálculo local)
            ├─ Verificación: ¿despejado o nublado? (OpenWeatherMap, caché 10 min)
            └─ Aplica la variante correcta a través de la API de Gladys

El punto clave: el Gestor de Escenas no conoce ningún protocolo. Pasa por la API de Gladys (POST /api/v1/device_feature/{selector}/value). Si Gladys gestiona tu luz, el Gestor de Escenas también lo hace.

Separación de responsabilidades: Gladys decide cuándo, el Gestor de Escenas decide cómo.

Protocolos probados

Protocolo Estado
Philips Hue OK (encendido/apagado, brillo, color, temperatura)
Z-Wave (Fibaro Dimmer) OK (dimmer 0-99)
MQTT personalizado OK (encendido/apagado, brillo, color)
Tuya OK (encendido/apagado)

Rendimiento

Operación Tiempo
Capturar 20 dispositivos ~80 ms
Aplicar 6 Hue en paralelo ~70 ms

Negligible — es el mismo camino de código que las escenas nativas de Gladys.

Instalación y documentación

Todo está en GitHub con el README completo, las instrucciones de instalación, la referencia de la API y las capturas de pantalla.

GitHub — gladys-scenes-manager

En resumen:

  1. Clonar el repositorio

  2. docker build -t scenes-manager .

  3. docker run con tu presets.json (configuración de clave API de Gladys + coordenadas GPS)

  4. Abrir http://TU_IP:8890

  5. Capturar tus ambientes, llamarlos desde las escenas de Gladys a través de « HTTP Request »

Stack

  • Node.js 22 Alpine, 2 dependencias (mqtt.js, suncalc)

  • Frontend vanilla (HTML/CSS/JS), tema oscuro inspirado en Gladys

  • Sin framework, sin base de datos — un archivo JSON

¡Parece genial!

¿Tienes alguna foto o algo para mostrarnos el resultado?

Me cuesta ver cómo queda. ¿Qué color eliges en función de la luminosidad/meteorología?

¡Hola!

¿De qué hablas exactamente, de las luces reales? Porque la interfaz, he puesto capturas de pantalla.

Pero en resumen:

Ajustas todas tus luces como quieras, ya sea desde Gladys o desde las aplicaciones de tus dispositivos conectados.

Y el plugin te permite guardar la escena en 2 clics. Y para cada escena, puedes definir variantes según el día o la noche o la cobertura nubosa. Así que para la escena, definirás estos parámetros, podrás crear varios presets para la misma escena.

Ejemplo:
Tengo una habitación que es un poco mi habitación friki donde trabajo y también juego porque soy un gran gamer. Cuando enciendo el PC, llamo a la escena que he creado. Dependiendo de si es de día o de noche, los colores serán diferentes. Y si es un día bastante oscuro, serán colores más cálidos y un día bastante claro, colores más fríos.

Y sobre todo, incluso sin usar variantes, sigue siendo ultra sencillo crear escenas con varias luces. Porque si no lo haces directamente en el editor de escenas de Gladys. Rápidamente te encuentras con muchos bloques, ya que necesitas uno para encender, uno para el color y uno para el brillo y eso para cada luz.

¿Es más claro ahora?

Sí, ¿cómo queda en realidad o cómo haces tus elecciones? De hecho, no tengo ningún ojo gráfico/estético y me interesa saber qué colores usas en cada momento. Por ejemplo, ¿qué color usas en un día lluvioso?

Con toda franqueza, aún no lo sé, espero a que se haga de noche :rofl:
Hice un sistema similar en home assistant, pero hacía mucho tiempo que no funcionaba. Y me inspiro mucho en las escenas de Philips Hue. Copio los colores para otros dispositivos.

Scenes Manager v2.0 — Simplificación: 3 modos en lugar de variantes

Tras las pruebas de uso, he simplificado el sistema de variantes que era demasiado complejo en la práctica.

Qué ha cambiado

El antiguo sistema combinaba 2 ejes independientes (día/noche x despejado/nublado), lo que daba hasta 4 variantes por ambiente + un valor predeterminado. En realidad, de noche no importa el clima — siempre está oscuro afuera.

La v2 reemplaza todo esto con 3 modos :

Modo Cuándo Lógica
Noche Después de la puesta de sol Clima ignorado
Día buen tiempo Día + nubes < umbral Mucha luz natural
Día mal tiempo Día + nubes > umbral Poca luz natural

Y lo más importante: no es necesario llenar los 3. Si solo capturas un modo, se aplica todo el tiempo (valor predeterminado implícito). Añade los demás cuando quieras, a tu ritmo.

Nueva interfaz de usuario

La interfaz ha sido rediseñada para adaptarse mejor al estilo de Gladys:

  • Contenido centrado (ya no a pantalla completa)

  • Mejor contraste entre el fondo y las tarjetas

  • Selector de modo simple (3 botones) en lugar de las casillas de verificación de día/noche + clima

  • Insignias en las tarjetas para ver de un vistazo qué modos están llenos

Migración automática

Si ya tenías ambientes en la v1, se migrarán automáticamente al reiniciar el contenedor. No hay nada que hacer.

Enlace

**GitHub — gladys-scenes-manager
**

¡Es excelente todo esto, enhorabuena @David-Digitis, excelente uso de Claude Code :slight_smile:

Jajaja gracias, 3 meses de autoformación y pruebas, pero ahora es un negocio que funciona. Increíble el avance de las IA analógicas. Cuando sabes usarlas, configurar las habilidades, agentes, entornos, ya no tienes límites. Estas integraciones son 1/100 de lo que he hecho en 3 meses. Literalmente he llevado mi empresa a la versión 2.0 jajaja

¿Tú las usas o aún no te has lanzado?

¡Ah, sí, hace bastante tiempo incluso! :smiley: Es mi trabajo, después de todo.

Yo estoy en el windsurf por mi parte, he hecho muchos videos en el canal de YouTube Gladys

El más reciente:

¡Ah, genial, iré a echar un vistazo!
No conocía WindSurf, yo estoy en VS Code.