Ambrogio lawn mover

The (still current) app creates a Google account for you without informing you. The steps are therefore generally valid.

The new gardening season is starting and the lawn mowers need to be taken out of their winter break. And I’m starting with a major update of our ZCS integration. The highlights:

  • The camera entity is replaced by a (faster) image entity.

  • Add support for specifying a rotation, for a map to allow images that are not oriented north and south.

  • The positions reported by the lawnmower are now calculated even more accurately on the map.

  • Find out on all entities when the integration will next retrieve the data from the cloud.

  • ZCS has announced a new app: perhaps new commands will then be possible. The integration is ready for it. A new service custom_command has been added.

1 Like

Dear ufozone. Many many thanks. I’m very happy and it works. Now as the new original app seems to be crap i would need a script to change profile.

May i ask for help with the set_profile thing.

I was not able to write a working code in a script.

KR
Mike

Hi everybody, i’m facing some issues when trying to configure the ha-zcs-mower component. I have the client key from the app, but what do i need to insert in the “garage” section? No matter what i enter in “garage”, there is no connection (Unable to connect to the server). I also cannot find anything in the app with garage. I hope someone can help, i 'm using the latest version 1.3.1
Thanks in advance!

2024-03-31 21:18:30.892 ERROR (MainThread) [custom_components.zcsmower] Something really wrong happened!
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/asyncio/sslproto.py", line 694, in _write_appdata
    self._do_write()
  File "/usr/local/lib/python3.12/asyncio/sslproto.py", line 713, in _do_write
    self._process_outgoing()
  File "/usr/local/lib/python3.12/asyncio/sslproto.py", line 719, in _process_outgoing
    self._transport.write(data)
RecursionError: maximum recursion depth exceeded

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 603, in _request
    resp = await req.send(conn)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 713, in send
    await writer.write_headers(status_line, self.headers)
  File "/usr/local/lib/python3.12/site-packages/aiohttp/http_writer.py", line 130, in write_headers
    self._write(buf)
  File "/usr/local/lib/python3.12/site-packages/aiohttp/http_writer.py", line 76, in _write
    transport.write(chunk)
  File "/usr/local/lib/python3.12/asyncio/sslproto.py", line 222, in write
    self._ssl_protocol._write_appdata((data,))
  File "/usr/local/lib/python3.12/asyncio/sslproto.py", line 697, in _write_appdata
    self._fatal_error(ex, 'Fatal error on SSL protocol')
  File "/usr/local/lib/python3.12/asyncio/sslproto.py", line 915, in _fatal_error
    self._transport._force_close(exc)
  File "/usr/local/lib/python3.12/asyncio/selector_events.py", line 894, in _force_close
    self._loop._remove_reader(self._sock_fd)
RecursionError: maximum recursion depth exceeded

As Service:

service: zcsmower.set_profile
data:
  profile: 1
  device_id:
    - f80ee.....

The device_id is an internal identifier from home assistant for every device (collection of entities) and not easy to find:

1 Like

Your error message is not directly from the integration. I can’t see where the error is supposed to be. I have just tested the setup again. I don’t have enough information to help you.

Garage name and client key, please see: Impossible to connect to server · Issue #21 · ufozone/ha-zcs-mower · GitHub

If the error still occurs, activate debug mode and open an issue on Github with a detailed trace log.

many thanks. perfect.

Thanks for the reply. It seems like my home assistant isn’t using python3.12, I am using the latest HA core and the system information is showing python 3.12 but when I hit the terminal with python --version it prints out 3.11. Also the files which the integration is trying to access, are not there in the file explorer because the folder python3.12 is missing (I don’t have the folder "/usr/local/lib/python3.12/ "). Maybe I can find a solution for the python issue in den ha core page on github. Has anyone had the same issue and where should I look for help in such case?
Many thanks!

That doesn’t sound good. The error messages actually suggest that Python 1.12 is installed and executable.
Can you start up a completely plain vanilla HA test instance without activated integrations and try the installation again?

I have the same issue with core 2024.4.0 seems although 3.11 has been removed and updated to 3.12 it didn’t do it.

Phew, I can’t reproduce it. Setup works and the integration then runs. Tested with HA Core 2024.4.0

Please activate the debug mode (see README) and create an issue.

Weirdly HASS is not complaining about it, in my dev system I get a warning if I use Pythong pre 3.12.

This may be something else if you are using Advanced SSH is the python the one in that addon?

HASS OS runs things in dockers and I get no warning so wonder if this is something else.

This is not the python version the terminal addon shows the python installed in that addon.

To get the python version you need to disable protection in the addon then restart, from ssh run “docker homeassistant python --version” should give you 3.12.2

So this is something else.

Hello, i just downloaded a fresh new HAOS instance (Supervised Install with Hyper-V image) and fired it up. So this instance is completely new and up to date. I Installed an SSH add-on to install HACS. Then i installed the zcs-mower add-on via the HACS. I Also installed the Studio Server Add On to modify the conifuration.yaml to enable debug log. When i try to add and configure the ha-zcs.mower add on, it gives me the same error “no server connection”. Now i don’t think it’s a python problem… Maybe there is some issue with the app token. I tried 3 app tokens without success.
Thanks!

2024-04-05 11:28:27.974 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration zcsmower which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-04-05 11:28:27.975 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-04-05 11:28:30.187 WARNING (MainThread) [homeassistant.helpers.frame] Detected that custom integration 'hacs' accesses hass.components.frontend. This is deprecated and will stop working in Home Assistant 2024.9, it should be updated to import functions used from frontend directly at custom_components/hacs/frontend.py, line 68: hass.components.frontend.async_register_built_in_panel(, please create a bug report at https://github.com/hacs/integration/issues

2024-04-05 11:32:14.995 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:14.995 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:15.535 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:15.536 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:15.536 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:15.536 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:15.536 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:16.086 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:16.086 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:16.086 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:16.086 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:16.086 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:16.639 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:16.639 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:16.639 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:16.639 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:16.639 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:17.187 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:17.187 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:17.187 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:17.188 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:17.188 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:17.685 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:17.685 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:17.685 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:17.686 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:17.686 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:18.263 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:18.263 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:18.264 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:18.264 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:18.264 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:18.810 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:18.810 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:18.811 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:18.811 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:18.811 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:19.353 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:19.353 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:19.353 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:19.353 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:19.353 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:19.895 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:19.896 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:19.896 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:19.896 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:19.896 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:20.443 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:20.444 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:20.444 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:20.444 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:20.444 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:20.986 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:20.986 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:20.986 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:20.986 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:20.986 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:21.528 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:21.529 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:21.529 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:21.529 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:21.529 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:22.072 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:22.072 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:22.072 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:22.072 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:22.072 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:22.627 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:22.627 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:22.627 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:22.627 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:22.627 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:23.168 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:23.168 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:23.168 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:23.168 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:23.168 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:23.990 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:23.990 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:23.990 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:23.991 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:23.991 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:24.721 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:24.721 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:24.721 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:24.721 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:24.721 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:25.260 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:25.260 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:25.260 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:25.260 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:25.260 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:25.803 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:25.803 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:25.803 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:25.803 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:25.803 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:26.342 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:26.342 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:26.342 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:26.342 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:26.342 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:26.882 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:26.882 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:26.882 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:26.883 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:26.883 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:27.426 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:27.426 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:27.426 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:27.427 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:27.427 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:27.969 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:27.969 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:27.969 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:27.969 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:27.970 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.518 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.518 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Error: appId Mismatch.'], 'errorCodes': [-90000]}
2024-04-05 11:32:28.518 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Error: appId Mismatch.
2024-04-05 11:32:28.518 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:28.518 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.557 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.557 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute'], 'errorCodes': [-90032]}
2024-04-05 11:32:28.557 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute
2024-04-05 11:32:28.557 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:28.558 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.596 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.596 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute'], 'errorCodes': [-90032]}
2024-04-05 11:32:28.597 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute
2024-04-05 11:32:28.710 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:28.710 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.746 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.746 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute'], 'errorCodes': [-90032]}
2024-04-05 11:32:28.746 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute
2024-04-05 11:32:28.746 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:28.746 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.782 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.782 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute'], 'errorCodes': [-90032]}
2024-04-05 11:32:28.782 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute
2024-04-05 11:32:28.782 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:28.782 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.815 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.816 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute'], 'errorCodes': [-90032]}
2024-04-05 11:32:28.816 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute
2024-04-05 11:32:28.816 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2024-04-05 11:32:28.816 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': '###myTokenFromApp###', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': '###myTokenFromApp###'}}}
2024-04-05 11:32:28.850 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2024-04-05 11:32:28.850 DEBUG (MainThread) [custom_components.zcsmower] {'success': False, 'errorMessages': ['Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute'], 'errorCodes': [-90032]}
2024-04-05 11:32:37.255 INFO (MainThread) [custom_components.zcsmower] Authentication session is invalid: Authentication error: Exceeded authentication rate of 30 per minute
2024-04-05 11:32:37.269 ERROR (MainThread) [custom_components.zcsmower] Something really wrong happened!
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/logging/handlers.py", line 1497, in emit
    self.enqueue(self.prepare(record))
                 ^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/logging.py", line 31, in prepare
    record = super().prepare(record)
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/logging/handlers.py", line 1479, in prepare
    msg = self.format(record)
          ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/logging/__init__.py", line 999, in format
    return fmt.format(record)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/logging/__init__.py", line 706, in format
    s = self.formatMessage(record)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/logging/__init__.py", line 675, in formatMessage
    return self._style.format(record)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/logging/__init__.py", line 464, in format
    return self._format(record)
           ^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/config/custom_components/zcsmower/api.py", line 185, in post
    refresh_auth = await self.auth()
                   ^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 260, in auth
    return await self.app_auth(self._app_id, self._app_token, self._thing_key)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 295, in app_auth
    raise exception
  File "/config/custom_components/zcsmower/api.py", line 284, in app_auth
    response = await self.execute("api.authenticate", params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 246, in execute
    return await self.post(parameters)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 139, in post
    LOGGER.debug("API.request:")
  File "/usr/local/lib/python3.12/logging/__init__.py", line 1527, in debug
    self._log(DEBUG, msg, args, **kwargs)
  File "/usr/local/lib/python3.12/logging/__init__.py", line 1684, in _log
    self.handle(record)
  File "/usr/local/lib/python3.12/logging/__init__.py", line 1700, in handle
    self.callHandlers(record)
  File "/usr/local/lib/python3.12/logging/__init__.py", line 1762, in callHandlers
    hdlr.handle(record)
  File "/usr/src/homeassistant/homeassistant/util/logging.py", line 49, in handle
    self.emit(record)
  File "/usr/local/lib/python3.12/logging/handlers.py", line 1499, in emit
    self.handleError(record)
  File "/usr/local/lib/python3.12/logging/__init__.py", line 1082, in handleError
    traceback.print_exception(t, v, tb, None, sys.stderr)
  File "/usr/local/lib/python3.12/traceback.py", line 124, in print_exception
    te = TracebackException(type(value), value, tb, limit=limit, compact=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/traceback.py", line 733, in __init__
    self.stack = StackSummary._extract_from_extended_frame_gen(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/traceback.py", line 438, in _extract_from_extended_frame_gen
    f.line
  File "/usr/local/lib/python3.12/traceback.py", line 323, in line
    self._line = linecache.getline(self.filename, self.lineno)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/linecache.py", line 30, in getline
    lines = getlines(filename, module_globals)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/config/custom_components/zcsmower/api.py", line 185, in post
    refresh_auth = await self.auth()
                   ^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 260, in auth
    return await self.app_auth(self._app_id, self._app_token, self._thing_key)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 295, in app_auth
    raise exception
  File "/config/custom_components/zcsmower/api.py", line 284, in app_auth
    response = await self.execute("api.authenticate", params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 246, in execute
    return await self.post(parameters)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 202, in post
    raise ZcsMowerApiError(
custom_components.zcsmower.api.ZcsMowerApiError: Something really wrong happened!

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/config/custom_components/zcsmower/api.py", line 185, in post
    refresh_auth = await self.auth()
                   ^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 260, in auth
    return await self.app_auth(self._app_id, self._app_token, self._thing_key)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 295, in app_auth
    raise exception
  File "/config/custom_components/zcsmower/api.py", line 284, in app_auth
    response = await self.execute("api.authenticate", params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 246, in execute
    return await self.post(parameters)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/api.py", line 202, in post
    raise ZcsMowerApiError(
custom_components.zcsmower.api.ZcsMowerApiError: Something really wrong happened


System Information

version core-2024.4.0
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.6.20-haos
arch x86_64
timezone Europe/Vienna
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4262
Installed Version 1.34.0
Stage running
Available Repositories 1398
Downloaded Repositories 2
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.1
update_channel stable
supervisor_version supervisor-2024.03.1
agent_version 1.6.0
docker_version 24.0.7
disk_total 30.8 GB
disk_used 4.1 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.10.0), Studio Code Server (5.15.0)
Dashboards
dashboards 2
resources 0
views 0
mode storage
Recorder
oldest_recorder_run 5. April 2024 um 08:38
current_recorder_run 5. April 2024 um 11:28
estimated_db_size 0.30 MiB
database_engine sqlite
database_version 3.44.2

Thanks for the info, i did not realize that. Seems my problem is a app token problem.

I will try as soon as I get my robot back. or I can actually download the ZCS some sort of issue with github for me today.

Where do you get your appId / client key from? What does it look like? Does it only have capital letters and numbers? Then it is wrong.

Please use the ZCS Mower version 1.3.2. This has a more intensive client key validation.

I thin I found the problem but got no solution… My android app was updated like 3 weeks ago. The new app on android and iPhone shows the client key as all lowercase letters an numbers. So no case sensitive. I thought the key is right because I only checked if the key has all uppercase letters. Key is shown like: halfu620cts8