Gestion native des cartes de nettoyages des aspirateurs robots

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_clean ciblé 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).
  • 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_clean pour 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

  1. Remontée de la liste des pièces par l’intégration Roborock.
  2. Stockage cœur des zones + sélection multiple dans le panneau aspirateur.
  3. Commande app_segment_clean sur la sélection.
  4. 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 :

Salut @spenceur,

Merci pour la demande et la maquette ! Le besoin est réel, et il rejoint ce qui se passe côté Dreame : Robots aspirateurs : une ligne de contrôle complète dans la boîte Appareils.

Plutôt que des zones cliquables génériques dans les widgets, je propose :

  1. La sélection de pièces devient une fonctionnalité d’aspirateur du cœur, alignée sur le cluster Matter Service Area : les pièces sont déclarées par appareil, on en sélectionne plusieurs, puis « Démarrer » lance le nettoyage. Ça marche pour Roborock, Dreame et Matter, dans le panneau aspirateur et dans les scènes.
  2. Ton widget affiche simplement cette fonctionnalité : tu la références comme une tuile value aujourd’hui, et Gladys dessine les pastilles de pièces. La sélection est partagée sur tous les écrans.
  3. La carte reste une image : comme ton intégration reçoit la sélection, tu peux dessiner les pièces sélectionnées dessus.

Ça touche au modèle de données, donc il faudra commencer par faire une spec propre :slight_smile:

Voilà un sujet TRÈS intéressant !!! :grinning_face:

Ce serait super. Où puis-je voter ? Je suis pour…

ici au niveau du titre :wink:

:slight_smile: vous l’avez bien caché… merci

@spenceur j’ai mis à jour le titre de la demande, est-ce que ça te va ? Est-ce que tu peux modifier le contenu de la demande ? :slight_smile:

J’ai vue je suis un peu sous l’eau en ce moment sur un projet d’un client mais je regarde dès que jai 10min.

@pierre-gilles j’ai mis à jour le contenu de la demande dans le sens de ton retour : la proposition est maintenant centrée sur une gestion native des zones/pièces au cœur de Gladys, alignée sur le cluster Matter Service Area, avec le widget qui ne fait qu’exposer la fonctionnalité. J’ai ajouté une section « Points à spécifier / questions ouvertes » et une proposition de périmètre MVP. Dis-moi si ça te va, ou si tu préfères que je pousse jusqu’à une vraie spec détaillée.