Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/skykettle-ha.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--custom_components/skykettle/__init__.py8
-rw-r--r--custom_components/skykettle/kettle_connection.py11
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):