Integración Externa - Roborock

¡Hola a todos y especialmente a @Lokkye!
Soñaba con probar tu integración de Roborock… pero mi dispositivo está configurado con la aplicación Roborock y no con la de Xiaomi (porque en su momento me parecía que la aplicación de Roborock estaba mucho mejor hecha).

¿Crees que es posible hacer evolucionar esta integración para soportar dispositivos como el mío?

Mientras tanto, ¡enhorabuena por tu trabajo!

Hola @guim31, voy a ver si es posible, pero probablemente necesitaré tu ayuda para probarlo. Me ocupo la próxima semana.

¡Gracias por tu respuesta, será un placer!

también interesado en la configuración de Roborock :slight_smile:

Vi que el repo se movía :face_savoring_food: hate

Roborock 2.1.1 :rocket:

He decidido separar las 2 integraciones.

Por lo tanto, la integración de Roborock es solo para los usuarios de la aplicación Roborock

https://plus.gladysassistant.com/dashboard/integration/device/external/ext-callemand-gladys-roborock

Solo he podido probar la conexión, no la adición de dispositivos ni el control, ya que no tengo ninguno en mi cuenta de Roborock.

Y acabo de crear una nueva integración de Xiaomi Home que permite, por el momento, controlar los Roborock vinculados a esta aplicación, pero más adelante podremos añadir otros dispositivos.

https://plus.gladysassistant.com/dashboard/integration/device/external-install/callemand/gladys-xiaomi-home?search=Xia&from=%2Fdashboard%2Fintegration

¡Lo pruebo tan pronto como sea posible! !

Es bastante simpático, pero me faltan funciones esenciales que HA puede hacer, por ejemplo.

En Roborock se pueden crear rutinas (atajos) con acciones, el tipo de limpieza, etc.

A través de HA se pueden iniciar estas rutinas y actualmente en Gladys no. De hecho, también hay un sistema de mapeo de habitaciones entre HA y Roborock, etc. Aquí está lo que tengo, por ejemplo, en HA.

¿Crees que es posible, al menos, tener estos atajos como botones en Gladys?

Sería necesario recuperar las rutinas de Roborock durante el descubrimiento, crear una funcionalidad de tipo botón en Gladys para cada una, y luego ejecutar la rutina a partir de su identificador al presionar. Esto también permitiría usarlas directamente como acciones en las escenas de Gladys.

He hecho un fork de tu repositorio @Lokkye para agregar las rutinas, pero tengo un problema técnico.

@pierre-gilles he querido agregar las rutinas disponibles a través de la API al robot en modo botón de empuje
Por lo tanto, he creado como sigue:

for (const routine of routines) {
features.push({
name: `Routine - ${routine.name}`,
external_id: ids.feature(`${FEATURE_CODES.ROUTINE_PREFIX}${routine.id}`),
read_only: false,
has_feedback: false,
keep_history: false,
min: 0,
max: 1,
category: DEVICE_FEATURE_CATEGORIES.BUTTON,
type: DEVICE_FEATURE_TYPES.BUTTON.PUSH,
});

De hecho, se ha creado un botón de empuje (lo he probado y mi rutina se lanza bien)
Pero al agregar en el panel de control tengo esto:

¿Por qué en el selector no tenemos el feature.name sino el tipo de funcionalidad?
En mi caso, tengo solo una rutina, pero potencialmente podría tener varias.
¿Qué hacer en este caso?
¿Un dispositivo por rutina?
¿No sería preferible mostrar el feature.name con el tipo para este tipo de casos?

Gracias por su tiempo :slight_smile:

Según lo anterior, intentaré agregar otras características:

etc

Y ver para un mapeo de habitación como en HA (para decir limpiar la habitación x en las escenas, por ejemplo).

Quería añadir las rutinas disponibles a través de la API al robot en modo botón de presión

@pierre-gilles

¿Al final no sería la misma función para una selección automática como para las aplicaciones LGwebos?

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! :clap:

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:

  1. 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.
  2. 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? :slight_smile:

Seguid así, es un trabajo muy bueno :slightly_smiling_face:

Tomo nota de esta parte, gracias :slight_smile:

@Lokkye Solicitud de extracción pendiente :slight_smile:

Buenas noches,

Estoy descubriendo la integración de Roborock, y se lo agradezco.

Sin embargo, me permito hacer algunas preguntas: tengo un Q7 Max, con función de mapeo y declaración de zonas/estancias, que no aparecen en las propiedades del dispositivo. Por lo tanto, cuando selecciono una limpieza, ¡es para toda la casa! :slight_smile:

También sería práctico poder disponer del estado del robot (sensores, cepillos, etc…).

A su disposición si puedo realizar otros casos de prueba, o cualquier otra cosa que pueda ayudar a hacer evolucionar esta integración. :slight_smile:

Buen final de día,

Jean

Hola, he empezado a añadir los retornos de los diferentes sensores.
También he añadido el dock, ya que él mismo tiene información en función del aspirador.

Para ciertas funciones, he pasado por la categoría desconocida y el tipo desconocido
Mientras tanto, esta evolución:


En cuanto al mapeo de las habitaciones @pierre-gilles, ¿qué esperas exactamente?

¿Esta solicitud puede servir?

Actualmente lo estoy viendo desde lejos porque estoy de vacaciones, pero ¡me alegra mucho que avance!

Creo que esta integración merecería ofrecer la opción de iniciar/pausar en forma de botón en lugar de un menú desplegable. ¿Qué opinas @spenceur? (por cierto, creo que la opción de pausa no existe por el momento)

@guim31 solo estoy ayudando a @Lokkye, pero prefiero que sea él quien te responda :slight_smile:

Un pequeño adelanto :eyes:

He actualizado la integración a 0.12

Ahora admite los consumibles del dock y del robot, así como la selección de la habitación para la limpieza

@Lokkye la PR está aquí, te está esperando :slight_smile: :

Da ganas de equiparse con este tipo de dispositivo…

El tema siempre ha sido « solo hay dispositivos en la nube, hay que elegir uno que se pueda flashear con Valudeto y qué pasa si sale mal? »

Ahora solo me dan miedo y ganas los pelos de perro… ¿Me entienden?

@spenceur ¡Buen trabajo! Acabo de fusionar la PR y la versión está en progreso. Ahora tengo que hacer el mismo trabajo en la integración de Xiaomi Home :slight_smile:

@guim31 ¡No es falso! Tengo que ver cómo hacerlo

@GBoulvin ¡Adelante! Es un cambio de juego para mí. Funciona varias veces por semana y ya no tengo ningún problema de pelos y demás :slight_smile:

@GBoulvin yo también añado que llevo varios años equipado (primero con un roborock S6, luego un s8 Ultra) y lo uso todos los días, tengo niños y gatos… y es MUY útil y eficaz.