Skip to content

HA sensors going often to unavailable state #313

@elmr91

Description

@elmr91

I noticed I got several error messages when the vehicule is active/driving:

Note : Polling was initially every 60s, I decreased it to 30s for testing (not better).

2025-04-14 19:01:54,012 [ ERROR  ] handle_vehicle loop failed during SAIC API call - handlers.vehicle
Traceback (most recent call last):
  File "/usr/src/app/handlers/vehicle.py", line 97, in handle_vehicle
    await self.__polling()
  File "/usr/src/app/handlers/vehicle.py", line 124, in __polling
    vehicle_status = await self.update_vehicle_status()
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/handlers/vehicle.py", line 181, in update_vehicle_status
    vehicle_status_response = await self.saic_api.get_vehicle_status(self.vin_info.vin)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/saic_ismart_client_ng/api/vehicle/__init__.py", line 15, in get_vehicle_status
    return await self.execute_api_call_with_event_id(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/saic_ismart_client_ng/api/base.py", line 139, in execute_api_call_with_event_id
    return await execute_api_call_with_event_id_inner(event_id='0')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 189, in async_wrapped
    return await copy(fn, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 111, in __call__
    do = await self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 153, in iter
    result = await action(retry_state)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 99, in inner
    return call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 418, in exc_check
    raise retry_exc.reraise()
          ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 185, in reraise
    raise self.last_attempt.result()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 114, in __call__
    result = await fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/saic_ismart_client_ng/api/base.py", line 130, in execute_api_call_with_event_id_inner
    return await self.__execute_api_call(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/saic_ismart_client_ng/api/base.py", line 107, in __execute_api_call
    return await self.__deserialize(req, response, out_type, allow_null_body)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/saic_ismart_client_ng/api/base.py", line 200, in __deserialize
    raise se
  File "/usr/local/lib/python3.12/site-packages/saic_ismart_client_ng/api/base.py", line 167, in __deserialize
    raise SaicApiRetryException(error_message, event_id=event_id, return_code=return_code)
saic_ismart_client_ng.exceptions.SaicApiRetryException: return code: 4, message: The remote control instruction failed, please try again later., event_id: 1548216868
2025-04-14 19:02:22,507 [  INFO  ] Running job "Check for new messages (trigger: interval[0:00:30], next run at: 2025-04-14 19:02:52 CEST)" (scheduled at 2025-04-14 19:02:22.505006+02:00) - apscheduler.executors.default
2025-04-14 19:02:22,702 [  INFO  ] Job "Check for new messages (trigger: interval[0:00:30], next run at: 2025-04-14 19:02:52 CEST)" executed successfully - apscheduler.executors.default
2025-04-14 19:02:52,506 [  INFO  ] Running job "Check for new messages (trigger: interval[0:00:30], next run at: 2025-04-14 19:03:22 CEST)" (scheduled at 2025-04-14 19:02:52.505006+02:00) - apscheduler.executors.default
2025-04-14 19:02:52,660 [  INFO  ] Job "Check for new messages (trigger: interval[0:00:30], next run at: 2025-04-14 19:03:22 CEST)" executed successfully - apscheduler.executors.default`

Next loop (or the one after) is generally OK.

When this error occurs, it seems the HA position sensor is switched temporarily to "unavailable"
This causes problems with scenario based on movement calculations.
Would it be possible to be tolerant to intermittent failures (for few consecutive polling errors) ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions