Problème de lock compte Gardena / Husqvarna

Hello a tous,

J’ai installé le plugin Gardena depuis 3 petites semaines et je me rends compte qu’assez régulièrement, il semblerait que le refresh du token d’accès a l’API pose problème. Je m’explique:
Une fois tous les 2/3 jours, le deamon se coupe, si l’on active pas le redémarrage automatique du daemon, un petit coup de restart et c’est reparti :slight_smile:

Par contre, j’ai voulu « automatiser » le restart (120 min de délai), cela fonctionnait, mais cela fait 2 fois que je me retrouve avec un compte locké chez Husqvarna :slight_smile:

Premiere fois, je me suis dit: pas grave j’attends, et effectivement c’est revenu au bout de quelque temps. Par contre cela fait la deuxième fois et j’ai l’impression que le « lock » du compte est lié a une coupure internet. Ce soir, j’ai eu un renouvellement d’IP a 17h49 (monitoré), et hasard (je ne crois pas) j’ai perdu l’authentification:

raise MissingTokenError(description="Missing access token parameter.")
oauthlib.oauth2.rfc6749.errors.MissingTokenError: (missing_token) Missing access token parameter.
[2022-05-18 17:49:43]ERROR : Websocket error: ping/pong timed out
[2022-05-18 17:49:44]ERROR : Websocket error: ping/pong timed out
[2022-05-18 17:49:44]ERROR : Websocket error: ping/pong timed out

N’ayant pas vu cela initialement, je redémarre a la main le daemon et voila le résultat:

[2022-05-18 19:20:08]INFO : Starting daemon
[2022-05-18 19:20:08]INFO : Log level: warning
[2022-05-18 19:20:09]ERROR : Fatal error: (missing_token) Missing access token parameter.

Je viens de creuser un peu: je me connecte sur le site web de l’API: impossible, et je viens de tester en CLI :

curl -X POST -d "grant_type=password&client_id=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx&username=xxxxx@xxx.com&password=xxxxxxxx" https://api.authentication.husqvarnagroup.dev/v1/oauth2/token
{"errors":[{"code":"too.many.failed.login.attempts","status":429,"title":"Too many failed login attempts for this account, please try again later","detail":"Too many failed login attempts for user xxx@xxx.com"}]}

Donc je me dis que le redémarrage (ou la coupure d’internet) a généré un flood de commande sur l’API…
Est ce que cela parle a quelqu’un? Pas facile je pense mais je tente :smiley:

Merci d’avance et merci pour le boulot :wink:

Salut,

Je note pour y regarder asap, j’espère avant fin de semaine.

Yep pas de soucis, en attendant je désactive le mode automatique et j’essaie de trouver des liens de cause a effet :wink:

Le compte est débloqué depuis tout a l’heure, je ne sais pas combien de temps Husqvarna / Gardena bloque les comptes. J’ai lancé l’arrosage a la main avec l’appli ce soir :wink:

Tiens moi au courant pas de stress :wink:

C’est quand même curieux ce compte bloqué.

J’ai parfois la connexion qui saute mais c’est très rare. Et je ne comprends pas trop comment le plug-in pourrait faire des tentatives incorrectes, les infos d’identification il les a et elles sont correctes.

Ou alors c’est un ancien token qu’il aurait gardé mais qui serait expiré ?
Bref, faut que j’analyse ça.

Je pense que c’est lié a l’ancien token.
Ca a recoupé cette nuit et voila le status des logs ce matin:

[2022-05-19 03:14:50]WARNING : Retrying (Retry(total=None, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /v1/token/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
Fatal Python error: Cannot recover from MemoryErrors while normalizing exceptions.
Thread 0x909bd440 (most recent call first):

Ca semble vraiment lié a la coupure du net :slight_smile:

Ce log ci était avec quel loglevel? warning ou error je suppose?

Il faudrait un peu plus de vue sur ce qu’il y a avant et après, en principe il y aurait du avoir un log en INFO disant qu’il redémarre le websocket.

Pareil ici, loglevel warning ca ne me donne pas asse d’info.
Peux-tu passer en INFO (pas DEBUG, il y aura trop) et on attend la prochaine coupure

Hello,

Ca marche je viens de relancer le démon en debug :wink:

Et je viens de redémarrer la box et problème reproduit :slight_smile:

Je te mets les logs ici :wink:
gardena_daemon.log (35,7 Ko)

Tiens moi au courant

Donc comme je disais, en mode info :wink:

es-tu certain que le même clientid n’est pas utilisé ailleurs?
autre plugin, autre jeedom … ?

Ah merde :slight_smile: j’ai voulu bien faire et j’ai lu en diagonal.

Je viens de refaire le test ce matin, mais cette fois ci pas de lock :wink:

Je n’utilise ce clientID que sur Jeedom ;). J’ai juste l’application Gardena sur telephone, mais pas lié à l’API a proprement parler.

gardena_daemon.log (40,5 Ko)

Hello,

Alors recoupure cette nuit, mais mon compte a pas été bloqué cette fois ci. Je te mets le log en info.

J’ai par contre désactivé le restart automatique du démon :wink:

Merci
gardena_daemon.log (39,5 Ko)

Et plus rien après cette dernière ligne?

[2022-05-21 03:16:39][INFO] : Websocket failed to connect, quit now and re-authenticate

le démon était stoppé?

Nop :slight_smile: il etait en status ok, j’ai désactiver la gestion automatique justement pour eviter de me faire locker :wink:

Pour info encore eu le problème ce soir :wink:
EDIT: je corrige… depuis 3h16 ce matin plus rien ne se mettait a jour :wink:

J’ai de nouveau eu le problème. En fait je commence mieux a cerner ce qui se passe:
→ Coupure internet
→ tentative de connexion avec une clé d’authorisation (ou tentative de renouvellement de la clé)
→ internet revient
→ la clé nest plus valide.

Si j’active le redémarrage automatique du démon:
→ utilisation de la mauvaise clé
→ lock du compte au bout d’un certain nombre d’essai

Si je ne redémarre pas le démon, plus de mise a jour des équipements et pas de notifications comme quoi le plugin n’est plus authentifié chez Gardena.

Aurais tu une idée ?
gardena_daemon.log (36,2 Ko)

Je note du regarder dès que possible, je vais trouver une solution mais je suis absent pour quelques jours, je regarde semaine prochaine.

Oui t’inquiète pas, il n’y a pas d’urgence, je te dis si je trouve d’autres infos / contexte interessant :wink:

Salut Mips,

Pour info, j’ai espéré ne plus avoir le problème avec le nouveau système d’authentification, mais le plugin perd la connexion avec Gardena :wink:

Voici les derniers logs quand tu auras 5 min :wink:

[2022-06-14 03:21:52]INFO : Websocket failed to connect, quit now and re-authenticate
Exception in thread Thread-8752:
Traceback (most recent call last):
File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/usr/lib/python3.7/threading.py", line 1166, in run
self.function(*self.args, **self.kwargs)
File "/var/www/html/plugins/gardena/resources/gardenad/gardena/smart_system.py", line 259, in _check_if_ws_connected
self._on_ws_failure_callback()
File "/var/www/html/plugins/gardena/resources/gardenad/gardena_handler.py", line 32, in on_ws_failure
self.smart_system.quit()
File "/var/www/html/plugins/gardena/resources/gardenad/gardena/smart_system.py", line 99, in quit
self.AUTHENTICATION_HOST+'/v1/token/'+str(self.token["refresh_token"]),
KeyError: 'refresh_token'
[2022-06-14 04:40:06]INFO : Websocket connection close: (1001)-Going away
[2022-06-15 19:11:27]ERROR : Send command to demon error:prepare_token_request() got multiple values for argument 'grant_type'
[2022-06-15 19:21:27]ERROR : Send command to demon error:prepare_token_request() got multiple values for argument 'grant_type'
[2022-06-15 19:31:27]ERROR : Send command to demon error:prepare_token_request() got multiple values for argument 'grant_type'
[2022-06-15 21:21:04]ERROR : Send command to demon error:prepare_token_request() got multiple values for argument 'grant_type'
[2022-06-15 21:21:14]ERROR : Send command to demon error:prepare_token_request() got multiple values for argument 'grant_type'
[2022-06-15 21:21:53]ERROR : Send command to demon error:prepare_token_request() got multiple values for argument 'grant_type'
[2022-06-15 21:27:16]INFO : Shuting down
[2022-06-15 21:27:19]INFO : Starting daemon
[2022-06-15 21:27:19]INFO : Log level: info
[2022-06-15 21:27:19]INFO : Authentication done
[2022-06-15 21:27:19]INFO : updating locations
[2022-06-15 21:27:20]INFO : updating devices for location My Garden
[2022-06-15 21:27:20]INFO : Websocket connected
[2022-06-15 21:27:21]INFO : Syncing known devices with jeedom
[2022-06-15 21:27:22]INFO : updating Husqvarna Automowers
[2022-06-15 21:27:22]WARNING : No automowers found....
[2022-06-15 21:27:22]INFO : Syncing Husqvarna Automowers with jeedom
[2022-06-15 21:27:22]INFO : Start listening
[2022-06-15 21:27:22]INFO : Websocket connected

Note: j’ai redémarré a 21:27 :slight_smile:

Salut,

Oui j’en parle ici Demon a redemarrer de temps en temps - #66 par Mips

Désolé je sais que ce problème de crash au refesh est très impactant mais j’y travail.
Le problème c’est que je dois attendre un cycle de refresh pour bien tester à chaque changement que je fais :confused:

Oh oui t’inquiète pas je suis pas la pour être lourd, j’essaye de te facilité la vie avec les évidences :wink: c’est deja super le travail fourni et le service du plugin :wink:
Si le problème est identifié c’est sur la bonne voie :wink:

Merci

J’ai oublié de revenir sur ce post mais je suppose que le problème a bien été réglé avec les dernières mises à jour?
Peut-on fermer le post?

Hello,

En fait j’ai toujours des soucis :slight_smile: mais c’est pire depuis 2/3 semaines

[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]INFO : Websocket connection close: (None)-None
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Cancel websocket check
[2022-08-17 09:13:00]DEBUG : Connect Websocket to wss://ws.openapi.husqvarna.dev/v1
[2022-08-17 09:13:00]ERROR : Websocket error: Handshake status 403 Forbidden
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Connect Websocket to wss://ws.openapi.husqvarna.dev/v1
[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]INFO : Websocket connection close: (None)-None
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Cancel websocket check
[2022-08-17 09:13:00]DEBUG : Connect Websocket to wss://ws.openapi.husqvarna.dev/v1
[2022-08-17 09:13:00]ERROR : Websocket error: Handshake status 403 Forbidden
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Connect Websocket to wss://ws.openapi.husqvarna.dev/v1
[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]ERROR : Websocket error: Handshake status 403 Forbidden
[2022-08-17 09:13:00]INFO : Websocket connection close: (None)-None
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Cancel websocket check
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Connect Websocket to wss://ws.openapi.husqvarna.dev/v1
[2022-08-17 09:13:00]ERROR : Exception while starting husqvarna websocket:'NoneType' object has no attribute 'close'
[2022-08-17 09:13:00]DEBUG : Checking websocket connection status in 30s...
[2022-08-17 09:13:00]DEBUG : exception, restarting daemon...
[2022-08-17 09:13:00]DEBUG : Send to jeedom :  {'daemon': 'start'}
[2022-08-17 09:13:00]INFO : Websocket connection close: (None)-None
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]DEBUG : Cancel websocket check
[2022-08-17 09:13:00]ERROR : Exception while starting husqvarna websocket:'NoneType' object has no attribute 'close'
[2022-08-17 09:13:00]DEBUG : exception, restarting daemon...
[2022-08-17 09:13:00]DEBUG : Send to jeedom :  {'daemon': 'start'}
[2022-08-17 09:13:00]ERROR : Websocket error: Handshake status 403 Forbidden
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]ERROR : Exception while starting husqvarna websocket:'NoneType' object has no attribute 'close'
[2022-08-17 09:13:00]DEBUG : exception, restarting daemon...
[2022-08-17 09:13:00]DEBUG : Send to jeedom :  {'daemon': 'start'}
[2022-08-17 09:13:00]ERROR : Websocket error: Handshake status 403 Forbidden
[2022-08-17 09:13:00]INFO : Restarting husqvarna websocket...
[2022-08-17 09:13:00]ERROR : Exception while starting husqvarna websocket:'NoneType' object has no attribute 'close'
[2022-08-17 09:13:00]DEBUG : exception, restarting daemon...
[2022-08-17 09:13:00]DEBUG : Send to jeedom :  {'daemon': 'start'}

Et je suis sur de la clé / secret :slight_smile: vraiment etrange. Pour le moment le plugin est desactivé car impossible de le faire fonctionner. Si tu as une idée je suis preneur :wink: