Rafraîchissement des infos Husqvarna Automower

Hello @Mips
Je suis en train de créer un scénario afin de gérer au mieux mon Automower avec le plugin.

  1. les données ne sont pas rafraîchies automatiquement. Je suis obligé de cliquer sur le bouton « Raffraicir »
  2. la commande « Etat_batterie » n’est pas créée. (Même après « créer les commandes manquantes » )

PS: je n’ai pas trouvé de tag : Gardena-Husqvarna

Salut,

  1. OK je vais regarder pour ça. Aurais-tu un log en debug depuis un démarrage sur quelques minutes ?
  2. Je vais vérifier pour ça, je ne me rappelle plus par cœur.

Ps: c’est #plugin-gardena comme indiqué dans la doc, dernier paragraphe :stuck_out_tongue:
D’ailleurs l’id d’un plug-in se trouve aussi dans sa page de config entre parenthèse en haut à gauche (mais faut savoir que c’est ça).

Pour l’histoire, c’est parce qu’au départ je visais juste de gérer les équipements gardena et j’ai créé l’id avec ça avant d’inclure aussi Husqvarna dans le plug-in.

Salut
J’ai mis les log en debug. Le mouton vient juste de rentrer à la base pour se recharger. Je te mets le log dès le redémarrage.

en fait je pensais au démarrage du démon sans penser à l’activité de la tondeuse mais c’est vrai qu’avoir le log au moment d’une activité pourrait être utile :slight_smile:

Pour le 2., comme indiqué dans la doc, la commande « Etat batterie » est uniquement sur les équipements Gardena Smart System.
image

Les commandes des Husqvarna Automower sont listées ici: https://mips2648.github.io/jeedom-plugins-docs/gardena/fr_FR/#tocAnchor-1-5-7

Hello @Mips
Désolé pour l’Etat batterie. Je me suis fait avoir par le « commandes communes » au dessus.
Sinon pour le rafraichissement :
Pour situer les choses : La tondeuse est programmée de 20 h à 23 h.
Les log et copie d’écran ont été fait 12:45, et la tondeuse est sur la base depuis une trentaine de minutes.
IMG_0295

[2021-06-03 06:34:16][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-03 06:35:16][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-03 06:36:17][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-03 06:37:17][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-03 06:38:17][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-03 07:55:58][DEBUG] : action:refresh on 0e879fc5-7c78-497e-9def-c10b408005a2 : Justin
[2021-06-03 07:55:58][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 

Il n’y a plus rien après 7:55

[2021-06-03 06:35:16][INFO] : updating Husqvarna Automowers
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 706, in urlopen
    chunked=chunked,
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/lib/python3.7/http/client.py", line 1352, in getresponse
    response.begin()
  File "/usr/lib/python3.7/http/client.py", line 310, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.7/http/client.py", line 271, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.7/socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.7/ssl.py", line 1052, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.7/ssl.py", line 911, in read
    return self._sslobj.read(len, buffer)
ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
  File "/usr/local/lib/python3.7/dist-packages/urllib3/util/retry.py", line 531, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.7/dist-packages/urllib3/packages/six.py", line 734, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 706, in urlopen
    chunked=chunked,
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/lib/python3.7/http/client.py", line 1352, in getresponse
    response.begin()
  File "/usr/lib/python3.7/http/client.py", line 310, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.7/http/client.py", line 271, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.7/socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.7/ssl.py", line 1052, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.7/ssl.py", line 911, in read
    return self._sslobj.read(len, buffer)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
During handling of the above exception, another exception occurred:
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 865, in run
    self._target(*self._args, **self._kwargs)
  File "/var/www/html/plugins/gardena/resources/gardenad/gardena_handler.py", line 33, in _updateHusqvarnaAutomowersThread
    self.__updateHusqvarnaAutomowers()
  File "/var/www/html/plugins/gardena/resources/gardenad/gardena_handler.py", line 99, in __updateHusqvarnaAutomowers
    self.smart_system.update_automowers()
  File "/var/www/html/plugins/gardena/resources/gardenad/gardena/smart_system.py", line 244, in update_automowers
    response_data = self.__call_smart_system_get(self.HUSQVARNA_HOST+'/v1/mowers')
  File "/var/www/html/plugins/gardena/resources/gardenad/gardena/smart_system.py", line 214, in __call_smart_system_get
    response = self.oauth_session.get(url, headers=self.create_header())
  File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/requests_oauthlib/oauth2_session.py", line 516, in request
    method, url, headers=headers, data=data, **kwargs
  File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

[2021-06-03 07:55:58][DEBUG] : Client connected to [127.0.0.1:34806]
[2021-06-03 07:55:58][DEBUG] : Message read from socket: b'{"action":"husqvarna","method":"refresh","id":"0e879fc5-7c78-497e-9def-c10b408005a2","apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "}'
[2021-06-03 07:55:58][DEBUG] : Client disconnected from [127.0.0.1:34806]
[2021-06-03 07:55:58][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2021-06-03 07:56:00][DEBUG] : http://127.0.0.1:80 "POST /plugins/gardena/core/php/jeegardena.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  HTTP/1.1" 200 2

J’ai ensuite fait raffraichir sur le plugin, et cela donne :
IMG_0296
Je reste dispo si tu as besoin de plus d’infos.

J’avoue, moi aussi j’ai du relire deux fois avant de voir mon commentaire en-dessous :stuck_out_tongue:

Ok je vois que le thread qui gère le refresh auto à crash effectivement, je vais protéger cette partie.

Donc question: cela a fonctionner pendant un moment? la tondeuse est-elle passé en « mowing » toute seule?
et puis après le crash plus d’update évidement.

Oui, il me semble que ça fonctionne un moment. Pour être sur, je viens de reseter les log, et relancer le démon avec le robot en action. Je verrais du coup si les retours sont ok.

Édit. Je confirme que c’est bon, je vois la batterie baisser
Édit 2. Par contre le plugin indique retour à la base, alors qu’il est en tonte en cours. (En réel et sur appli husqvarna)
Édit 3. NE TIENS PAS COMPTE DE L’EDIT 2. Je l’avais lancé en zone principale au lieu de secondaire.
Je confirme que les infos remontent toujours.
Je sauve les log

[2021-06-04 12:44:50][INFO] : Lancement démon
[2021-06-04 12:44:50][DEBUG] : test from gardena daemon
[2021-06-04 12:44:51][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:45:53][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:46:53][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:47:53][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:48:53][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:49:53][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:50:54][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:51:54][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:52:54][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:53:54][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:54:55][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:55:55][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:56:55][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:57:55][DEBUG] : Updating info commands of 'Justin' - Type:'mower' 
[2021-06-04 12:55:55][INFO] : updating Husqvarna Automowers
[2021-06-04 12:55:55][DEBUG] : Invoking 0 protected resource request hooks.
[2021-06-04 12:55:55][DEBUG] : Adding token {'access_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh1c3F2YXJuYSJ9.eyJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZjJjNWMwNGQtYzZmYi00Y2U5LTkxNWMtZTAwMDlmOTMwNjBkIiwidXNlciI6eyJmaXJzdF9uYW1lIjoiQ2xhdWRlIiwibGFzdF9uYW1lIjoiTWFzc2Fyb25pIiwiY3VzdG9tX2F0dHJpYnV0ZXMiOnt9LCJjdXN0b21lcl9pZCI6IiJ9LCJpYXQiOjE2MjI4MDM0OTEsImV4cCI6MTYyMjg4OTg5MSwic3ViIjoiMjljYzU2ODctZGVhZi00M2RmLWIxNzctMWRjYTJiNWQwNDc0In0.wT_LYqHKvYlGpov4yh27gUsLTt8ANPhyO1VAoir1aGcLV3WU_mXLXyKveaZRjx_2CDTrku4GUfCRtf91VO06M8AC6Cx8n1_VynhxGb5BqFOoVaaOAe2kUQByWfJZebF8lHvGS_78UJw4-MpZK4UGSp-kbAMYIo092cRKhxWPBRmF6dGtaQEZnet7wbu1pgvT5iaR01glvtujCm-1vJlZDPg5XB1VEsU7yDwMhvTn1gq-KsfytTLA1avDSdOs0N367SgJ8BGVfJgpmODeowrhD749w5hoVZajp68RGLYgXZd1zeKwYvs_QVXREiprrQFHAWomwfE2XNuKz422-GHYjQ', 'scope': ['iam:read', 'amc:api'], 'expires_in': 86399, 'refresh_token': '1c435546-6f0a-445e-b33b-c59da59873a3', 'provider': 'husqvarna', 'user_id': '29cc5687-deaf-43df-b177-1dca2b5d0474', 'token_type': 'Bearer', 'expires_at': 1622889890.384599} to request.
[2021-06-04 12:55:55][DEBUG] : Requesting url https://api.amc.husqvarna.dev/v1/mowers using method GET.
[2021-06-04 12:55:55][DEBUG] : Supplying headers {'Authorization-Provider': 'husqvarna', 'X-Api-Key': 'f2c5c04d-c6fb-4ce9-915c-e0009f93060d', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh1c3F2YXJuYSJ9.eyJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZjJjNWMwNGQtYzZmYi00Y2U5LTkxNWMtZTAwMDlmOTMwNjBkIiwidXNlciI6eyJmaXJzdF9uYW1lIjoiQ2xhdWRlIiwibGFzdF9uYW1lIjoiTWFzc2Fyb25pIiwiY3VzdG9tX2F0dHJpYnV0ZXMiOnt9LCJjdXN0b21lcl9pZCI6IiJ9LCJpYXQiOjE2MjI4MDM0OTEsImV4cCI6MTYyMjg4OTg5MSwic3ViIjoiMjljYzU2ODctZGVhZi00M2RmLWIxNzctMWRjYTJiNWQwNDc0In0.wT_LYqHKvYlGpov4yh27gUsLTt8ANPhyO1VAoir1aGcLV3WU_mXLXyKveaZRjx_2CDTrku4GUfCRtf91VO06M8AC6Cx8n1_VynhxGb5BqFOoVaaOAe2kUQByWfJZebF8lHvGS_78UJw4-MpZK4UGSp-kbAMYIo092cRKhxWPBRmF6dGtaQEZnet7wbu1pgvT5iaR01glvtujCm-1vJlZDPg5XB1VEsU7yDwMhvTn1gq-KsfytTLA1avDSdOs0N367SgJ8BGVfJgpmODeowrhD749w5hoVZajp68RGLYgXZd1zeKwYvs_QVXREiprrQFHAWomwfE2XNuKz422-GHYjQ'} and data None
[2021-06-04 12:55:55][DEBUG] : Passing through key word arguments {'allow_redirects': True}.
[2021-06-04 12:55:55][DEBUG] : https://api.amc.husqvarna.dev:443 "GET /v1/mowers HTTP/1.1" 200 659
[2021-06-04 12:55:55][DEBUG] : {'system': {'name': 'Justin', 'model': 'HUSQVARNA AUTOMOWER® 315X', 'serialNumber': xxxxxxxxxxxxxxxxxxxxx}, 'battery': {'batteryPercent': 90}, 'mower': {'mode': 'MAIN_AREA', 'activity': 'GOING_HOME', 'state': 'IN_OPERATION', 'errorCode': 0, 'errorCodeTimestamp': 0}, 'calendar': {'tasks': [{'start': 1200, 'duration': 180, 'monday': True, 'tuesday': True, 'wednesday': True, 'thursday': True, 'friday': True, 'saturday': True, 'sunday': True}]}, 'planner': {'nextStartTimestamp': 1622836800000, 'override': {'action': 'WEEK_TIMER'}, 'restrictedReason': 'NOT_APPLICABLE'}, 'metadata': {'connected': True, 'statusTimestamp': 1622804147826}}
[2021-06-04 12:55:55][INFO] : Syncing Husqvarna Automowers with jeedom
[2021-06-04 12:55:55][DEBUG] : Send to jeedom :  {'husqvarna_automower': {'id': '0e879fc5-7c78-497e-9def-c10b408005a2', 'type': 'mower', 'name': 'Justin', 'model_type': 'HUSQVARNA AUTOMOWER® 315X', 'serial': 202311343, 'battery_level': 90, 'battery_type': 'Rechargeable', 'mode': 'MAIN_AREA', 'activity': 'GOING_HOME', 'state': 'IN_OPERATION', 'errorCode': 0, 'errorDesc': '', 'planner_nextStartTimestamp': 1622836800000, 'planner_override': {'action': 'WEEK_TIMER'}, 'planner_restrictedReason': 'NOT_APPLICABLE', 'connected': True, 'calendarTasks': [{'start': 1200, 'duration': 180, 'monday': (True,), 'tuesday': (True,), 'wednesday': (True,), 'thursday': (True,), 'friday': (True,), 'saturday': (True,), 'sunday': (True,)}]}}
[2021-06-04 12:55:55][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2021-06-04 12:55:55][DEBUG] : http://127.0.0.1:80 "POST /plugins/gardena/core/php/jeegardena.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1" 200 2
[2021-06-04 12:56:55][INFO] : updating Husqvarna Automowers
[2021-06-04 12:56:55][DEBUG] : Invoking 0 protected resource request hooks.
[2021-06-04 12:56:55][DEBUG] : Adding token {'access_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh1c3F2YXJuYSJ9.eyJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZjJjNWMwNGQtYzZmYi00Y2U5LTkxNWMtZTAwMDlmOTMwNjBkIiwidXNlciI6eyJmaXJzdF9uYW1lIjoiQ2xhdWRlIiwibGFzdF9uYW1lIjoiTWFzc2Fyb25pIiwiY3VzdG9tX2F0dHJpYnV0ZXMiOnt9LCJjdXN0b21lcl9pZCI6IiJ9LCJpYXQiOjE2MjI4MDM0OTEsImV4cCI6MTYyMjg4OTg5MSwic3ViIjoiMjljYzU2ODctZGVhZi00M2RmLWIxNzctMWRjYTJiNWQwNDc0In0.wT_LYqHKvYlGpov4yh27gUsLTt8ANPhyO1VAoir1aGcLV3WU_mXLXyKveaZRjx_2CDTrku4GUfCRtf91VO06M8AC6Cx8n1_VynhxGb5BqFOoVaaOAe2kUQByWfJZebF8lHvGS_78UJw4-MpZK4UGSp-kbAMYIo092cRKhxWPBRmF6dGtaQEZnet7wbu1pgvT5iaR01glvtujCm-1vJlZDPg5XB1VEsU7yDwMhvTn1gq-KsfytTLA1avDSdOs0N367SgJ8BGVfJgpmODeowrhD749w5hoVZajp68RGLYgXZd1zeKwYvs_QVXREiprrQFHAWomwfE2XNuKz422-GHYjQ', 'scope': ['iam:read', 'amc:api'], 'expires_in': 86399, 'refresh_token': '1c435546-6f0a-445e-b33b-c59da59873a3', 'provider': 'husqvarna', 'user_id': '29cc5687-deaf-43df-b177-1dca2b5d0474', 'token_type': 'Bearer', 'expires_at': 1622889890.384599} to request.
[2021-06-04 12:56:55][DEBUG] : Requesting url https://api.amc.husqvarna.dev/v1/mowers using method GET.
[2021-06-04 12:56:55][DEBUG] : Supplying headers {'Authorization-Provider': 'husqvarna', 'X-Api-Key': 'f2c5c04d-c6fb-4ce9-915c-e0009f93060d', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh1c3F2YXJuYSJ9.eyJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZjJjNWMwNGQtYzZmYi00Y2U5LTkxNWMtZTAwMDlmOTMwNjBkIiwidXNlciI6eyJmaXJzdF9uYW1lIjoiQ2xhdWRlIiwibGFzdF9uYW1lIjoiTWFzc2Fyb25pIiwiY3VzdG9tX2F0dHJpYnV0ZXMiOnt9LCJjdXN0b21lcl9pZCI6IiJ9LCJpYXQiOjE2MjI4MDM0OTEsImV4cCI6MTYyMjg4OTg5MSwic3ViIjoiMjljYzU2ODctZGVhZi00M2RmLWIxNzctMWRjYTJiNWQwNDc0In0.wT_LYqHKvYlGpov4yh27gUsLTt8ANPhyO1VAoir1aGcLV3WU_mXLXyKveaZRjx_2CDTrku4GUfCRtf91VO06M8AC6Cx8n1_VynhxGb5BqFOoVaaOAe2kUQByWfJZebF8lHvGS_78UJw4-MpZK4UGSp-kbAMYIo092cRKhxWPBRmF6dGtaQEZnet7wbu1pgvT5iaR01glvtujCm-1vJlZDPg5XB1VEsU7yDwMhvTn1gq-KsfytTLA1avDSdOs0N367SgJ8BGVfJgpmODeowrhD749w5hoVZajp68RGLYgXZd1zeKwYvs_QVXREiprrQFHAWomwfE2XNuKz422-GHYjQ'} and data None
[2021-06-04 12:56:55][DEBUG] : Passing through key word arguments {'allow_redirects': True}.
[2021-06-04 12:56:55][DEBUG] : https://api.amc.husqvarna.dev:443 "GET /v1/mowers HTTP/1.1" 200 659
[2021-06-04 12:56:55][DEBUG] : {'system': {'name': 'Justin', 'model': 'HUSQVARNA AUTOMOWER® 315X', 'serialNumber': xxxxxxxxxxxxxxxxxxxxx}, 'battery': {'batteryPercent': 90}, 'mower': {'mode': 'MAIN_AREA', 'activity': 'GOING_HOME', 'state': 'IN_OPERATION', 'errorCode': 0, 'errorCodeTimestamp': 0}, 'calendar': {'tasks': [{'start': 1200, 'duration': 180, 'monday': True, 'tuesday': True, 'wednesday': True, 'thursday': True, 'friday': True, 'saturday': True, 'sunday': True}]}, 'planner': {'nextStartTimestamp': 1622836800000, 'override': {'action': 'WEEK_TIMER'}, 'restrictedReason': 'NOT_APPLICABLE'}, 'metadata': {'connected': True, 'statusTimestamp': 1622804207635}}
[2021-06-04 12:56:55][INFO] : Syncing Husqvarna Automowers with jeedom
[2021-06-04 12:56:55][DEBUG] : Send to jeedom :  {'husqvarna_automower': {'id': '0e879fc5-7c78-497e-9def-c10b408005a2', 'type': 'mower', 'name': 'Justin', 'model_type': 'HUSQVARNA AUTOMOWER® 315X', 'serial': 202311343, 'battery_level': 90, 'battery_type': 'Rechargeable', 'mode': 'MAIN_AREA', 'activity': 'GOING_HOME', 'state': 'IN_OPERATION', 'errorCode': 0, 'errorDesc': '', 'planner_nextStartTimestamp': 1622836800000, 'planner_override': {'action': 'WEEK_TIMER'}, 'planner_restrictedReason': 'NOT_APPLICABLE', 'connected': True, 'calendarTasks': [{'start': 1200, 'duration': 180, 'monday': (True,), 'tuesday': (True,), 'wednesday': (True,), 'thursday': (True,), 'friday': (True,), 'saturday': (True,), 'sunday': (True,)}]}}
[2021-06-04 12:56:55][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2021-06-04 12:56:55][DEBUG] : http://127.0.0.1:80 "POST /plugins/gardena/core/php/jeegardena.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1" 200 2
[2021-06-04 12:57:55][INFO] : updating Husqvarna Automowers
[2021-06-04 12:57:55][DEBUG] : Invoking 0 protected resource request hooks.
[2021-06-04 12:57:55][DEBUG] : Adding token {'access_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh1c3F2YXJuYSJ9.eyJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZjJjNWMwNGQtYzZmYi00Y2U5LTkxNWMtZTAwMDlmOTMwNjBkIiwidXNlciI6eyJmaXJzdF9uYW1lIjoiQ2xhdWRlIiwibGFzdF9uYW1lIjoiTWFzc2Fyb25pIiwiY3VzdG9tX2F0dHJpYnV0ZXMiOnt9LCJjdXN0b21lcl9pZCI6IiJ9LCJpYXQiOjE2MjI4MDM0OTEsImV4cCI6MTYyMjg4OTg5MSwic3ViIjoiMjljYzU2ODctZGVhZi00M2RmLWIxNzctMWRjYTJiNWQwNDc0In0.wT_LYqHKvYlGpov4yh27gUsLTt8ANPhyO1VAoir1aGcLV3WU_mXLXyKveaZRjx_2CDTrku4GUfCRtf91VO06M8AC6Cx8n1_VynhxGb5BqFOoVaaOAe2kUQByWfJZebF8lHvGS_78UJw4-MpZK4UGSp-kbAMYIo092cRKhxWPBRmF6dGtaQEZnet7wbu1pgvT5iaR01glvtujCm-1vJlZDPg5XB1VEsU7yDwMhvTn1gq-KsfytTLA1avDSdOs0N367SgJ8BGVfJgpmODeowrhD749w5hoVZajp68RGLYgXZd1zeKwYvs_QVXREiprrQFHAWomwfE2XNuKz422-GHYjQ', 'scope': ['iam:read', 'amc:api'], 'expires_in': 86399, 'refresh_token': '1c435546-6f0a-445e-b33b-c59da59873a3', 'provider': 'husqvarna', 'user_id': '29cc5687-deaf-43df-b177-1dca2b5d0474', 'token_type': 'Bearer', 'expires_at': 1622889890.384599} to request.
[2021-06-04 12:57:55][DEBUG] : Requesting url https://api.amc.husqvarna.dev/v1/mowers using method GET.
[2021-06-04 12:57:55][DEBUG] : Supplying headers {'Authorization-Provider': 'husqvarna', 'X-Api-Key': 'f2c5c04d-c6fb-4ce9-915c-e0009f93060d', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imh1c3F2YXJuYSJ9.eyJpc3MiOiJodXNxdmFybmEiLCJyb2xlcyI6W10sImdyb3VwcyI6WyJhbWMiLCJkZXZlbG9wZXItcG9ydGFsIl0sInNjb3BlcyI6WyJpYW06cmVhZCIsImFtYzphcGkiXSwiY2xpZW50X2lkIjoiZjJjNWMwNGQtYzZmYi00Y2U5LTkxNWMtZTAwMDlmOTMwNjBkIiwidXNlciI6eyJmaXJzdF9uYW1lIjoiQ2xhdWRlIiwibGFzdF9uYW1lIjoiTWFzc2Fyb25pIiwiY3VzdG9tX2F0dHJpYnV0ZXMiOnt9LCJjdXN0b21lcl9pZCI6IiJ9LCJpYXQiOjE2MjI4MDM0OTEsImV4cCI6MTYyMjg4OTg5MSwic3ViIjoiMjljYzU2ODctZGVhZi00M2RmLWIxNzctMWRjYTJiNWQwNDc0In0.wT_LYqHKvYlGpov4yh27gUsLTt8ANPhyO1VAoir1aGcLV3WU_mXLXyKveaZRjx_2CDTrku4GUfCRtf91VO06M8AC6Cx8n1_VynhxGb5BqFOoVaaOAe2kUQByWfJZebF8lHvGS_78UJw4-MpZK4UGSp-kbAMYIo092cRKhxWPBRmF6dGtaQEZnet7wbu1pgvT5iaR01glvtujCm-1vJlZDPg5XB1VEsU7yDwMhvTn1gq-KsfytTLA1avDSdOs0N367SgJ8BGVfJgpmODeowrhD749w5hoVZajp68RGLYgXZd1zeKwYvs_QVXREiprrQFHAWomwfE2XNuKz422-GHYjQ'} and data None
[2021-06-04 12:57:55][DEBUG] : Passing through key word arguments {'allow_redirects': True}.
[2021-06-04 12:57:55][DEBUG] : https://api.amc.husqvarna.dev:443 "GET /v1/mowers HTTP/1.1" 200 659
[2021-06-04 12:57:55][DEBUG] : {'system': {'name': 'Justin', 'model': 'HUSQVARNA AUTOMOWER® 315X', 'serialNumber': xxxxxxxxxxxxxxxxxxxxx}, 'battery': {'batteryPercent': 89}, 'mower': {'mode': 'MAIN_AREA', 'activity': 'GOING_HOME', 'state': 'IN_OPERATION', 'errorCode': 0, 'errorCodeTimestamp': 0}, 'calendar': {'tasks': [{'start': 1200, 'duration': 180, 'monday': True, 'tuesday': True, 'wednesday': True, 'thursday': True, 'friday': True, 'saturday': True, 'sunday': True}]}, 'planner': {'nextStartTimestamp': 1622836800000, 'override': {'action': 'WEEK_TIMER'}, 'restrictedReason': 'NOT_APPLICABLE'}, 'metadata': {'connected': True, 'statusTimestamp': 1622804269253}}
[2021-06-04 12:57:55][INFO] : Syncing Husqvarna Automowers with jeedom
[2021-06-04 12:57:55][DEBUG] : Send to jeedom :  {'husqvarna_automower': {'id': '0e879fc5-7c78-497e-9def-c10b408005a2', 'type': 'mower', 'name': 'Justin', 'model_type': 'HUSQVARNA AUTOMOWER® 315X', 'serial': 202311343, 'battery_level': 89, 'battery_type': 'Rechargeable', 'mode': 'MAIN_AREA', 'activity': 'GOING_HOME', 'state': 'IN_OPERATION', 'errorCode': 0, 'errorDesc': '', 'planner_nextStartTimestamp': 1622836800000, 'planner_override': {'action': 'WEEK_TIMER'}, 'planner_restrictedReason': 'NOT_APPLICABLE', 'connected': True, 'calendarTasks': [{'start': 1200, 'duration': 180, 'monday': (True,), 'tuesday': (True,), 'wednesday': (True,), 'thursday': (True,), 'friday': (True,), 'saturday': (True,), 'sunday': (True,)}]}}
[2021-06-04 12:57:55][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2021-06-04 12:57:55][DEBUG] : http://127.0.0.1:80 "POST /plugins/gardena/core/php/jeegardena.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1" 200 2
serialNumber': xxxxxxxxxxxxxxxxxxxxx

image

Dans la dernière beta qui est en ligne normalement j’ai protégé la synchro automatique donc dorénavant s’il se fait déco comme sur l’erreur que tu avais ou tout autre erreur en fait il continuera d’essayer chaque minute, il ne crashera plus.

Tu peux remettre le log en « info » et au fait attention avec le log en debug, il faudrait que tu masques les infos sensibles/privés.

Ok. Merci
Pour info, depuis midi, il n’y a pas eu de crash.
Je passe sur la bêta, et je te tiens au courant.

Hello @Mips
Tout fonctionnait bien, et depuis hier, plus de rafraîchissement :cry:

[2021-06-12 07:02:15][INFO] : updating Husqvarna Automowers
[2021-06-12 07:02:16][ERROR] : 429:Limit Exceeded
[2021-06-12 07:02:16][INFO] : Syncing Husqvarna Automowers with jeedom

L’erreur http 429 est une limite sur le nombre de requêtes.
Je ne me rappelle pas qu’il y avait une limite définie par Husqvarna pourtant.

As-tu rajouté des refresh via scénario en plus de ceux que le plug-in fait ?

Essaye p-e de désactiver quelques heures l’équipement ainsi le plug-in ne fera plus de refresh dessus pour éviter de continuer de spam l’api pour repasser en dessous de cette limite.

J’essaie de vérifier dès que possible si cette limite est expliquée.
Et je peux prévoir une config pour définir un créneau horaire ou plusieurs plages avec des fréquences de refresh différentes pour par exemple refresh une fois pas heure la nuit et chaque minute quand elle tond; à réfléchir.

edit: je confirme, il y a une limite à 10.000 requêtes par mois hors en faisant un refresh toutes les minutes on arrive à 43.200 (pour 30j)
Je vais donc rajouter une solution de cron custom ou différente fréquences de refresh en fonction de l’heure et/ou de l’activité actuelle.
Désolé du dérangement.

Hello
Je me doutais bien que c’était une histoire de quota.
J’ai désactivé en attendant une modification. Je n’ai pas jade refresh mais effectivement, 10000 interrogations sont vite atteinte avec un con a 1 mn.
Je ne sais pas si ça faisab, mais l’idéal serait de pouvoir choisir dans le plugin (ou par scénario) des pas différents en fonction des horaires.

Dans la dernière beta j’ai rajouté la possibilité d’un cron custom pour le refresh des husqvarna, par défaut toutes les 2min entre 9h et 20h
Cela se configure dans la page de config du plugin car la limite est pour le compte et pas par tondeuse et que de toute façon le refresh récupère les infos de toutes les tondeuses quand il y en a plusieurs.

1 « J'aime »

Hello
Oui, j’ai vu. J’ai installé, et mis le CRON à 5 min (- de 9000 appels sur 31 jours).
Par contre le suis toujours hors limite. Je ne sais pas quand est ce qu’ils remettent le compteur à 0 :frowning_face:
Merci. Je te tiens informé.

Salut,

Est-ce ok à présent?

Hello @Mips
Depuis le 1er juillet, j’ai de nouveau des réponses. Tout fonctionne nickel, et vu mon CRON, il ne devrait plus y avoir de problème.
Je te tiens informé dans tous les cas.
Merci pour la correction.

Hello @Mips
Petit retour après une semaine. Pas de soucis particulier. Juste pour info je te mets le log du demon qui a quelques erreurs (Erreurs peut être dues à ma connexion internet qui n’est pas toujours au top):


[2021-07-01 06:15:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-01 13:05:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-01 18:15:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-01 23:40:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-02 06:05:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-02 15:25:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-02 18:10:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-03 06:10:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-03 18:10:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-04 01:00:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-04 06:05:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-04 06:26:34][ERROR] : Send command to demon error : HTTPSConnectionPool(host='api.authentication.husqvarnagroup.dev', port=443): Read timed out. (read timeout=None)
[2021-07-04 07:20:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-04 12:10:11][ERROR] : Send command to demon error : HTTPSConnectionPool(host='api.amc.husqvarna.dev', port=443): Max retries exceeded with url: /v1/mowers (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9f60e594e0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
[2021-07-05 00:15:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-05 04:10:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-05 08:05:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-05 12:15:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-05 16:50:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-05 20:50:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-06 00:10:12][ERROR] : Send command to demon error : HTTPSConnectionPool(host='api.amc.husqvarna.dev', port=443): Max retries exceeded with url: /v1/mowers (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9f60e59c88>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
[2021-07-06 06:30:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-06 06:40:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-06 08:10:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-06 10:55:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
[2021-07-06 12:10:02][ERROR] : Send command to demon error : ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

merci du retour, je valide encore un autre changement dans le plugin et ca passera bientôt en stable.

Concernant les erreurs réseau c’est toujours compliqué d’être sur de l’origine:

  • Connection reset by peer ca peut être soit un intermédiaire (comme ton routeur mais peu probable quand même, le fournisseur internet…), soit le serveur de destination; bref on ne sait rien faire je pense à part réessayer.
  • Read timed out là ca parait plus évident mais de nouveau le ralentissement n’est peut-être pas dû au serveur distant, ca peut être entre les 2.
  • Temporary failure in name resolution celle ci semble plus locale, mais étrange que ca ne soit pas dans son cache dns déjà… sauf si le cache était expiré

Je vais vérifier si je ne peux pas mieux intercepter ces erreurs soit pour faire un retry quand c’est relevant soit pour diminuer le log level en warning peut-être car ce n’est pas dramatique si cela arrive une fois de temps en temps.

1 « J'aime »

Hello @Mips
Juste pour t’informer que le plugin fonctionne toujours parfaitement.
Toujours les quelques erreurs : Connection reset by peer qui ne gênent en rien !