Objectif
Permettre à Gladys de gérer nativement les zones/pièces d’un aspirateur robot, afin de lancer un nettoyage ciblé par pièce depuis l’interface et les scènes — sans dépendre d’un widget spécifique ni de l’app constructeur.
Suite à l’échange avec @pierre-gilles, la demande est reformulée : plutôt qu’un simple composant widget « zones cliquables », il s’agit d’ajouter la notion de surface de service (Service Area) au cœur de Gladys, en s’alignant sur le standard Matter – Service Area cluster. Le widget ne fera ensuite qu’exposer cette fonctionnalité existante.
Le besoin
Aujourd’hui, l’intégration Roborock peut afficher la carte (via onWidgetGetImage), mais :
- la carte est une image figée : aucun moyen de détecter un clic sur une pièce ;
- il n’existe aucune notion de pièce/zone côté cœur Gladys ;
- impossible donc de lancer un
app_segment_cleanciblé depuis Gladys, ni de l’utiliser dans une scène.
Proposition (approche cœur, alignée Matter)
1. Modèle de données cœur
- Un appareil aspirateur peut déclarer une liste de zones de service (pièces), chacune avec :
- un identifiant stable (
segment_id/area_id), - un nom (« Cuisine », « Salon »…),
- éventuellement une carte/étage de rattachement (support multi-cartes / multi-étages).
- un identifiant stable (
- Ces zones sont remontées par l’intégration (Roborock, Dreame…) et stockées côté Gladys, sur le modèle du cluster Matter Service Area (
SupportedAreas,SelectedAreas,CurrentArea).
2. Sélection & commande
- Depuis le panneau aspirateur : sélection d’une ou plusieurs pièces, puis « Lancer le nettoyage ».
- L’intégration traduit la sélection en commande native (
app_segment_cleanpour Roborock, équivalent Dreame…).
3. Scènes
- Une action de scène « Nettoyer la/les pièce(s) X » utilisant les zones déclarées (ex. « nettoyer la cuisine à 9h »).
4. Widget
- Le widget carte affiche les zones déclarées et relaie la sélection (ex. via
onWidgetAction) vers cette fonctionnalité cœur — il ne porte plus la logique métier.
Points à spécifier / questions ouvertes
- Multi-cartes / multi-étages : comment modéliser plusieurs cartes par appareil.
- Synchronisation des segments : les ids de pièces peuvent évoluer côté constructeur (re-cartographie) → stratégie de rafraîchissement/réconciliation.
- Nommage : noms importés du cloud constructeur vs noms définis dans Gladys.
- Interface carte : afficher les zones par-dessus l’image décodée, ou se contenter d’une liste de cases à cocher dans un premier temps (MVP).
- Mapping Matter : quels attributs/commandes du cluster Service Area on expose exactement.
Proposition de périmètre MVP
- Remontée de la liste des pièces par l’intégration Roborock.
- Stockage cœur des zones + sélection multiple dans le panneau aspirateur.
- Commande
app_segment_cleansur la sélection. - Action de scène équivalente.
(La carte interactive et le multi-étages viendraient dans un second temps.)
Mockup (maison générique) de l’expérience cible :

