Aller au contenu
Lazer

Quick App - Xiaomi Roborock Vacuum

Recommended Posts

Xiaomi Roborock Vacuum

Version 2.00

 

 

Présentation : 

 

Ce QuickApp permet de piloter les robots aspirateurs Xiaomi / Roborock

  

large.Screenshot-HC3-QuickApp-Xiaomi-Roborock-Vacuum.png.2103fcf3ebf8ec2eed00d6885a5daaa8.png

 

Le mode est de type "Binary switch", c'est à dire qu'il est possible de lancer/stopper le nettoyage simplement en cliquant sur son icône (ou via les actions turnOn / turnOff du module)

Autre intérêt, la visualisation immédiate de son activité / inactivité, particulièrement utile dans les scénarios de détection de mouvement (c'est à dire que tout mouvement dans une pièce peut être ignoré dans vos scénarios si le robot est en cours de mouvement, information qui se trouve dans sa propriété value)

Remarque : le turnOff stoppe immédiatement le robot, c'est à dire qu'il ne rentre pas tout seul à la base, pour cela il faut cliquer sur le bouton dédié du QuickApp (ou appeler la méthode correspondante, voir plus loin dans ce tutoriel)

 

large.Screenshot-HC3-QuickApp-Xiaomi-Roborock-Vacuum-View.png.356db1cd27aa61d83ef52068b33d7924.png

 

Les actions suivantes sont possible dans la version actuelle :

  • Démarrage du nettoyage
  • Pause
  • Arrêt du nettoyage
  • Retour à la station
  • Trouvez-moi
  • Réglage des 4 niveaux de puissance d'aspiration
  • Réglage des 4 niveaux d'eau pour la serpillère

A noter que le QuickApp est multi-langue, c'est à dire que son affichage (labels et boutons) change selon le langage paramétré dans la box HC3. Actuellement l'anglais et le français sont supportés (l'anglais est la langue par défaut si la langue est inconnue)

 

Je l'ai testé avec le Roborock S6 MaxV, je ne sais pas comment le QuickApp se comportera avec les modèles moins évolués, j'attends vos retours à ce sujet :)

 

Merci à @ADN182 pour l'inspiration et le module virtuel original pour HC2, même si ce QuickApp est une réécriture intégrale du code LUA :

 

 

 

Pré-requis :

 

Il faut obtenir le Token de votre aspirateur.

Pour cela il est impératif que le robot soit géré avec l'application Xiaomi Home, car cela ne fonctionnera pas avec l'application Roborock :

large.Logo-Xiaomi-Home.png.055d91c361ba260888ecc01ec05141ee.png

 

La méthode pour récupérer le token varie selon l'époque (Xiaomi ayant renforcé la sécurité) et la plateforme utilisée, je vous donne quelques pistes, vous choisissez celle qui vous convient :

Personnellement j'ai procédé de la façon suivante :

 

 

Installation du QuickApp :

 

Importer le QuickApp (fichier fqa) de façon habituelle sur la box Home Center 3, puis changer les paramètres suivants dans l'onglet Variables :

 

large.Screenshot-HC3-QuickApp-Xiaomi-Roborock-Vacuum-Variables.png.0cd06e77561fe11d0e87ed0fd3e1b3d1.png

 

  • Address : adresse IP du robot aspirateur, par exemple : 192.168.1.1
  • Port : port de communication, normalement : 54321
  • Token : clé récupérée précédemment, par exemple : 0123456789abcdef0123456789abcdef
  • Refresh : intervalle de rafraichissement des informations en secondes, par exemple : 60 (il n'est pas forcément judicieux de baisser cette valeur, j'ai constaté que l'occupation CPU de la HC3 augmentait très significativement avec un intervalle de 10 seconde, à cause de la puissance requise pour les opérations de chiffrement/déchiffrement des trames échangées avec le robot)

  

 

Icônes :

Je vous propose les icônes suivantes, sinon d'autres sont disponibles sur le topic du VD pour HC2.

  • large.Xiaomi-Roborock-S6-MaxV-ON.png.17f6ff29442369656b43b1d6041f235c.png ON
  • large.Xiaomi-Roborock-S6-MaxV-OFF.png.50e78c971d340ee615ca5c8b099cbc4a.png OFF

 

 

Utilisation :

 

  • Depuis l'interface Web ou l'application mobile :
    • Un clic sur l'icône du module permet de démarrer le nettoyage ou de l'arrêter immédiatement (pas de retour à la station)
    • Un clic sur les boutons du QuickApp permet de piloter le robot
    • Glisser le slider permet de régler le volume sonore des notifications
  • Dans le code LUA d'un QuickApp ou d'une Scène, utiliser la fonction fibaro.call() avec l'une des syntaxes suivantes :
    • fibaro.call(123, "turnOn")                     -- Démarre le nettoyage
    • fibaro.call(123, "clean")                      -- Démarre le nettoyage
    • fibaro.call(123, "turnOff")                    -- Arrête immédiatement le nettoyage et laisse le robot à la position en cours
    • fibaro.call(123, "stop")                       -- Arrête immédiatement le nettoyage et laisse le robot à la position en cours
    • fibaro.call(123, "pause")                      -- Met le nettoyage en pause
    • fibaro.call(123, "dock")                       -- Arrête immédiatement le nettoyage et retourne à la station
    • fibaro.call(123, "findRobot")                  -- Trouve le robot
    • fibaro.call(123, "setFanSilent")               -- Règle la puissance d'aspiration sur Silencieux
    • fibaro.call(123, "setFanNormal")               -- Règle la puissance d'aspiration sur Normal
    • fibaro.call(123, "setFanTurbo")                -- Règle la puissance d'aspiration sur Turbo
    • fibaro.call(123, "setFanMax")                  -- Règle la puissance d'aspiration sur Maximum
    • fibaro.call(123, "setWaterOff")                -- Règle la quantité d'eau de la serpillère sur Désactivé
    • fibaro.call(123, "setWaterLow")                -- Règle la quantité d'eau de la serpillère sur Faible
    • fibaro.call(123, "setWaterMedium")             -- Règle la quantité d'eau de la serpillère sur Moyen
    • fibaro.call(123, "setWaterHigh")               -- Règle la quantité d'eau de la serpillère sur Élevé
    • fibaro.call(123, "setVolume", 100)             -- Règle le volume audio des notifications sonores au niveau spécifié (0 à 100)
    • fibaro.call(123, "testVolume")                 -- Teste le niveau audio des notifications sonores
  • Les propriétés suivantes peuvent être lues dans le JSON du module :
    • value        : boolean : true|false            -- Statut de mouvement/arrêt du robot
    • batteryLevel : integer : 0-100                 -- Niveau de batterie en %
    • model        : string  : "..."                 -- Modèle du robot
    • dead         : boolean : true|false            -- Statut de la connexion réseau avec le robot

Évidemment tous les Labels peuvent également être lus et exploités.

 

Exemple d'utilisation basique avec GEA :

GEA.add({"Profile", "Away"}, 5*60, "Plus personne à la maison depuis 5 minutes, lancement du nettoyage", {"TurnOn", id["XIAOMI"]})
GEA.add({{"Profile", "Home"}, {"(Value)", id["XIAOMI"], true}}, -1, "Voilà le chef, vite retour à la station", {"QuickApp", id["XIAOMI"], "dock"})

 

 

Changelog :

  • v2.00 : Avril 2021
    • Version initiale
  • v2.01 : Avril 2021
    • Ajout du support des modèles plus anciens

 

 

Téléchargement :

 

Modifié par Lazer
  • Like 7

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellent !
Merci, je vais pouvoir migrer mes robots sur la HC3 !

Envoyé de mon RMX1993 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

TES ? :15:

 

C'est de l'esclavage :2:

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, 2 esclaves motorisés, 1 par étage car ils passent pas les escaliers

Envoyé de mon RMX1993 en utilisant Tapatalk

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Quelle bande de feignasses en plus :2:

 

Tu as quels modèles déjà ?

 

Tu me diras comment ils se comportent, j'ai quelques doutes sur la gestion des pièces et de la serpillère.

D'ailleurs je n'ai justement volontairement pas encore implémenté le nettoyage de tel ou tel pièce, j'attends d'avoir des cobayes :) car tous les robots ne savent pas cartographier la maison. De mémoire @ADN182 faisait de la programmation de zone, c'était un peu lourd...

Et puis en général, on veut nettoyer toute la maison quand on s'absente, donc le nettoyage par pièce est peu utile je trouve (sauf si on est là et qu'on veut nettoyer spécifiquement une pièce car on vient de la salir par exemple)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai un S5 pour le séjour et un E-jesaisplusquoi pour les chambres.
Le S5 garde la cartographie de la pièce en mémoire donc je m'étais fait des zones pour passer la serpillière que dans la cuisine (et pas mouiller le tapis du salon).
Le E-machin est surtout pas cher et comme j'ai pas besoin d'une grosse batterie ni d'un truc super intelligent pour les chambres, ça me convient.

Envoyé de mon RMX1993 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

OK oui effectivement, les zones d'exclusion.

Mais normalement pas besoin de les définir sur la HC3, lorsque tu vas demander le nettoyage, c'est le robot qui devrait gérer et ne pas mouiller le tapis du salon.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je n'ai pas trouvé cette option sur mon S5. Je crois que ce n'est disponible que sur la génération ultérieure.

Envoyé de mon RMX1993 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne comprends pas du coup, ça veut dire que tu gères les zones d'exclusion avec le module virtuel sur HC2 ?
Précise comment tu fais, pour que je vois ce qui est nécessaire d'ajouter sur le QA.

Et aussi comment se comporte ton S5 et ton E-machin ® avec le QA actuel, voir s'il n'y a pas de bugs.

Partager ce message


Lien à poster
Partager sur d’autres sites

Sur le VD d'origine, tu peux définir un bouton par zone a nettoyer. Tu y précise les coordonnées pour tracer une zone (2 repères en x,y)

Envoyé de mon RMX1993 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

D'accord, c'est donc ça que tu utilises.

Il faudra que je l'ajoute... J'attends donc ton retour sur le fonctionnement actuel du QA avant de faire une nouvelle version

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour la création de ce nouveau QA que je me suis empressé de mettre en place sur mon HC3

Ca communique, l'aspirateur est déclenché mais aucun des champs du QA est renseigné

Y a-t-il quelque chose de spécifique à faire ou pas?

Merci de votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai tenté d'installer mon E-Machin.... ça marche pas.... 

Pourtant cela fonctionnait avec le VD sur la HC2.

Le tocken est bon, je l'ai re-extrait pour être sûre.

 

[20.04.2021] [10:16:23] [TRACE] [QA_ROBOROCK_195]: QuickApp Xiaomi Vacuum - Initialization

[20.04.2021] [10:16:23] [TRACE] [QA_ROBOROCK_195]:

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:configure("192.168.1.32", 54321, "828278c0b747c289c706b4a854792b9d")

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi library successfully initialized

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Refresh interval : 60 seconds

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi URL : udp://192.168.1.32:54321

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:getModel(table[2])

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:command("miIO.info", nil, function(), table[2])

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:transmit() : sendTo() success

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:receive() : receive() success

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:receive() : data HEX : 21 31 00 20 00 00 00 00 10 17 2f 7a 00 00 5f 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:command() : success() Hello response received

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket("!1 /z_r")

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Header Magic number : 21 31

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Header Packet length : 00 20 = 32

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Header Unknown : 00 00 00 00[

20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Header Device ID : 10 17 2f 7a

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Header Stamp : 00 00 5f 72 = 24434

[20.04.2021] [10:16:23] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Header MD5 checksum : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[20.04.2021] [10:16:23] [ERROR] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : MD5 checksum mismatch : 0b e4 c9 a4 49 9d 53 20 42 6d 56 cc 69 c3 42 c2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[20.04.2021] [10:16:23] [ERROR] [QA_ROBOROCK_195]: Xiaomi:command() : MD5 checksum mismatch

[20.04.2021] [10:16:23] [ERROR] [QA_ROBOROCK_195]: Can't get vacuum model : MD5 checksum mismatch

[20.04.2021] [10:16:23] [TRACE] [QA_ROBOROCK_195]: Update label "LabelModel" to "???"

[20.04.2021] [10:16:23] [TRACE] [QA_ROBOROCK_195]: Update label "LabelDebug" to " MD5 checksum mismatch "

[20.04.2021] [10:16:24] [DEBUG] [QA_ROBOROCK_195]: loop(60)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@LMSI non rien à faire de spécifique, mais il va falloir m'en dire plus, je ne peux pas deviner.

Comme d'habitude, commencer par les logs.

Sinon tu as quel modèle d'aspirateur ? Peut être un qui n'est pas supporté.

 

@Dragoniacs le VD était beaucoup plus permissif dans le protocole de communication, et ne vérifiait pas la validité des trames retournées par le robot.

J'ai renforcé cela, mais peut être un peu trop du coup... dans l'immédiat, tu peux désactiver la vérification du checksum en commentant le bloc qui débute en ligne 329 du fichier Xiaomi.

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 7 minutes, Lazer a dit :

@LMSI non rien à faire de spécifique, mais il va falloir m'en dire plus, je ne peux pas deviner.

Comme d'habitude, commencer par les logs.

Sinon tu as quel modèle d'aspirateur ? Peut être un qui n'est pas supporté.

 

@Dragoniacs le VD était beaucoup plus permissif dans le protocole de communication, et ne vérifiait pas la validité des trames retournées par le robot.

J'ai renforcé cela, mais peut être un peu trop du coup... dans l'immédiat, tu peux désactiver la vérification du checksum en commentant le bloc qui débute en ligne 329 du fichier Xiaomi.

Voici une copie d'écran de mon QA

image.png.ac7fe300179b1aa2ae4e0d97f0979c93.png

Les LOGs, dans sa version simplifiée, sont les suivants:

image.png.2dfb805e75a78940a047110ea2c58428.png

A passant la variable debug à TRUE, rien ne montre que cela se passe mal...

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 7 minutes, LMSI a dit :

Voici une copie d'écran de mon QA

image.png.ac7fe300179b1aa2ae4e0d97f0979c93.png

Les LOGs, dans sa version simplifiée, sont les suivants:

image.png.2dfb805e75a78940a047110ea2c58428.png

A passant la variable debug à TRUE, rien ne montre que cela se passe mal...

 

En rajoutant des traces intermédiaires, la QA détecte bien que language="fr" mais n'en fait rien sur l'affichage des intitulés. Ensuite, lorsque l'aspirateur fonctionne, ces mêmes champs ne sont pas renseignés

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux STP arrêter de citer systématiquement le message précédent le tient, y compris ton propre message ?

 

Je te laisse faire le ménage

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, je n'ai plus d'erreur, mais je n'ai pas d'info dans le QA....

Je crois que les données ne sont pas tout à fait pareilles dans la table de retour. Je peux l'afficher depuis quelle ligne dans ton code ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Étrange... et ça te fait pareil avec tes 2 aspirateurs ?

 

Je ne suis pas certain de bien comprendre ta question, mais tu peux m'envoyer le log complet (en fichier attaché si c'est trop long pour être copier/collé dans un message, car le QA est assez bavard avec le debug activé)

Partager ce message


Lien à poster
Partager sur d’autres sites

Il n'y a pas grand chose dans mon debug.

C'est con, j'ai supprimé le VD de ma HC2, pensant que c'était ça le bug.... Donc je ne peux plus retrouver ce que j'avais modifié. Mais je suis quasi-persuadée que les champs de valeurs n'avaint pas tout à fait le même nom dans la table de données, et j'ai du modifier un peu le VD...

Je recherche ça.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah j'ai retrouvé !

 

Regarde ça : la table de data de mon S-Machin =

{"did":"82858258","token":"644568436d304b4e6f6e676176516c6e","longitude":"2.16237000","latitude":"48.90454700","name":"Mimi","pid":"0","localip":"192.168.1.31","mac":"78:11:DC:ED:1B:CD","ssid":"SFR_B518","bssid":"E4:5D:51:CF:B5:1E","parent_id":"","parent_model":"","show_mode":1,"model":"roborock.vacuum.s5","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Entièrement chargée","extra":{"isSetPincode":0,"fw_version":"3.5.7_002008","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"consumable_item_prop_cache":"{\"filter_element_work_time\":\"0\",\"filter_work_time\":\"101132\",\"main_brush_work_time\":\"644129\",\"sensor_dirty_time\":\"92762\",\"side_brush_work_time\":\"281100\"}","event.back_to_dock":"{\"timestamp\":1604153658,\"value\":[0]}","event.back_to_dock_nearby":"{\"timestamp\":1590769938,\"value\":[0]}","event.back_to_dock_no_power":"{\"timestamp\":1546068771,\"value\":[0]}","event.back_to_origin_fail":"{\"timestamp\":1592409480,\"value\":[0]}","event.bin_full":"{\"timestamp\":1597939466,\"value\":[0]}","event.clean_complete":"{\"timestamp\":1604153631,\"value\":[0]}","event.consume_material_notify":"{\"timestamp\":1599410105,\"value\":[1]}","event.error_code":"{\"timestamp\":1604153658,\"value\":[0]}","event.fan_power_reduced":"{\"timestamp\":1556613129,\"value\":[0]}","event.goto_target_succ":"{\"timestamp\":1604065185,\"value\":[0]}","event.relocate_failed_back":"{\"timestamp\":1580149443,\"value\":[0]}","event.segment_map_done":"{\"timestamp\":1604153663,\"value\":[0]}","event.status":"{\"timestamp\":1604156752,\"value\":[{\"battery\":100,\"clean_area\":34882500,\"clean_time\":2176,\"dnd_enabled\":0,\"error_code\":0,\"fan_power\":102,\"in_cleaning\":0,\"in_fresh_state\":1,\"in_returning\":0,\"lab_status\":1,\"lock_status\":0,\"map_present\":1,\"map_status\":3,\"msg_seq\":1896,\"msg_ver\":3,\"state\":8,\"water_box_status\":0}]}","event.target_not_reachable":"{\"timestamp\":1600326124,\"value\":[0]}","event.zoned_clean_succ":"{\"timestamp\":1604065025,\"value\":[0]}","prop.battery":"100","prop.fan_power":"102","prop.filter_life":"82","prop.main_brush_life":"41","prop.ota_progress":"100","prop.ota_progress_ts":"1584215068","prop.ota_state":"idle","prop.ota_state_ts":"1604283575","prop.s_mixxx":"{\"StorageKeys_UserSelectedCountryServerCode_82858258_1815300203_MI_3\":\"de\",\"StorageKeys_UserSelectedCountryServerCode_82858258_0_MI_3\":\"de\"}","prop.s_push_switch_1815300203":"0","prop.scene_check_pre_battery":"100","prop.side_brush_life":"61","prop.state":"8"},"uid":1815300203,"pd_id":577,"password":"","p2p_id":"","rssi":-59,"family_id":0,"reset_flag":0}],"virtualModels":[{"model":"zhimi.airpurifier.m1","state":0,"url":""},{"model":"yunmi.waterpurifier.v2","state":0,"url":""},{"model":"zimi.powerstrip.v2","state":0,"url":""}]}}
 

La table de mon E-Machin :

{"did":"269954938","token":"828278c0b747c289c706b4a854792b9d","longitude":"0.00000000","latitude":"0.00000000","name":"Momo","pid":"0","localip":"192.168.1.32","mac":"50:EC:50:7C:CF:0A","ssid":"SFR_B518","bssid":"E4:5D:51:CF:B5:1E","parent_id":"","parent_model":"","show_mode":1,"model":"roborock.vacuum.e2","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Entièrement chargée","extra":{"isSetPincode":0,"fw_version":"1.3.0_0752","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"consumable_item_prop_cache":"{\"filter_work_time\":\"6140\",\"main_brush_work_time\":\"6140\",\"sensor_dirty_time\":\"6140\",\"side_brush_work_time\":\"6140\"}","event.back_to_dock":"{\"timestamp\":1604152619,\"value\":[]}","event.clean_complete":"{\"timestamp\":1604152586,\"value\":[]}","event.status":"{\"timestamp\":1604284357,\"value\":[{\"battery\":100,\"state\":8}]}","miot_bind_time":"1604051080","prop.ota_progress":"60","prop.ota_progress_ts":"1604054993","prop.ota_state":"idle","prop.ota_state_ts":"1604284167","prop.s_mixxx":"{\"StorageKeys_UserSelectedCountryServerCode_269954938_1815300203_MI_3\":\"de\"}","prop.s_push_switch_1815300203":"0"},"uid":1815300203,"pd_id":599,"password":"","p2p_id":"","rssi":-52,"family_id":0,"reset_flag":0},

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai testé mon S5. Il répond aux commandes, mais effectivement, le QA est vide de données.... Pas d'info mis à part son modèle.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est fou ça, le résultat n'a rien à voir, comme si l'API était différente.

 

Je suis quand même preneur des logs complets de tes 2 robots, car je ne comprend pas d'où ça sort tout ça...

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est quoi que tu as comme modèle@Lazer ?
LMSI semble aussi avoir un S5, comme moi, et pas d'information qui remonte dans le QA, comme moi.
Je crains qu'il n'y ait trop de différence d'un robot a l'autre, et si c'est le cas on est mal...

Envoyé de mon RMX1993 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

×