thomasloven / hass-plejd

🔹 Plejd BLE integration for Home Assistant
81 stars 10 forks source link

Fix coroutines for ping and broadcast_time #38

Closed oyvindwe closed 10 months ago

oyvindwe commented 10 months ago

Fixes the following error for _ping (logged every 10 minutes):

2023-08-28 20:59:27.054 ERROR (MainThread) [homeassistant] Error doing job: Exception in callback async_track_point_in_utc_time.<locals>.run_action(<Job track ti...7f6d3cdf7c40>>) at /usr/src/homeassistant/homeassistant/helpers/event.py:1396
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 1411, in run_action
    hass.async_run_hass_job(job, utc_point_in_time)
  File "/usr/src/homeassistant/homeassistant/core.py", line 625, in async_run_hass_job
    hassjob.target(*args)
  File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 1500, in interval_listener
    hass.async_run_hass_job(job, now)
  File "/usr/src/homeassistant/homeassistant/core.py", line 628, in async_run_hass_job
    return self.async_add_hass_job(hassjob, *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 522, in async_add_hass_job
    task = self.loop.create_task(hassjob.target(*args), name=hassjob.name)
                                 ^^^^^^^^^^^^^^^^^^^^^
TypeError: async_setup_entry.<locals>._ping() takes 0 positional arguments but 1 was given

Fixes the following error for broadcast_time (logged every hour):

2023-08-28 20:39:27.041 ERROR (MainThread) [homeassistant] Error doing job: Exception in callback async_track_point_in_utc_time.<locals>.run_action(<Job track ti...7f6d3c886ca0>>) at /usr/src/homeassistant/homeassistant/helpers/event
.py:1396
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 1411, in run_action
    hass.async_run_hass_job(job, utc_point_in_time)
  File "/usr/src/homeassistant/homeassistant/core.py", line 625, in async_run_hass_job
    hassjob.target(*args)
  File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 1500, in interval_listener
    hass.async_run_hass_job(job, now)
  File "/usr/src/homeassistant/homeassistant/core.py", line 628, in async_run_hass_job
    return self.async_add_hass_job(hassjob, *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 522, in async_add_hass_job
    task = self.loop.create_task(hassjob.target(*args), name=hassjob.name)
                                 ^^^^^^^^^^^^^^^^^^^^^
TypeError: PlejdManager.broadcast_time() takes 1 positional argument but 2 were given

HA passes the current time as an argument to these coroutines. In the latter case, this is a reguler method, not a coroutine, so I made a wrapper similarly to _ping().

thomasloven commented 10 months ago

Well... that's an embarrasing miss. Thanks a lot!