Ambrogio lawn mover

Your absolute path looks good. Can the image be accessed via http://<ipaddress_of_ha>:8123/local/image.png call up?

Hi,
despite I send wake up command to the robot, and sometime it works, Iā€™m experiencing it to work randomly: most of the time despite the command is sent and response from API is acknowledged the robot does not go online; Iā€™ve somehow a similar behavior using the official app, where last connection is shown and the robot does not go online so I cannot send any command, after trying and trying again I succeed but not all the time.
Any advise?
best regards
Pietro

AM095L is the Quad

Commands are:
Set Profile, Charge Until, Work Until, Border Cut, Keep out

1 Like

Hi

For start, PERFECT JOB!!!
I love this integration, even that it is not working for me yet :slight_smile:
Thank you very much!

I have problem with my L35 Deluxe
After configuration of integration - I have status ERROR - EXPIRED

In logs I have such info:

2023-08-02 23:39:30.148 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2023-08-02 23:39:30.149 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': 'xxxxx', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': 'xxxxx'}}}
2023-08-02 23:39:31.011 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2023-08-02 23:39:31.011 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'success': True, 'params': {'orgKey': 'ZUCCHETTICENTROSISTEMI', 'sessionId': '6537a8e8afa7e9d90e1b290e4d2dff9e'}}}
2023-08-02 23:39:31.012 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2023-08-02 23:39:31.012 DEBUG (MainThread) [custom_components.zcsmower] {'data': {'command': 'thing.find', 'params': {'key': 'xxxxx'}}, 'auth': {'sessionId': '6537a8e8afa7e9d90e1b290e4d2dff9e'}}
2023-08-02 23:39:31.049 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2023-08-02 23:39:31.050 DEBUG (MainThread) [custom_components.zcsmower] {'data': {'success': True, 'params': {'id': '64cacd12ba2b5769b479f719', 'orgId': '5853bd6cba2b57724c0c1341', 'ownerOrgId': '5853bd6cba2b57724c0c1341', 'permission': 'rw', 'name': 'auto:xxxxx', 'key': 'xxxxx', 'sessionRef': 'd9ca31acdf7aeb4a1b4408e47f3002f532fdcfb6d8a2247225dbdb5d115e0ef8', 'defId': '58a16f20447cfb2b8430be67', 'defName': 'Client', 'tags': ['client', 'ambrogio'], 'lastSeen': '2023-08-02T21:39:30.283Z', 'lastCommunication': '2023-08-02T21:39:30.283Z', 'tunnelActualHost': '127.0.0.1', 'tunnelVirtualHost': '127.0.0.1', 'createdBy': 'AUTOREG', 'createdOn': '2023-08-02T21:39:30.283Z', 'updatedBy': 'AUTOREG', 'updatedOn': '2023-08-02T21:39:30.283Z', 'defKey': 'client', 'connInfo': {'protocol': 'HTTPS', 'remoteAddr': '109.196.50.213:33408'}, 'connected': True, 'appId': True}}}
2023-08-02 23:39:31.050 DEBUG (MainThread) [custom_components.zcsmower] {'client_key': 'xxxxx', 'trace_position_enable': False, 'trace_position_interval_default': 3600, 'trace_position_interval_infinity': 600, 'wake_up_interval_default': 1800, 'wake_up_interval_infinity': 300, 'camera_enable': False, 'map_image_path': '', 'map_marker_path': '', 'map_gps_top_left': '', 'map_gps_bottom_right': '', 'map_history_enable': True, 'map_draw_lines': True, 'map_points': 100, 'lawn_mowers': {}}
2023-08-02 23:39:40.116 INFO (MainThread) [custom_components.zcsmower] 
2023-08-02 23:39:50.887 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2023-08-02 23:39:50.887 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': 'xxxxx', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': 'xxxxx'}}}
2023-08-02 23:39:51.016 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2023-08-02 23:39:51.016 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'success': True, 'params': {'orgKey': 'ZUCCHETTICENTROSISTEMI', 'sessionId': 'acb6dd4371487673290aa058819db26e'}}}
2023-08-02 23:39:51.016 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2023-08-02 23:39:51.017 DEBUG (MainThread) [custom_components.zcsmower] {'data': {'command': 'thing.find', 'params': {'imei': '359785020768936'}}, 'auth': {'sessionId': 'acb6dd4371487673290aa058819db26e'}}
2023-08-02 23:39:51.067 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2023-08-02 23:39:51.067 DEBUG (MainThread) [custom_components.zcsmower] {'data': {'success': True, 'params': {'id': '5d283daaba2b577ad69d5ac9', 'orgId': '5853bd6cba2b57724c0c1341', 'ownerOrgId': '5853bd6cba2b57724c0c1341', 'permission': 'rw', 'name': 'auto:359785020768936', 'key': '359785020768936', 'defId': '58a16f20447cfb2b8430be69', 'defName': 'Robot', 'tags': ['robot', 'ambrogio'], 'lastSeen': '2021-07-12T08:01:56.248Z', 'lastCommunication': '2021-07-12T08:01:56.248Z', 'locUpdated': '2021-07-12T08:00:52Z', 'loc': {'lat': 50.135107, 'lng': 18.747576, 'geohash': 'u2vm4wgd4jmf', 'fixType': 'network', 'speed': 0, 'addr': {'street': 'Wolności', 'city': 'Jaśkowice', 'state': 'Silesian Voivodeship', 'zipCode': '43-180', 'country': 'PL'}, 'since': '2021-07-12T08:00:21Z'}, 'module': {'make': 'Telit', 'model': 'GE910-GNSS', 'fwVersion': '13.00.109'}, 'tunnelActualHost': '127.0.0.1', 'tunnelVirtualHost': '127.0.0.1', 'attrs': {'apn': {'ts': '2021-07-12T08:00:24.741Z', 'since': '2020-03-15T13:07:56.022Z', 'value': 'nxt17.net'}, 'robot_client1': {'ts': '2020-02-12T13:08:04.125Z', 'since': '2020-02-12T13:08:04.125Z', 'value': 'ERDD8jrYVfRv6rt4BuESvIVblaJ3'}, 'robot_client4': {'ts': '2020-03-15T14:41:13.711Z', 'since': '2020-03-15T14:41:13.711Z', 'value': 'h3J6eVHucwV4eudwi1153u8sfUL2'}, 'robot_serial': {'ts': '2019-07-12T07:58:46.746Z', 'since': '2019-07-12T07:58:46.746Z', 'value': 'AM035DK919040577'}}, 'properties': {'geofence_location_counter': {'ts': '2020-08-19T18:07:01.963Z', 'value': 5, 'corrId': 'geofence'}, 'robot_error': {'ts': '2021-07-09T13:16:55.934Z', 'value': 166}}, 'alarms': {'connection_state': {'ts': '2021-07-12T08:01:56.248Z', 'since': '2021-07-12T08:01:56.248Z', 'state': 0}, 'data_th': {'ts': '2020-09-21T10:13:17.126Z', 'since': '2019-07-12T08:04:11.612Z', 'state': 0}, 'infinity_plan_status': {'ts': '2021-07-12T08:00:24.754Z', 'since': '2020-09-09T07:02:23.473Z', 'state': 3}, 'robot_state': {'ts': '2021-07-12T08:00:44.192Z', 'since': '2021-07-12T08:00:44.192Z', 'state': 9}}, 'apiCounts': {'daily': 0, 'monthToDate': 0, 'total': 4138}, 'createdBy': 'AUTOREG', 'createdOn': '2019-07-12T07:58:34.772Z', 'updatedBy': '359785020768936', 'updatedOn': '2021-06-12T12:18:24.411Z', 'defKey': 'robot', 'connected': False, 'appId': True}}}
2023-08-02 23:39:51.067 DEBUG (MainThread) [custom_components.zcsmower] {'client_key': 'xxxxx', 'trace_position_enable': False, 'trace_position_interval_default': 3600, 'trace_position_interval_infinity': 600, 'wake_up_interval_default': 1800, 'wake_up_interval_infinity': 300, 'camera_enable': False, 'map_image_path': '', 'map_marker_path': '', 'map_gps_top_left': '', 'map_gps_bottom_right': '', 'map_history_enable': True, 'map_draw_lines': True, 'map_points': 100, 'lawn_mowers': {'359785020768936': {'name': 'L35 Deluxe'}}}
2023-08-02 23:39:51.068 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2023-08-02 23:39:51.068 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'command': 'api.authenticate', 'params': {'appId': 'xxxxx', 'appToken': 'DJMYYngGNEit40vA', 'thingKey': 'xxxxx'}}}
2023-08-02 23:39:51.111 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2023-08-02 23:39:51.111 DEBUG (MainThread) [custom_components.zcsmower] {'auth': {'success': True, 'params': {'orgKey': 'ZUCCHETTICENTROSISTEMI', 'sessionId': '88cc577294dc72727d898f53a6b80607'}}}
2023-08-02 23:39:51.111 DEBUG (MainThread) [custom_components.zcsmower] API.request:
2023-08-02 23:39:51.111 DEBUG (MainThread) [custom_components.zcsmower] {'data': {'command': 'thing.list', 'params': {'show': ['id', 'key', 'name', 'connected', 'lastSeen', 'lastCommunication', 'loc', 'properties', 'alarms', 'attrs', 'createdOn', 'storage', 'varBillingPlanCode'], 'hideFields': True, 'keys': ['359785020768936']}}, 'auth': {'sessionId': '88cc577294dc72727d898f53a6b80607'}}
2023-08-02 23:39:51.164 DEBUG (MainThread) [custom_components.zcsmower] API.response:
2023-08-02 23:39:51.164 DEBUG (MainThread) [custom_components.zcsmower] {'data': {'success': True, 'params': {'count': 1, 'result': [{'alarms': {'connection_state': {'ts': '2021-07-12T08:01:56.248Z', 'since': '2021-07-12T08:01:56.248Z', 'state': 0}, 'data_th': {'ts': '2020-09-21T10:13:17.126Z', 'since': '2019-07-12T08:04:11.612Z', 'state': 0}, 'infinity_plan_status': {'ts': '2021-07-12T08:00:24.754Z', 'since': '2020-09-09T07:02:23.473Z', 'state': 3}, 'robot_state': {'ts': '2021-07-12T08:00:44.192Z', 'since': '2021-07-12T08:00:44.192Z', 'state': 9}}, 'attrs': {'apn': {'ts': '2021-07-12T08:00:24.741Z', 'since': '2020-03-15T13:07:56.022Z', 'value': 'nxt17.net'}, 'robot_client1': {'ts': '2020-02-12T13:08:04.125Z', 'since': '2020-02-12T13:08:04.125Z', 'value': 'ERDD8jrYVfRv6rt4BuESvIVblaJ3'}, 'robot_client4': {'ts': '2020-03-15T14:41:13.711Z', 'since': '2020-03-15T14:41:13.711Z', 'value': 'h3J6eVHucwV4eudwi1153u8sfUL2'}, 'robot_serial': {'ts': '2019-07-12T07:58:46.746Z', 'since': '2019-07-12T07:58:46.746Z', 'value': 'AM035DK919040577'}}, 'connected': False, 'createdOn': '2019-07-12T07:58:34.772Z', 'id': '5d283daaba2b577ad69d5ac9', 'key': '359785020768936', 'lastCommunication': '2021-07-12T08:01:56.248Z', 'lastSeen': '2021-07-12T08:01:56.248Z', 'loc': {'addr': {'city': 'Jaśkowice', 'country': 'PL', 'state': 'Silesian Voivodeship', 'street': 'Wolności', 'zipCode': '43-180'}, 'fixType': 'network', 'geohash': 'u2vm4wgd4jmf', 'lat': 50.135107, 'lng': 18.747576, 'since': '2021-07-12T08:00:21Z', 'speed': 0}, 'locUpdated': '2021-07-12T08:00:52Z', 'name': 'auto:359785020768936', 'properties': {'geofence_location_counter': {'ts': '2020-08-19T18:07:01.963Z', 'value': 5, 'corrId': 'geofence'}, 'robot_error': {'ts': '2021-07-09T13:16:55.934Z', 'value': 166}}, 'varBillingPlanCode': ''}]}}}
2023-08-02 23:39:51.164 DEBUG (MainThread) [custom_components.zcsmower] _async_update_data
2023-08-02 23:39:51.164 DEBUG (MainThread) [custom_components.zcsmower] {'359785020768936': {'imei': '359785020768936', 'name': 'L35 Deluxe', 'infinity': 'deactivated', 'state': 'expired', 'icon': 'mdi:clock-alert', 'working': False, 'available': True, 'error': None, 'location': {}, 'location_history': None, 'serial': 'AM035DK919040577', 'manufacturer': 'Ambrogio Robot', 'model': 'L35 Deluxe', 'sw_version': None, 'connected': False, 'last_communication': datetime.datetime(2021, 7, 12, 10, 1, 56, 248000, tzinfo=zoneinfo.ZoneInfo(key='Europe/Warsaw')), 'last_seen': datetime.datetime(2021, 7, 12, 10, 1, 56, 248000, tzinfo=zoneinfo.ZoneInfo(key='Europe/Warsaw')), 'last_pull': datetime.datetime(2023, 8, 2, 23, 39, 51, 164853, tzinfo=zoneinfo.ZoneInfo(key='Europe/Warsaw')), 'last_state': 'expired', 'last_wake_up': None, 'last_trace_position': None}}
2023-08-02 23:39:51.165 DEBUG (MainThread) [custom_components.zcsmower] Finished fetching zcsmower data in 0.097 seconds (success: True)
2023-08-02 23:39:51.171 INFO (MainThread) [custom_components.zcsmower] Map camera disabled

So it is connecting, grabbing serial number and some other things, butā€¦ of course problem.
Bluetooth integration added.
HA 2023.07.3

Diags:

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.7.3",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.4",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Warsaw",
    "os_name": "Linux",
    "os_version": "6.1.21-v8",
    "supervisor": "2023.07.1",
    "host_os": "Home Assistant OS 10.3",
    "docker_version": "23.0.6",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "hacs": {
      "version": "1.32.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "powercalc": {
      "version": "v1.5.0",
      "requirements": [
        "numpy>=1.21.1"
      ]
    },
    "localtuya": {
      "version": "5.0.0",
      "requirements": []
    },
    "thermal_comfort": {
      "version": "2.1.1",
      "requirements": []
    },
    "auto_backup": {
      "version": "1.3.2",
      "requirements": []
    },
    "virtual": {
      "version": "0.8.0b1",
      "requirements": []
    },
    "zcsmower": {
      "version": "0.9.5",
      "requirements": [
        "numpy>=1.21.6",
        "pillow==9.5.0"
      ]
    },
    "weather_data": {
      "version": "0.2.1",
      "requirements": [
        "xmltodict==0.12.0"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zcsmower",
    "name": "ZCS Lawn Mower Robot",
    "after_dependencies": [
      "recorder"
    ],
    "codeowners": [
      "@ufozone"
    ],
    "config_flow": true,
    "dependencies": [],
    "documentation": "https://github.com/ufozone/ha-zcs-mower",
    "integration_type": "hub",
    "iot_class": "cloud_polling",
    "issue_tracker": "https://github.com/ufozone/ha-zcs-mower/issues",
    "requirements": [
      "numpy>=1.21.6",
      "pillow==9.5.0"
    ],
    "version": "0.9.5",
    "is_built_in": false
  },
  "data": {
    "config_entry_data": {
      "entry_id": "942efd6c49da6e7aeb84618a9fba6534",
      "version": 7,
      "domain": "zcsmower",
      "title": "My Garage",
      "data": {},
      "options": {
        "client_key": "**REDACTED**",
        "trace_position_enable": "**REDACTED**",
        "trace_position_interval_default": 3600,
        "trace_position_interval_infinity": 600,
        "wake_up_interval_default": 1800,
        "wake_up_interval_infinity": 300,
        "camera_enable": "**REDACTED**",
        "map_image_path": "",
        "map_marker_path": "",
        "map_gps_top_left": "",
        "map_gps_bottom_right": "",
        "map_history_enable": "**REDACTED**",
        "map_draw_lines": true,
        "map_points": 100,
        "lawn_mowers": {
          "359785020768936": {
            "name": "L35 Deluxe"
          }
        }
      },
      "pref_disable_new_entities": false,
      "pref_disable_polling": false,
      "source": "user",
      "unique_id": null,
      "disabled_by": null
    },
    "coordinator_data": {
      "359785020768936": {
        "imei": "359785020768936",
        "name": "L35 Deluxe",
        "infinity": "deactivated",
        "state": "expired",
        "icon": "mdi:clock-alert",
        "working": false,
        "available": true,
        "error": null,
        "location": {},
        "location_history": [],
        "serial": "AM035DK919040577",
        "manufacturer": "Ambrogio Robot",
        "model": "L35 Deluxe",
        "sw_version": null,
        "connected": false,
        "last_communication": "2021-07-12T10:01:56.248000+02:00",
        "last_seen": "2021-07-12T10:01:56.248000+02:00",
        "last_pull": "2023-08-02T23:20:30.883612+02:00",
        "last_state": "expired",
        "last_wake_up": null,
        "last_trace_position": null
      }
    }
  }
}

I did something wrong?

1 Like

@ufozone
I have to mention you, maybe you will be able to give me a hint? :slight_smile: Please?

Hi, I have just installed the integration and have it working on my Ambrogio 4.0 Elite, I havenā€™t added the map yet. We are an Ambrogio dealer so Iā€™ll try it out on a Twenty Elite and a Twenty 25 Elite.
One question, does it poll for updates? When the App requests a status then it gives you the latest status reported to the cloud but will also request a status update from the mower if there hasnā€™t been one in the recent future. The reason I ask is that with the standard SIM, there is a limited data allowance so just concerned about using it all up, especially if you are plotting it on a map.
Thanks.

Youā€™re not doing anything wrong. The integration only uses the cloud, but not the bluetooth connection. (I have no idea about that.) However, your subscription to the cloud connection has expired, so unfortunately you canā€™t use my integration. The owner of the first ā€œexclusively Ambrogio robotā€ integration is thinking about reverse engineering the bluetooth connection. Feel free to encourage him to do so: Allow Setup using Firebase API as per Mobile App Ā· Issue #28 Ā· sHedC/homeassistant-ambrogio Ā· GitHub

Thank you for your feedback! Your concerns are (unfortunately) completely justified. For this reason, I have been tuning the update values for several weeks (see my many ā€œoptimize wake up, update, trace position intervalā€ commits). Most recently, I also made the values all configurable:

I distinguish once into the update interval when the mower is idle and a shorter interval when it is working. This means that the working status (go to area, mowing, border cut, go to station, error) is updated more frequently.

BUT: Activating the map does not change the intervals or data usage. The coordinates come back with the API request anyway and are only displayed on the map. They are stored even without activated map - for this you can once display the device_tracker entity in a map card.

By activating the ā€œTrace Positionā€ setting, the usage increases significantly, because the mower then pushes the current and, above all, precise coordinates to the cloud more often.

I was just going to update my post as I saw on the App that it was polling every 5 mins (it is using +Infinity). The mower does report the status to the cloud when a significant event occurs i.e. docking, leaving dock, error etc. but Iā€™m not sure if you can request the latest state from the cloud without triggering a request to the mowerā€¦Iā€™ll see if I can find out from Ambrogio.

I just had a thoughtā€¦Iā€™m pretty sure that the Statistics/ Timeline option in the App just pulls the latest events info from the cloud and doesnā€™t request an update from the mower.

Today I released a new version that allows you to define a main working time (standby) and a non-productive time (idle). The update interval can be configured differently for both. This allows you to keep updates to a minimum outside of the working hours configured in the lawn mower.

This is how the configuration looks if no update should take place between 10 p.m. and 8 a.m:
grafik

The current status can be updated at any time using the ā€œlocateā€ command in the vaccum entity.

1 Like

Hi,

Can you expand on your comment for iOS users. i understand that the localid is displayed in uppercase in the iOS app but what steps did you do to determine the proper capitalisation of the localid?

Iā€™m not using google to authenticate, just a simple email and password and so iā€™m not sure of the first step to get the JSON response with the correct localid.

Did you use the exact same steps as detailed by @ufozone?

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!