Interaktive Kartenkomponente (klickbare Zonen) für externe Widget-Integrationen

Hallo :waving_hand:

Ich entwickle ein Widget für die externe Integration von Roborock, das die Karte des Staubsaugers anzeigt (über onWidgetGetImage). Die Darstellung funktioniert sehr gut, aber ich stoße auf eine Grenze des Widget-Vokabulars: es gibt keine Möglichkeit, die Karte interaktiv zu gestalten.

Aktuell stehen in einem Widget nur statische Komponenten (image, value, gauge, status, chart, card-list) + button (begrenzt auf 4) zur Verfügung. Die konkreten Grenzen:

• Die Karte ist ein statisches Bild: Es ist unmöglich, einen Klick auf einen Raum zu erkennen;
• keine Auswahlkomponenten (weder Multi-Auswahl noch klickbare Bereiche auf dem Bild);
• kein Auswahlzustand, der zwischen Komponenten geteilt wird.

Mein Wunsch: eine Komponente, die es ermöglicht, klickbare Bereiche auf einem Bild / einer Karte zu definieren (oder eine dedizierte „Karte“-Komponente) mit einem Auswahlzustand, der an die Integration weitergeleitet wird (z. B. onWidgetAction).

Konkreter Anwendungsfall (Staubsauger): Der Benutzer wählt Räume direkt auf der Karte aus, und „Starten“ startet die gezielte Reinigung dieser Räume (app_segment_clean). Das ist genau die Erfahrung der nativen Roborock-/Dreame-Apps. Es würde auch für jede Integration nützlich sein, die eine Auswahl auf einem Plan benötigt (Zonen, Stockwerke…).

Mockup (generisches Haus) — wir behalten das bestehende Widget bei, fügen nur die Auswahl auf der Karte hinzu:

Hallo @spenceur,

Danke für die Anfrage und das Mockup! Der Bedarf ist real und passt zu dem, was bei Dreame passiert: Roboterstaubsauger: Eine vollständige Steuerungszeile im Appareils-Kasten.

Statt generische klickbare Bereiche in den Widgets schlage ich vor:

  1. Die Raumauswahl wird eine Kernfunktion des Staubsaugers, abgestimmt auf den Matter-Cluster Service Area: Räume werden pro Gerät deklariert, mehrere werden ausgewählt, und „Starten“ beginnt die Reinigung. Das funktioniert für Roborock, Dreame und Matter, im Staubsauger-Panel und in den Szenen.
  2. Dein Widget zeigt einfach diese Funktion an: Du verweist darauf wie eine value-Kachel heute, und Gladys zeichnet die Raum-Pillen. Die Auswahl wird auf allen Bildschirmen geteilt.
  3. Die Karte bleibt eine image: Da deine Integration die Auswahl erhält, kannst du die ausgewählten Räume darauf zeichnen.

Das betrifft das Datenmodell, also müssen wir zuerst eine saubere Spezifikation erstellen :slight_smile:

Das ist ein SUPER spannendes Thema!!! :grinning_face: