Objetivo
Permitir que Gladys gestione nativamente las zonas/estancias de un robot aspirador, para lanzar una limpieza dirigida por estancia desde la interfaz y las escenas — sin depender de un widget específico ni de la aplicación del fabricante.
Tras la conversación con @pierre-gilles, la solicitud se reformula: en lugar de un simple componente de widget « zonas clicables », se trata de añadir la noción de superficie de servicio (Service Area) en el corazón de Gladys, alineándose con el estándar Matter – Service Area cluster. El widget solo expondrá esta funcionalidad existente.
La necesidad
Hoy, la integración Roborock puede mostrar el mapa (a través de onWidgetGetImage), pero:
- el mapa es una imagen fija: no hay forma de detectar un clic en una estancia;
- no existe ninguna noción de estancia/zona en el núcleo de Gladys;
- por lo tanto, es imposible lanzar un
app_segment_cleandirigido desde Gladys, ni usarlo en una escena.
Propuesta (enfoque central, alineado con Matter)
1. Modelo de datos central
- Un dispositivo aspirador puede declarar una lista de zonas de servicio (estancias), cada una con:
- un identificador estable (
segment_id/area_id), - un nombre (« Cocina », « Salón »…),
- opcionalmente un mapa/planta de referencia (soporte para múltiples mapas / múltiples plantas).
- un identificador estable (
- Estas zonas son reportadas por la integración (Roborock, Dreame…) y almacenadas en Gladys, siguiendo el modelo del cluster Matter Service Area (
SupportedAreas,SelectedAreas,CurrentArea).
2. Selección y comando
- Desde el panel del aspirador: selección de una o varias estancias, luego « Lanzar la limpieza ».
- La integración traduce la selección en un comando nativo (
app_segment_cleanpara Roborock, equivalente de Dreame…).
3. Escenas
- Una acción de escena « Limpiar la/las estancia(s) X » utilizando las zonas declaradas (ej. « limpiar la cocina a las 9h »).
4. Widget
- El widget del mapa muestra las zonas declaradas y relaya la selección (ej. a través de
onWidgetAction) hacia esta funcionalidad central — ya no lleva la lógica de negocio.
Puntos a especificar / preguntas abiertas
- Múltiples mapas / múltiples plantas: cómo modelar varios mapas por dispositivo.
- Sincronización de los segmentos: los identificadores de las estancias pueden evolucionar en el lado del fabricante (re-mapeo) → estrategia de actualización/reconciliación.
- Nombrado: nombres importados de la nube del fabricante vs nombres definidos en Gladys.
- Interfaz de mapa: mostrar las zonas sobre la imagen decodificada, o conformarse con una lista de casillas de verificación en un primer momento (MVP).
- Mapeo Matter: qué atributos/comandos del cluster Service Area se exponen exactamente.
Propuesta de alcance MVP
- Reportar la lista de estancias por la integración Roborock.
- Almacenamiento central de las zonas + selección múltiple en el panel del aspirador.
- Comando
app_segment_cleanen la selección. - Acción de escena equivalente.
(El mapa interactivo y las múltiples plantas vendrían en una segunda fase.)
Mockup (casa genérica) de la experiencia objetivo:

