Dragoniacs Posté(e) le 20 avril 2021 Signaler Posté(e) le 20 avril 2021 Ces où dans ton code que tu récupère le Jason pour mettre les labels a jour ?Histoire de faire un print() et comparer nos tables de données...Envoyé de mon RMX1993 en utilisant Tapatalk
Lazer Posté(e) le 20 avril 2021 Auteur Signaler Posté(e) le 20 avril 2021 J'ai le S6 MaxV J'arriverai bien à trouver une façon de rendre le QA suffisament générique, après le risque c'est que pour les prochains modèles l'API change encore, ce qui est possible vu qu'elle n'est pas officiellement documentée. En fait j'ai vraiment besoin du log complet (avec debug=true activé), car je ne sais même pas d'où sort le JSON que tu as partagé page précédente. Il faut que je comprenne la séquence complète de communication (et aussi résoudre le problème du checksum que je t'ai fait commenter en attendant)
LMSI Posté(e) le 20 avril 2021 Signaler Posté(e) le 20 avril 2021 Désolé pour la mise en forme de mes précédents messages... Histoire d'avancer, j'ai mis quelques traces dans le script main et j'ai constaté que son exécution se stoppait à ce niveau d'où la non mise à jour des champs du QA Une piste?
Lazer Posté(e) le 20 avril 2021 Auteur Signaler Posté(e) le 20 avril 2021 "... se stoppait ..." Que veux tu dire par là ? Le QA se crashe ? Que vois-tu dans les logs ? De toute façon si le JSON n'est pas comme attendu, comme dans le cas de @Dragoniacs c'est normal, le problème se situe en amont.
LMSI Posté(e) le 20 avril 2021 Signaler Posté(e) le 20 avril 2021 Par "stoppait", j'entends que le code s'interrompt sans que le QA se crashe.
Lazer Posté(e) le 20 avril 2021 Auteur Signaler Posté(e) le 20 avril 2021 OK... bon toujours aussi étrange.... J'attends les logs détaillés de @Dragoniacs avant de me lancer dans une analyse détaillée
Dragoniacs Posté(e) le 20 avril 2021 Signaler Posté(e) le 20 avril 2021 (modifié) A vrai dire je n'ai pas grand chose dans le debug... Voici la dernière heure, avec le debug = true, et sur le E-Machin. La table que je t'ai donnée, est le résultat d'une recherche du token, via une ancienne application Xiaomi. Il faut que je te retrouve la procédure complète... Cela créait un log à la racine de mon téléphone, et je l'avais soigneusement conservé Log QA Xiaomi.lua Modifié le 20 avril 2021 par Dragoniacs
Dragoniacs Posté(e) le 20 avril 2021 Signaler Posté(e) le 20 avril 2021 Je parlais de mes difficultés et de la résolution ici (lire les 2 ou 3 messages qui se suivent)
Lazer Posté(e) le 20 avril 2021 Auteur Signaler Posté(e) le 20 avril 2021 Merci mais les fichiers txt sont bloqués sur le forum.... si tu peux le remettre avec une extension LUA ça passera En tout cas avec tes dernières explications je commence un peu mieux à comprendre
Lazer Posté(e) le 20 avril 2021 Auteur Signaler Posté(e) le 20 avril 2021 Top merci Effectivement tu as raison le debug ne contient pas grand chose... mais il montre surtout un plantage (invisible) du code LUA Je pense que ce que je t'ai fait commenter ce matin n'était pas la bonne solution. Je te propose, toujours dans le fichier Xiaomi, de modifier la ligne 319 comme suit : if cipher_checksum == sha_hex2bin("ffffffffffffffffffffffffffffffff") or cipher_checksum == sha_hex2bin("00000000000000000000000000000000") then
Dragoniacs Posté(e) le 20 avril 2021 Signaler Posté(e) le 20 avril 2021 (modifié) Modif faite -> erreur : [20.04.2021] [16:47:36] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:fetchMiPacket() : Data ASCII : {"id":8031,"error":{"code":-32600,"message":"Req object invalid."}} [20.04.2021] [16:47:36] [DEBUG] [QA_ROBOROCK_195]: table[2] "error" = table[2] "message" = "Req object invalid." "code" = -32600 "id" = 8031 [20.04.2021] [16:47:36] [ERROR] [QA_ROBOROCK_195]: Xiaomi:command() Invalid result : Error -32600 : Req object invalid. [20.04.2021] [16:47:36] [ERROR] [QA_ROBOROCK_195]: Can't get vacuum status : Error -32600 : Req object invalid. (j'ai retiré la mise en commentaire, mais cela ne change rien) Modifié le 20 avril 2021 par Dragoniacs
Lazer Posté(e) le 20 avril 2021 Auteur Signaler Posté(e) le 20 avril 2021 Bien, on a avancé d'un pas je pense Mais il manque le début du log, donc je ne fait que supposer.... mais on est probablement retombé maintenant dans le problème que tu as mentionné sur l'autre topic, à savoir que ce ne sont pas les mêmes commandes. Est-ce que c'était le get_status ? Je n'ai pas compris ce que tu as dû changer sur l'autre topic pour que ça fonctionne avec ton robot... mais je pense qu'il va falloir faire pareil.
Dragoniacs Posté(e) le 21 avril 2021 Signaler Posté(e) le 21 avril 2021 Voici le debug complet, depuis l'init du QA. log xiaomi new.lua
Lazer Posté(e) le 21 avril 2021 Auteur Signaler Posté(e) le 21 avril 2021 OK merci, par contre je vois que tu as remplacé "get_status" par "miIO.info" dans la fonction Xiaomi:getStatus() d'après le log : [21.04.2021] [14:33:45] [DEBUG] [QA_ROBOROCK_195]: Xiaomi:command("miIO.info", nil, function(), table[2]) Dans cette même fonction, en ligne 528, je te propose de remplacer comme suit, c'est à dire ajouter un tableau vide {} à la place de nil, ce qui permettra d'envoyer params=[] dans la trame vers le robot (en parcourant les forums, j'ai l'impression que c'est ce qu'il faut) : self:command("miIO.info", {}, function(result) return type(result[1]) == "table" end, type(callback) == "table" and {
Dragoniacs Posté(e) le 22 avril 2021 Signaler Posté(e) le 22 avril 2021 Je n'ai pas très bien compris ta remarque, je n'ai rien changé dans le QA si ce ne sont les modifs que tu m'a demandées... J'espère que cela n'induit pas d'erreur dans tes activités de debuggage Voici un nouveau log d'erreur On progresse je pense, il est de plus en plus bavard ! Log_Xiaomi.lua
Lazer Posté(e) le 22 avril 2021 Auteur Signaler Posté(e) le 22 avril 2021 Oui effectivement, j'ai raconté n'importe quoi hier, désolé.... je me suis un peu emmêlé les pinceaux. Une meilleure lecture du log et je comprend mieux. Voici ce que je te propose : En ligne ligne 528 tu vas remettre comme à l'origine : self:command("get_status", nil, function(result) return type(result[1]) == "table" end, type(callback) == "table" and { Et en ligne 805 tu vas modifier comme suit : params = params or {} Et relancer le test.
Dragoniacs Posté(e) le 22 avril 2021 Signaler Posté(e) le 22 avril 2021 C'est de mieux en mieux ! Voilà le résultat : Log_Xiaomi.lua
Lazer Posté(e) le 22 avril 2021 Auteur Signaler Posté(e) le 22 avril 2021 C'est bizarre, on dirait qu'il y a des trames qui se mélangent. On va allonger un peu les délais... dans le fichier main, à la ligne 276, tu peux modifier comme suit : fibaro.setTimeout(10000, function() loop(self, refreshInterval) end) Ainsi le 1er refresh du statut se fera 10 secondes après la découverte de l'aspirateur (au lieu de seulement 1s)
Dragoniacs Posté(e) le 22 avril 2021 Signaler Posté(e) le 22 avril 2021 Voici ce que cela donne. J'ai joué avec les boutons : ON (qui a bien lancé le nettoyage) / OFF (qui n'a pas marché) / Pause (ça fonctionne) / Stop / Retour au dock (qui marche aussi) Log_Xiaomi.lua
Domodial Posté(e) le 22 avril 2021 Signaler Posté(e) le 22 avril 2021 Comme @Dragoniacs j'ai 2 esclaves, mais bon c'est déjà assez la galère sans domotiser le bouzin Un S6 qui fonctionne sur l'appli Roborock et un plus petit nommé Vaccum Mop (une version pas vendu en France) qui lui ne fonctionne que sur l'application Home. Mais quand je vois le truc de ouff que vous devez faire, c'est pire que d'allumer une ampoule chez moi
Lazer Posté(e) le 22 avril 2021 Auteur Signaler Posté(e) le 22 avril 2021 Ouais mais c'est compliqué parce que le développeur a fait n'importe quoi, s'il avait bien fait son boulot dès le 1er coup, ça fonctionnerait tout seul Ou alors vous n'avez qu'à acheter le même modèle que le miens @Dragoniacs Tu peux essayer de remplacer les 2 fichiers main et Xiaomi par les fichiers ci-joints STP ? ça ne sera surement pas 100% fonctionnel, mais ça devrait aller mieux...enfin j'espère ! Xiaomi Roborock Vacuum v2.01.lua Library - Xiaomi v1.01.lua
Dragoniacs Posté(e) le 23 avril 2021 Signaler Posté(e) le 23 avril 2021 (modifié) YOUHOU ! Victoire, cela fonctionne, j'ai toutes les infos qui remontent Je vais tester avec mon S5 maintenant .... EDIT : c'est bon pour le S5 aussi ! Modifié le 23 avril 2021 par Dragoniacs 1
Lazer Posté(e) le 23 avril 2021 Auteur Signaler Posté(e) le 23 avril 2021 Cool Tu pourrais m'envoyer le log détaillé depuis l'initialisation STP ? Dans cette versions spéciale, j'ai mis un getFeatures, je veux voir quelles sont les valeurs, l'idée à terme ça serait, si possible, de faire un QA qui s'adapte aux capacités de l'aspirateur (serpillère, etc)
Dragoniacs Posté(e) le 23 avril 2021 Signaler Posté(e) le 23 avril 2021 Voilà, pour les 2 esclaves LOG E2.lua LOG S5.lua
Messages recommandés