diff options
-rw-r--r-- | custom_components/skykettle/__init__.py | 8 | ||||
-rw-r--r-- | custom_components/skykettle/kettle_connection.py | 11 |
2 files changed, 12 insertions, 7 deletions
diff --git a/custom_components/skykettle/__init__.py b/custom_components/skykettle/__init__.py index f229c56..0d649ba 100644 --- a/custom_components/skykettle/__init__.py +++ b/custom_components/skykettle/__init__.py @@ -38,10 +38,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): async def poll(now, **kwargs) -> None: await kettle.update() - async_dispatcher_send(hass, DISPATCHER_UPDATE) + await hass.async_add_executor_job(async_dispatcher_send, hass, DISPATCHER_UPDATE) if hass.data[DOMAIN][DATA_WORKING]: - hass.data[DOMAIN][DATA_CANCEL] = ev.async_call_later( - hass, timedelta(seconds=entry.data[CONF_SCAN_INTERVAL]), poll) + await hass.async_add_executor_job(schedule_poll) + + def schedule_poll(): + hass.data[DOMAIN][DATA_CANCEL] = ev.async_call_later(hass, timedelta(seconds=entry.data[CONF_SCAN_INTERVAL]), poll) hass.data[DOMAIN][DATA_WORKING] = True hass.data[DOMAIN][DATA_CANCEL] = ev.async_call_later( diff --git a/custom_components/skykettle/kettle_connection.py b/custom_components/skykettle/kettle_connection.py index 9b04afa..ecec437 100644 --- a/custom_components/skykettle/kettle_connection.py +++ b/custom_components/skykettle/kettle_connection.py @@ -53,13 +53,13 @@ class KettleConnection(SkyKettle): if self.hass == None: self._child.sendline(data) else: - await self.hass.async_add_job(self._child.sendline, data) + await self.hass.async_add_executor_job(self._child.sendline, data) async def _sendcontrol(self, data): if self.hass == None: self._child.sendcontrol(data) else: - await self.hass.async_add_job(self._child.sendcontrol, data) + await self.hass.async_add_executor_job(self._child.sendcontrol, data) async def command(self, command, params=[]): if self._disposed: @@ -70,7 +70,7 @@ class KettleConnection(SkyKettle): _LOGGER.debug(f"Writing command {command:02x}, data: [{' '.join([f'{c:02x}' for c in params])}]") data = f"char-write-req 0x000e 55{self._iter:02x}{''.join([f'{c:02x}' for c in [command] + list(params)])}aa" #_LOGGER.debug(f"Writing {data}") - self._child.sendline(data) + await self._sendline(data) while True: r = await self._child.expect([ r"value:([ 0-9a-f]*)\r\n.*?\[LE\]> ", @@ -339,7 +339,10 @@ class KettleConnection(SkyKettle): _LOGGER.info("Disposed.") def __del__(self): - self.stop() + if self.hass == None: + self.stop() + else: + self.hass.async_add_executor_job(self.stop) @property def available(self): |