Giter VIP home page Giter VIP logo

ha-zcs-mower's People

Contributors

dependabot[bot] avatar ufozone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ha-zcs-mower's Issues

Garage name

Can you please help me with the config dialog: it asks for Garage Name, what is? And the client key that I find in my app I capitals, is It a [problem?

Lawn mover status expired

HI

I tried via forum, but seems here it is better place:
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

Info from diagnostics:

{
  "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
      }
    }
  }
}

Impossible to connect to server

I tried to use your integration but it does not allow me to connect to server
image
I have inserted client ID but I do not know what to place on Garage Name ... I used Clint Name, robot Name ... no changes

Giuliano

device_tracker entity: 'NoneType' object has no attribute 'async_create_task'

[homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/device_tracker.py", line 120, in _get_location_history
    self.hass.async_create_task(
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'async_create_task'

Get Infinity+ expiration date

Get infinity_expiration_date from lawn mower attributes.
Use it in coordinator for checking Infinity+ for working intervals.

Related to #96

Improve storing the GPS position

If no GPS position is specified, an empty string is saved by default. As soon as one is specified, the coordinates are saved in a list.

If no position is specified, None should be set as the default.

Stiga A 3000 supported?

Hi, I would like to try your component, but I'm not sure which lawn mower models are supported. How do I know if the robot is based on the ZCS Lawn Mower Robots platform?

Get data expiration date

Get expiration_date from lawn mower attributes.
If not available, it must be calculated from created_on plus 730 days

Related to #100

Robot starts and back to base immediately

My garden is split in two areas.. when I starts mower from official app it is required to select the area. In HACS app it is not possible to select the area.. this is probably the reason why robots starts and immediately back to the base.

Do you have any idea how to select the cutting area? I have two areas in total.

Thanks

Error adding entity device_tracker

2024-05-04 21:11:44.206 WARNING (DbWorker_1) [homeassistant.helpers.frame] Detected that custom integration 'zcsmower' calls async_create_task from a thread at custom_components/zcsmower/device_tracker.py, line 124: self.hass.async_create_task(, please report it to the author of the 'zcsmower' custom integration
2024-05-04 21:11:44.259 ERROR (MainThread) [homeassistant.components.device_tracker] Error adding entity device_tracker.mower_359129350765594 for domain device_tracker with platform zcsmower
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 892, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1365, in add_to_platform_finish
    await self.async_added_to_hass()
  File "/config/custom_components/zcsmower/device_tracker.py", line 96, in async_added_to_hass
    await get_instance(self.hass).async_add_executor_job(
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/zcsmower/device_tracker.py", line 124, in _get_location_history
    self.hass.async_create_task(
  File "/usr/src/homeassistant/homeassistant/core.py", line 804, in async_create_task
    self.verify_event_loop_thread("async_create_task")
  File "/usr/src/homeassistant/homeassistant/core.py", line 440, in verify_event_loop_thread
    frame.report(
  File "/usr/src/homeassistant/homeassistant/helpers/frame.py", line 162, in report
    _report_integration(what, integration_frame, level, error_if_integration)
  File "/usr/src/homeassistant/homeassistant/helpers/frame.py", line 203, in _report_integration
    raise RuntimeError(
RuntimeError: Detected that custom integration 'zcsmower' calls async_create_task from a thread at custom_components/zcsmower/device_tracker.py, line 124: self.hass.async_create_task(. Please report it to the author of the 'zcsmower' custom integration.

Detected blocking call to open inside the event loop by image entity


2024-06-04 22:11:03.377 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to open inside the event loop by custom integration 'zcsmower' at custom_components/zcsmower/image.py, line 161: map_image = Image.open(map_image_path, "r") (offender: /usr/local/lib/python3.12/site-packages/PIL/Image.py, line 3277: fp = builtins.open(filename, "rb")), please create a bug report at https://github.com/ufozone/ha-zcs-mower/issues
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 188, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once
    handle._run()
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/config/custom_components/zcsmower/coordinator.py", line 224, in <lambda>
    lambda: self.async_update_listeners(),
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 165, in async_update_listeners
    update_callback()
  File "/config/custom_components/zcsmower/image.py", line 435, in _handle_coordinator_update
    self._generate_image()
  File "/config/custom_components/zcsmower/image.py", line 161, in _generate_image
    map_image = Image.open(map_image_path, "r")


0.45 vs 0.44

Hello,

I am new with HA. However, I am trying to understand how it works and this add-on is interesting me.
I have 2 HA for testing, 1 was with the 0.44 version while the other has now the 0.45.
And btw these 2 versions, there are some differences:
Capture d'écran 2023-05-10 225612
This screenshot above is with the 0.44 : Model is not correct, Brand is ok and firmware is ok. And three are 4 entities. The control is there and actions seems ok.
The screenshot below is with the 0.45 : Model, brand and firmware are ok. And there are only 3 entities. I lost the control one.
Capture d'écran 2023-05-10 225551
Thank you for your work :-)

Add new robot states

New robot states

                        {
                            "name": "MAPPING_STARTED",
                            "color": "#007A08"
                        },
                        {
                            "name": "MAPPING_ENDED",
                            "color": "#D67070"
                        }

Update lawn mower models

Ambrogio:

  • AM095L: "CUBE Elite 4WD"

Kubota:

  • KB250L: "KR250"
  • KB250P: "KR250"
  • KB350L: "KR350"
  • KB400B: "KR400B"
  • KB400D: "KR400"

GPS out of position

After the 1.5 update the GPS positions on the map appear to be offset.

Before (positions OK):
Captura de pantalla -2024-06-11 13-23-57
After (positions NOK):
Captura de pantalla -2024-06-11 13-14-42

Both have the same top left corner & bottom right corner GPS positions and the same map

Thank you for your work, really appreciated!

Improve integration setup

In config flow:

  • check client key upper case and inform via error msg
  • inform about client key (find in app, uppercase,...)
  • inform about garage name
  • inform about best practice map configuration (link)

In README:

  • inform about uppercase client key in iphone app

Updates stopped at the start of the standby time

If an update is running shortly before the start of the standby time, the update process may be aborted.

Reproduced:
Start standby time (24h format): 14:52:00
Seconds between updates outside the standby time: 86400
Calculated next update: 2024-02-23 14:51:59.655107+01:00

Log:

2024-02-23 13:51:59.957 DEBUG (MainThread) [custom_components.zcsmower] update_interval - now: 2024-02-23 14:51:59.957567+01:00
2024-02-23 13:51:59.959 DEBUG (MainThread) [custom_components.zcsmower] update_interval - Current time is out of standby time
2024-02-23 13:51:59.959 DEBUG (MainThread) [custom_components.zcsmower] update_interval - standby_time_start: 1900-01-01 14:52:00
2024-02-23 13:51:59.959 DEBUG (MainThread) [custom_components.zcsmower] update_interval - standby_time_start as_local: 1900-01-01 14:52:00+01:00
2024-02-23 13:51:59.960 DEBUG (MainThread) [custom_components.zcsmower] update_interval - time_to_standby: 0
2024-02-23 13:51:59.961 DEBUG (MainThread) [custom_components.zcsmower] update_interval - Time until start of standby time is shorter than default update interval
2024-02-23 13:51:59.961 DEBUG (MainThread) [custom_components.zcsmower] update_interval - suggested_update_interval: 0:00:00
2024-02-23 13:51:59.962 DEBUG (MainThread) [custom_components.zcsmower] update_interval - next_pull: 2024-02-23 14:51:59.957567+01:00

zone's - request

It will be great to know in what zone it was mowing, it's not shown in the APP, but it might be readable from API?

Setup of package 'services' failed: Integration 'XXXX' not found.

I have a "Configuration warnings"
Setup of package 'services' failed: Integration 'update_now' not found.
Setup of package 'services' failed: Integration 'set_profile' not found.
Setup of package 'services' failed: Integration 'work_now' not found.
Setup of package 'services' failed: Integration 'work_for' not found.
Setup of package 'services' failed: Integration 'work_until' not found.
Setup of package 'services' failed: Integration 'border_cut' not found.
Setup of package 'services' failed: Integration 'charge_now' not found.
Setup of package 'services' failed: Integration 'charge_for' not found.
Setup of package 'services' failed: Integration 'charge_until' not found.
Setup of package 'services' failed: Integration 'trace_position' not found.
Setup of package 'services' failed: Integration 'keep_out' not found.
Setup of package 'services' failed: Integration 'custom_command' not found.

what does it mean — How to fix it pleeaseeee. help

Losing ZCS integration after update HomeAssistant

¡Hi there!

Everytime I update Home Assistant I loose ZCS integration (wich is very useful for my Ambrogio L250i).
I'm resolving this issue adding again ZCS to integrations and reconfiguring all.

I don't know much about the problem but I can give the register's info:

Detected blocking call to open inside the event loop by custom integration 'zcsmower' at custom_components/zcsmower/image.py, line 161: map_image = Image.open(map_image_path, "r") (offender: /usr/local/lib/python3.12/site-packages/PIL/Image.py, line 3277: fp = builtins.open(filename, "rb")), please create a bug report at https://github.com/ufozone/ha-zcs-mower/issues Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/main.py", line 223, in sys.exit(main()) File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self.args) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 742, in async_setup_locked await self.async_setup(hass, integration=integration) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 594, in async_setup result = await component.async_setup_entry(hass, self) File "/config/custom_components/zcsmower/init.py", line 68, in async_setup_entry await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2032, in async_forward_entry_setups await asyncio.gather( File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2034, in create_eager_task( File "/usr/src/homeassistant/homeassistant/util/async.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2081, in _async_forward_entry_setup await entry.async_setup(self.hass, integration=integration) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 594, in async_setup result = await component.async_setup_entry(hass, self) File "/usr/src/homeassistant/homeassistant/components/image/init.py", line 125, in async_setup_entry return await component.async_setup_entry(entry) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 196, in async_setup_entry return await self._platforms[key].async_setup_entry(config_entry) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 333, in async_setup_entry return await self._async_setup_platform(async_create_setup_awaitable) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 363, in async_setup_platform awaitable = create_eager_task(awaitable, loop=hass.loop) File "/usr/src/homeassistant/homeassistant/util/async.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/config/custom_components/zcsmower/image.py", line 78, in async_setup_entry async_add_entities( File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 515, in async_schedule_add_entities_for_entry task = self.config_entry.async_create_task( File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1134, in async_create_task task = hass.async_create_task_internal( File "/usr/src/homeassistant/homeassistant/core.py", line 828, in async_create_task_internal task = create_eager_task(target, name=name, loop=self.loop) File "/usr/src/homeassistant/homeassistant/util/async.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 649, in async_add_entities await add_func(coros, entities, timeout) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 555, in async_add_and_update_entities tasks = [create_eager_task(coro, loop=self.hass.loop) for coro in coros] File "/usr/src/homeassistant/homeassistant/util/async.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 729, in _async_add_entity await entity.async_device_update(warning=False) File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1289, in async_device_update await self.async_update() File "/config/custom_components/zcsmower/image.py", line 429, in async_update self._generate_image() File "/config/custom_components/zcsmower/image.py", line 161, in _generate_image map_image = Image.open(map_image_path, "r")
Detected blocking call to open inside the event loop by custom integration 'zcsmower' at custom_components/zcsmower/image.py, line 161: map_image = Image.open(map_image_path, "r") (offender: /usr/local/lib/python3.12/site-packages/PIL/Image.py, line 3277: fp = builtins.open(filename, "rb")), please create a bug report at https://github.com/ufozone/ha-zcs-mower/issues Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/main.py", line 223, in sys.exit(main()) File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/config/custom_components/zcsmower/coordinator.py", line 224, in lambda: self.async_update_listeners(), File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 165, in async_update_listeners update_callback() File "/config/custom_components/zcsmower/image.py", line 435, in _handle_coordinator_update self._generate_image() File "/config/custom_components/zcsmower/image.py", line 161, in _generate_image map_image = Image.open(map_image_path, "r")
Detected blocking call to open inside the event loop by custom integration 'zcsmower' at custom_components/zcsmower/image.py, line 247: map_marker = Image.open(map_marker_path, "r") (offender: /usr/local/lib/python3.12/site-packages/PIL/Image.py, line 3277: fp = builtins.open(filename, "rb")), please create a bug report at https://github.com/ufozone/ha-zcs-mower/issues Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/main.py", line 223, in sys.exit(main()) File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/config/custom_components/zcsmower/coordinator.py", line 224, in lambda: self.async_update_listeners(), File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 165, in async_update_listeners update_callback() File "/config/custom_components/zcsmower/image.py", line 435, in _handle_coordinator_update self._generate_image() File "/config/custom_components/zcsmower/image.py", line 247, in _generate_image map_marker = Image.open(map_marker_path, "r")
Detected blocking call to open inside the event loop by custom integration 'zcsmower' at custom_components/zcsmower/image.py, line 161: map_image = Image.open(map_image_path, "r") (offender: /usr/local/lib/python3.12/site-packages/PIL/Image.py, line 3277: fp = builtins.open(filename, "rb")), please create a bug report at https://github.com/ufozone/ha-zcs-mower/issues Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/main.py", line 223, in sys.exit(main()) File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 255, in _handle_refresh_interval await self._async_refresh(log_failures=True, scheduled=True) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 411, in _async_refresh self.async_update_listeners() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 165, in async_update_listeners update_callback() File "/config/custom_components/zcsmower/image.py", line 435, in _handle_coordinator_update self._generate_image() File "/config/custom_components/zcsmower/image.py", line 161, in _generate_image map_image = Image.open(map_image_path, "r")
Detected blocking call to open inside the event loop by custom integration 'zcsmower' at custom_components/zcsmower/image.py, line 247: map_marker = Image.open(map_marker_path, "r") (offender: /usr/local/lib/python3.12/site-packages/PIL/Image.py, line 3277: fp = builtins.open(filename, "rb")), please create a bug report at https://github.com/ufozone/ha-zcs-mower/issues Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/main.py", line 223, in sys.exit(main()) File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 255, in _handle_refresh_interval await self._async_refresh(log_failures=True, scheduled=True) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 411, in _async_refresh self.async_update_listeners() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 165, in async_update_listeners update_callback() File "/config/custom_components/zcsmower/image.py", line 435, in _handle_coordinator_update self._generate_image() File "/config/custom_components/zcsmower/image.py", line 247, in _generate_image map_marker = Image.open(map_marker_path, "r")

Requirements for zcsmower not found: ['pillow==9.5.0'].

Hello,

I have updated HA this morning to the august version and I got this error after restarting it.
Logger: homeassistant.setup
Source: setup.py:209
First occurred: 07:26:26 (1 occurrences)
Last logged: 07:26:26

Setup failed for custom integration zcsmower: Requirements for zcsmower not found: ['pillow==9.5.0'].

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.