Intégration Externe - Roborock

Salut à tout le monde et à @Lokkye en particulier.
Je rêvais de tester ton intégration Roborock… mais mon appareil est configuré avec l’appli Roborock et non pas la Xiaomi (parce que je trouvais l’appli Roborock vachement mieux foutue à l’époque).

Est-ce que tu penses qu’il est possible de faire évoluer cette intégration pour supporter les appareils comme le mien ?

En attendant ta réponse, un grand bravo pour ton travail !

Salut @guim31 , je vais voir si cela est possible mais je te demanderai surment de l’aide pour tester. Je m’en occupe la semaine prochaine.

Merci pour ta réponse, ce sera avec grand plaisir !

intéréssé aussi par la config Roborock :slight_smile:

Jai vue que le repo bougeait :face_savoring_food: hate

Roborock 2.1.1 :rocket:

J’ai fait le choix de séparer les 2 integrations.

Donc l’integration Roborock n’est que pour les utilisateurs de l’application Roborock

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

Je n’ai pu tester que la connection et pas l’ajout de device et le controlle car je n’en ai pas sur mon compte Roborock

Et je viens de créer un nouvelle integration Xiaomi Home qui permet pour le moment de controller les Roborock qui sont liée a cette application mais plus tard, on pourra rajouter d’autre device.

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

Je teste ça dès que possible !!

Cest plutôt sympa mais il me manque des fonctionnalités essentielles que HA peut faire par exemple.

Sur roborock on peut créer des routines (raccourcis) avec des actions le type de nettoyage etc.

Via HA on peut lancer ces routines et actuellement sur gladys non. Dailleur il y a aussi un système de mapping de pièces entre HA et roborock etc voici ce que jai par exemple qur HA.

Pense tu qu’il est possible a minima davoir au moins ces raccourcis en bouton poussoir sur gladys ?

Il faudrait récupérer les routines Roborock lors de la découverte, créer une fonctionnalité Gladys de type bouton poussoir pour chacune, puis exécuter la routine à partir de son identifiant lors de l’appui. Cela permettrait aussi de les utiliser directement comme actions dans les scènes Gladys.

J’ai fais un fork de ton repo @Lokkye pour ajouter les routines mais je rencontre un soucis technique.

@pierre-gilles j’ai voulu ajouté les routines présentes via l’api au robot en mode bouton poussoir
J’ai donc fais la création comme ceci :

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,
});

J’ai effectivement un bouton poussoir qui a été créé (je l’ai testé et ma routine se lance bien)
Mais lors de l’ajout côté dashboard j’ai ceci :

Pourquoi dans le selecteur on a pas le feature.name mais le type de fonctionnalité ?
La dans mon cas j’ai qu’une seule routine mais potentiellement je pourrais en avoir plusieurs.
Comment faire dans ce cas ?
Un device par routine ?
Ne serait il pas préférable d’afficher le feature.name avec le type pour ce genre de cas ?

Merci de votre temps :slight_smile:

En fonction j’essaierai d’ajouter d’autre feature :

etc

Et voir pour un mapping de piece comme sur HA (pour dire nettoie la piece x dans les scenes par exemple ?)

j’ai voulu ajouté les routines présentes via l’api au robot en mode bouton poussoir

@pierre-gilles

Finalement ne serais ce pas la même feature pour un select automatique comme pour les applications LGwebos ?

Salut @spenceur, salut @Lokkye,

D’abord bravo à vous deux : @Lokkye pour avoir sorti les deux intégrations aussi vite et sans même avoir le matériel sous la main, et @spenceur pour être allé jusqu’au fork avec du code qui marche. C’est exactement comme ça que l’écosystème avance :clap:

Sur ton souci de sélecteur @spenceur : ce n’est pas un bug, et surtout ce n’est pas un problème que tu as besoin de contourner dans ton code.

Deux choses :

  1. Quand tu ajoutes une fonctionnalité dans un widget du dashboard, tu peux lui donner le nom que tu veux directement dans l’écran d’édition du widget. Ce nom écrase tout le reste. C’est la réponse historique à ce sujet, et elle couvre ton cas : tu peux appeler ta ligne « Nettoyage cuisine » même si la fonctionnalité s’appelle autrement.
  2. Dans les endroits où ce renommage ne s’applique pas (les sélecteurs de scènes par exemple), Gladys bascule automatiquement sur le nom de la fonctionnalité dès qu’il y en a plusieurs du même type sur le même appareil. Si tu n’as vu que « Bouton poussoir », c’est parce que tu n’avais qu’une seule routine, avec deux routines ou plus, tes noms s’afficheront tout seuls. Et avec une seule, il n’y a de toute façon pas d’ambiguïté possible.

Donc pour répondre à ta question : surtout pas un appareil par routine. Garde tout sur un seul appareil, ton code actuel est bon.

Un petit détail au passage : pour un bouton poussoir en mode actionneur, mets plutôt min: 1, max: 1 (c’est la convention utilisée ailleurs dans Gladys). Avec min: 0, l’action de scène affiche un slider de 0 à 1, ce qui n’a pas beaucoup de sens pour un bouton.

Un point plus important, pour vous deux : Gladys a depuis peu une catégorie native VACUUM_CLEANER dans le core (ajoutée pour l’intégration Matter), avec les fonctionnalités state, run-mode, clean-mode et dock, leurs valeurs, leurs traductions et un affichage dédié dans le dashboard. Elle est dans server/utils/constants.js si tu veux regarder.

Est-ce que l’intégration Roborock s’appuie dessus pour les fonctions de base ? Si oui, parfait. Sinon ça vaut vraiment le coup de basculer avant d’aller plus loin : sans ça, un aspirateur remonté par Matter et un aspirateur remonté par Roborock ne se piloteront pas de la même façon dans le même dashboard, alors que c’est le même robot. Les routines, elles, restent tout à fait légitimement des boutons poussoirs.

Sur le mapping de pièces : c’est la demande la plus intéressante du sujet. Aujourd’hui, toutes les listes de choix de Gladys (modes de ventilation, fil pilote, clim…) sont figées dans le code avec une traduction par valeur. Ça ne peut pas accueillir des pièces définies par l’utilisateur dans l’appli Roborock.

À court terme, la solution qui marche déjà : une fonctionnalité bouton poussoir par pièce (« Nettoyer - Cuisine », « Nettoyer - Salon »…). C’est directement utilisable dans les scènes, et ça règle au passage l’affichage des noms puisqu’il y en a plusieurs.

Sinon je pense qu’il faudrait un type de fonctionnalité spécial pour ça dans les aspirateurs. C’est un chantier côté core, et il dépasse largement cette intégration !

Est-ce que vous pourriez créer une demande de fonctionnalité spécifique pour qu’on lance un développement sur ce sujet ? :slight_smile:

Continuez, c’est du très bon boulot :slightly_smiling_face:

Je prend note pour cette partie la merci :slight_smile:

@Lokkye Pull request en attente :slight_smile:

Bonsoir,

Je suis entrain de découvrir l’intégration Roborock, et je vous en remercie.

Toutefois, je me permets quelques questions : je dispose d’un Q7 Max, avec fonction de cartographie et déclaration de zones/pièces, qui n’apparaissent pas dans les propriétés de l’appareil. Du coup, lorsque je sélectionne un nettoyage, c’est parti pour toute la maison :slight_smile:

Il serait aussi pratique de pouvoir disposer d’état du robot (capteurs, brosses, etc …).

A votre disposition si je peux réaliser d’autres cas de tests, ou autres qui pourraient aider à faire évoluer cette intégration :slight_smile:

Belle fin de journée,

Jean

Bonjour j’ai commencé a ajouter les retours des différents capteur.
J’ai aussi ajouté le dock car lui même a des infos en fonction de l’aspirateur.

Pour certaine feature je suis passé par la category unknown et le type unknown
En attendant cette evolution :


Concernant le mapping des pieces @pierre-gilles qu’attend tu exactements ?

Est ce que cette demande peut faire l’affaire ?

Je regarde ça de loin actuellement car je suis en vacances mais je suis super content que ça avance !

Je trouve que cette intégration mériterai de proposer la mise en marche / pause sous forme de bouton plutôt que de select. Qu’en penses tu @spenceur ? (d’ailleurs Pause n’existe pas pour le moment j’ai l’impression)

@guim31 je ne fais qu’aider @Lokkye mais je préfère que ce soit lui qui te réponde :slight_smile:

Petit teasing : :eyes:

J’ai maj l’intégration en 0.12

Elle prend maintenant en charge les consommables du dock et du robot ainsi que la selection de la piece pour le nettoyage

@Lokkye la PR est ici elle t’attend :slight_smile: :

Ça donne envie de s’équiper de ce type d’appareil…

Le truc a toujours été « il n’y a que des appareils en cloud, il faut en choisir un qu’on peut flasher avec Valudeto et que se passe-t-il si ça foire ? »

Désormais, ce ne sont plus que les poils de chien qui me font peur et envie… Vous voyez ce que je veux dire ?

@spenceur Jolie travail, je viens de merger la PR et la version est en cours. Il faut je fasse le meme travaille dans l’integration Xiaomi home maintenant :slight_smile:

@guim31 C’est pas faux! il faut que « je » regarde comment faire

@GBoulvin Fonce, c’est un game changer de mon coté. Il tourne plusieurs fois par semaine et je n’ai plus aucun problème de poils et autre :slight_smile:

@GBoulvin je rajoute moi aussi que je suis équipé depuis plusieurs années (d’abord un roborock S6, puis un s8 Ultra) et il tourne tous les jours, j’ai des enfants et des chats… et c’est VRAIMENT très utile et efficace.