Hola @spenceur, hola @Lokkye,
Primero, ¡enhorabuena a los dos! @Lokkye por haber sacado las dos integraciones tan rápido y sin tener el material a mano, y @spenceur por haber llegado hasta el fork con código que funciona. ¡Así es exactamente como avanza el ecosistema! 
Sobre tu problema de selector @spenceur: no es un error, y sobre todo no es un problema que necesites solucionar en tu código.
Dos cosas:
- Cuando añades una funcionalidad en un widget del panel de control, puedes ponerle el nombre que quieras directamente en la pantalla de edición del widget. Este nombre sobrescribe todo lo demás. Esta es la respuesta histórica a este tema, y cubre tu caso: puedes llamar a tu línea «Limpieza de cocina» aunque la funcionalidad se llame de otra manera.
- En los lugares donde este renombrado no se aplica (los selectores de escenas, por ejemplo), Gladys cambia automáticamente al nombre de la funcionalidad tan pronto como hay varias del mismo tipo en el mismo dispositivo. Si solo has visto «Botón de presión», es porque solo tenías una rutina, con dos o más rutinas, tus nombres se mostrarán solos. Y con una sola, de todos modos no hay ambigüedad posible.
Por lo tanto, para responder a tu pregunta: ¡de ninguna manera un dispositivo por rutina! Mantén todo en un solo dispositivo, tu código actual es bueno.
Un pequeño detalle de paso: para un botón de presión en modo actuador, usa mejor min: 1, max: 1 (esta es la convención utilizada en otros lugares de Gladys). Con min: 0, la acción de la escena muestra un control deslizante de 0 a 1, lo que no tiene mucho sentido para un botón.
Un punto más importante, para los dos: Gladys tiene desde hace poco una categoría nativa VACUUM_CLEANER en el núcleo (añadida para la integración Matter), con las funcionalidades state, run-mode, clean-mode y dock, sus valores, sus traducciones y una visualización dedicada en el panel de control. Está en server/utils/constants.js si quieres echar un vistazo.
¿La integración Roborock se basa en esto para las funciones básicas? Si es así, perfecto. Si no, realmente vale la pena cambiar antes de seguir adelante: sin eso, un aspirador subido por Matter y un aspirador subido por Roborock no se controlarán de la misma manera en el mismo panel de control, aunque sea el mismo robot. Las rutinas, en cambio, siguen siendo perfectamente legítimos botones de presión.
Sobre el mapeo de habitaciones: es la solicitud más interesante del tema. Hoy en día, todas las listas de selección de Gladys (modos de ventilación, fil piloto, aire acondicionado…) están fijas en el código con una traducción por valor. No pueden alojar habitaciones definidas por el usuario en la aplicación Roborock.
A corto plazo, la solución que ya funciona: una funcionalidad de botón de presión por habitación («Limpiar - Cocina», «Limpiar - Salón»…). Es directamente utilizable en las escenas, y esto resuelve al mismo tiempo la visualización de los nombres ya que hay varios.
De lo contrario, creo que se necesitaría un tipo especial de funcionalidad para esto en los aspiradores. Es un proyecto en el núcleo, y va mucho más allá de esta integración.
¿Podríais crear una solicitud de funcionalidad específica para que podamos iniciar un desarrollo sobre este tema? 
Seguid así, es un trabajo muy bueno 