Xiaomihome - erreur "tuple index out of range" => erreur de Token

Bonsoir,
depuis la dernière màj du plugin, j’ai dans mes logs une erreur qui apparaît toutes les 5min lors du refresh de mon aspirateur :

[2020-02-16 16:20:06][DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[2020-02-16 16:20:06][DEBUG] : Received command from jeedom : refresh
[2020-02-16 16:20:06][DEBUG] : Refreshing : vacuum
[2020-02-16 16:20:06][DEBUG] : {“id”: 1449, “method”: “get_status”}
[2020-02-16 16:20:11][DEBUG] : {u’short_id’: u’0’, u’cmd’: u’heartbeat’, u’token’: u’m9QAqEK0Efm9JwhU’, u’sid’: u’286c078592ed’, u’model’: u’gateway’, u’data’: u’{“ip”:“192.168.0.102”}’}
[2020-02-16 16:20:11][DEBUG] : Send to jeedom : {u’devices’: {u’aquara_286c078592ed’: {‘short_id’: u’0’, ‘cmd’: u’heartbeat’, ‘source’: ‘192.168.0.102’, ‘token’: u’m9QAqEK0Efm9JwhU’, ‘sid’: u’286c078592ed’, ‘model’: u’gateway’, ‘data’: {u’ip’: u’192.168.0.102’}}}}
[2020-02-16 16:20:11][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2020-02-16 16:20:11][DEBUG] : [http://127.0.0.1:80](http://127.0.0.1/) “POST /plugins/xiaomihome/core/php/jeeXiaomiHome.php?apikey=fnhjfzkslegfvjklsjgklgjksgjksedgjkjgkejgkerk HTTP/1.1” 200 0
[2020-02-16 16:20:11][ERROR] : Exception on socket : tuple index out of range

Je pense que cela fait suite au support ajouté du dernier robot vaccum Viomi.
Cdt

Pas d’erreur chez moi avec ce robot.
D’où tu fais cette conclusion ? Le viomi n’est même pas le seul modèle ajouté

Je constate cette erreur depuis la dernière màj du plugin du 14/02, pas avant.
Je ne tire pas de conclusion, je constate juste.
As-tu besoin d’autres infos pour creuser ?
Cette erreur pourrait venir d’un nombre de champs supérieur ou inférieur au modèle de la table où on veut l’insérer.

Moi j’ai le même souci avec un roborock-v2, et également depuis la dernière mise à jour.
version plugin du 2020-03-04 02:28:32, jeedom version 3.3.24.

[2020-03-05 07:02:05][INFO] : Start xiaomihomed
[2020-03-05 07:02:05][INFO] : Log level : info
[2020-03-05 07:02:05][INFO] : Socket port : 55019
[2020-03-05 07:02:05][INFO] : Socket host : 127.0.0.1
[2020-03-05 07:02:05][INFO] : PID file : /tmp/jeedom/xiaomihome/deamon.pid
[2020-03-05 07:02:05][INFO] : Apikey : Xl72A1XWtaaO2KL9DW5yNVshIM3J1c6s
[2020-03-05 07:02:05][INFO] : Callback : http://127.0.0.1:80/plugins/xiaomihome/core/php/jeeXiaomiHome.php
[2020-03-05 07:02:05][INFO] : Cycle : 0.05
[2020-03-05 07:02:05][INFO] : Start listening…
[2020-03-05 07:05:09][ERROR] : Exception on socket : tuple index out of range
[2020-03-05 07:10:08][ERROR] : Exception on socket : tuple index out of range
(…)
Ensuite en debug :
[2020-03-08 20:55:03][DEBUG] : Rafraîchissement de XiaomiWifi : RoborockS50
[2020-03-08 20:55:08][ERROR] : Exception on socket : tuple index out of range
[2020-03-08 20:55:09][DEBUG] : Status Array ( [ip] => 192.168.10.76 [model] => vacuum2 [get_status] => Array ( [in_returning] => 0 [water_box_status] => 0 [map_status] => 3 [msg_ver] => 3 [clean_area] => 0 [battery] => 100 [error_code] => Tout va bien [dnd_enabled] => 0 [fan_power] => 102 [in_fresh_state] => 1 [state] => En charge [lab_status] => 1 [map_present] => 1 [in_cleaning] => 0 [clean_time] => 0:00:37s [msg_seq] => 236 [lock_status] => 0 ) [get_consumable] => Array ( [sensor_dirty_time] => 276 [main_brush_work_time] => 171654 [filter_element_work_time] => 0 [side_brush_work_time] => 171654 [filter_work_time] => 171654 ) )

C’est pas gravissime, mais pour garder une trace.

Et en follow-up, suite à la mise à jour du 10 mars, d’autres logs DEBUG, même message d’erreur :

[2020-03-11 07:20:09][ERROR] : Exception on socket : tuple index out of range
[2020-03-11 07:20:09][DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[2020-03-11 07:20:09][DEBUG] : Received command from jeedom : refresh
[2020-03-11 07:20:09][DEBUG] : Refreshing : vacuum2
[2020-03-11 07:20:09][DEBUG] : {« id »: 7387, « method »: « get_status »}
[2020-03-11 07:20:09][DEBUG] : {« result »:[{« msg_ver »:3,« msg_seq »:64,« state »:8,« battery »:100,« clean_time »:37,« clean_area »:710000,« error_code »:0,« map_present »:1,« in_cleaning »:0,« in_returning »:0,« in_fresh_state »:1,« lab_status »:1,« water_box_status »:0,« fan_power »:102,« dnd_enabled »:1,« map_status »:3,« lock_status »:0}],« id »:7387}
[2020-03-11 07:20:09][DEBUG] : {u’in_returning’: 0, u’water_box_status’: 0, u’map_status’: 3, u’msg_ver’: 3, u’clean_area’: 710000, u’battery’: 100, u’error_code’: 0, u’dnd_enabled’: 1, u’fan_power’: 102, u’in_fresh_state’: 1, u’state’: 8, u’lab_status’: 1, u’map_present’: 1, u’in_cleaning’: 0, u’clean_time’: 37, u’msg_seq’: 64, u’lock_status’: 0}
[2020-03-11 07:20:09][DEBUG] : {« id »: 34413, « method »: « get_consumable »}
[2020-03-11 07:20:09][DEBUG] : {« result »:[{« main_brush_work_time »:171654,« side_brush_work_time »:171654,« filter_work_time »:171654,« filter_element_work_time »:0,« sensor_dirty_time »:276}],« id »:34413}
[2020-03-11 07:20:09][DEBUG] : {u’sensor_dirty_time’: 276, u’main_brush_work_time’: 171654, u’filter_element_work_time’: 0, u’side_brush_work_time’: 171654, u’filter_work_time’: 171654}
[2020-03-11 07:20:09][DEBUG] : Send to jeedom : {u’devices’: {u’wifi_192.168.10.76’: {‹ ip ›: u’192.168.10.76’, ‹ model ›: u’vacuum2’, u’get_status’: {u’in_returning’: 0, u’water_box_status’: 0, u’map_status’: 3, u’msg_ver’: 3, u’clean_area’: 0, u’battery’: 100, u’error_code’: ‹ Tout va bien ›, u’dnd_enabled’: 1, u’fan_power’: 102, u’in_fresh_state’: 1, u’state’: ‹ En charge ›, u’lab_status’: 1, u’map_present’: 1, u’in_cleaning’: 0, u’clean_time’: ‹ 0:00:37s ›, u’msg_seq’: 64, u’lock_status’: 0}, u’get_consumable’: {u’sensor_dirty_time’: 276, u’main_brush_work_time’: 171654, u’filter_element_work_time’: 0, u’side_brush_work_time’: 171654, u’filter_work_time’: 171654}}}}
[2020-03-11 07:20:09][DEBUG] : Starting new HTTP connection (1): 127.0.0.1

Ouf ! Ca me rassure un peu de pas être le seul…
Je pense que toi aussi les infos de ton robot ne se mettent plus à jour à cause de cette erreur ?

Pour être honnête, je commande le robot plutôt à la main en ce moment, d’autant que l’application Xiaomi est assez bien faite. Et malheureusement je ne peux pas lancer le robot sans mettre des chaises sur des tables ou autre… :slight_smile:

J’ai lu sur d’autres postes qu’il y avait potentiellement eu un firmware update du robot qui avait modifié la clé/token, donc je me demande si celle que j’ai est toujours ok. J’ai l’impression que oui car les logs debug semblent continuer à remonter des infos. Mais il faut que je passe plus de temps dessus. Je te tiens au courant. En tout cas clairement je n’avais pas cette erreur avant février 2020.

Edit :
Salut Ultraboss,
j’ai contrôlé ce soir. Le roborock S50 continue à me remonter son état et je peux encore le commander à distance.
Donc malgré l’erreur des « tuples », ça n’a pas l’air d’impacter le fonctionnel.
Désolé ça t’aide pas !

Bonjour,
je constate toujours le problème, même après une install fraîche.
OS : debian buster (précédent jessie)
Jeedom : 3.3.39
Plugin Xiaomihome : 2020-03-10 16:22:02
Mon vaccum V1 ne se met plus à jour…

Qu’aurais-tu besoin d’autre @lunarok comme infos stp ?

J’ai tenté de recréer l’équipement associé à mon vaccum robot, mais maintenant j’ai d’autres erreurs à chaque fois que je tente de le refresh :

[2020-03-28 15:31:35][DEBUG] : Received command from jeedom : refresh
[2020-03-28 15:31:35][DEBUG] : Refreshing : vacuum
[2020-03-28 15:31:40][DEBUG] : {u'short_id': u'0', u'cmd': u'heartbeat', u'token': u'BLABLABLA', u'sid': u'286c078592ed', u'model': u'gateway', u'data': u'{"ip":"192.168.0.102"}'}
[2020-03-28 15:31:40][DEBUG] : Send to jeedom : {u'devices': {u'aquara_286c078592ed': {'short_id': u'0', 'cmd': u'heartbeat', 'source': '192.168.0.102', 'token': uBLABLABLABLA', 'sid': u'286c078592ed', 'model': u'gateway', 'data': {u'ip': u'192.168.0.102'}}}}
[2020-03-28 15:31:40][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2020-03-28 15:31:40][DEBUG] : http://127.0.0.1:80 "POST /plugins/xiaomihome/core/php/jeeXiaomiHome.php?apikey=BLABLALBALBLABLA HTTP/1.1" 200 0
[2020-03-28 15:31:40][DEBUG] : Timeout
[2020-03-28 15:31:40][ERROR] : Exception on socket : local variable 'd' referenced before assignment

EDIT : OK après avoir refait une « recherche des infos », mais retour de l’erreur tuple…

Je viens de revérifier le token avec une vielle version de mi home + sqlite
Mon token avait bien changé quand j’ai dû changer le wifi sur mon aspi.
Dans ce cas, pourquoi le plugin n’indique pas une erreur de token ??

Voir aussi ici : Tout semble bon... mais (Sinon ce ne serait pas drôle) - #30 par akenad

akenad :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.