Hallo @spenceur, hallo @Lokkye,
Zuerst einmal herzlichen Glückwunsch an euch beide: @Lokkye für die schnelle Veröffentlichung der beiden Integrationen, ohne das Material überhaupt in der Hand zu haben, und @spenceur für das Forken mit funktionierendem Code. Genau so kommt der Ökosystem voran 
Zu deinem Problem mit dem Selektor @spenceur: Das ist kein Bug, und vor allem ist das kein Problem, das du in deinem Code umgehen musst.
Zwei Dinge:
- Wenn du eine Funktion in einem Dashboard-Widget hinzufügst, kannst du ihm den Namen geben, den du willst, direkt im Widget-Bearbeitungsbildschirm. Dieser Name überschreibt alles andere. Das ist die historische Antwort zu diesem Thema, und sie deckt deinen Fall ab: Du kannst deine Zeile „Küchenreinigung“ nennen, selbst wenn die Funktion anders heißt.
- An den Stellen, wo dieses Umbenennen nicht angewendet wird (z. B. Szenen-Selektoren), wechselt Gladys automatisch zum Funktionsnamen, sobald es mehrere desselben Typs auf demselben Gerät gibt. Wenn du nur „Druckknopf“ gesehen hast, dann weil du nur eine Routine hattest. Mit zwei oder mehr Routinen werden deine Namen automatisch angezeigt. Und mit einer einzigen gibt es ohnehin keine mögliche Mehrdeutigkeit.
Also, um deine Frage zu beantworten: auf keinen Fall ein Gerät pro Routine. Behalte alles auf einem Gerät, dein aktueller Code ist gut.
Ein kleines Detail am Rande: Für einen Druckknopf im Aktuator-Modus verwende lieber min: 1, max: 1 (das ist die Konvention, die anderswo in Gladys verwendet wird). Mit min: 0 zeigt die Szenenaktion einen Slider von 0 bis 1 an, was für einen Knopf nicht viel Sinn ergibt.
Ein wichtigerer Punkt für euch beide: Gladys hat seit kurzem eine native Kategorie VACUUM_CLEANER im Core (hinzugefügt für die Matter-Integration), mit den Funktionen state, run-mode, clean-mode und dock, ihren Werten, ihren Übersetzungen und einer dedizierten Anzeige im Dashboard. Sie ist in server/utils/constants.js zu finden, falls du sie dir ansehen möchtest.
Stützt sich die Roborock-Integration darauf für die Grundfunktionen? Wenn ja, perfekt. Wenn nicht, lohnt es sich wirklich, darauf umzusteigen, bevor ihr weitergeht: Ohne das wird ein Staubsauger, der über Matter hochgeladen wird, und ein Staubsauger, der über Roborock hochgeladen wird, nicht auf die gleiche Weise im gleichen Dashboard gesteuert, obwohl es derselbe Roboter ist. Die Routinen hingegen bleiben ganz legitim Druckknöpfe.
Zum Raum-Mapping: Das ist die interessanteste Anforderung des Themas. Heute sind alle Auswahllisten von Gladys (Lüftungsmodi, Piloten, Klimaanlagen…) im Code mit einer Übersetzung pro Wert fest verdrahtet. Sie können keine vom Benutzer in der Roborock-App definierten Räume aufnehmen.
Kurzfristig die Lösung, die bereits funktioniert: eine Druckknopf-Funktion pro Raum („Reinigen - Küche“, „Reinigen - Wohnzimmer“…). Das ist direkt in Szenen verwendbar und löst nebenbei das Problem der Namensanzeige, da es mehrere gibt.
Ansonsten denke ich, dass es einen speziellen Funktions-Typ für das in Staubsaugern braucht. Das ist ein Projekt auf der Core-Seite, und es geht weit über diese Integration hinaus!
Könntet ihr eine spezifische Feature-Anfrage erstellen, damit wir eine Entwicklung zu diesem Thema starten können? 
Macht weiter, das ist wirklich gute Arbeit 