From f971646333645447fe9c2156a0e2cbc2b166b9b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Sun, 4 Oct 2020 22:07:38 +0200 Subject: [PATCH] Close connection properly on error --- custom_components/localtuya/common.py | 2 +- custom_components/localtuya/pytuya/__init__.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/custom_components/localtuya/common.py b/custom_components/localtuya/common.py index aed142d..13c99f0 100644 --- a/custom_components/localtuya/common.py +++ b/custom_components/localtuya/common.py @@ -108,7 +108,7 @@ class TuyaDevice(pytuya.TuyaListener): for entity in config_entry[CONF_ENTITIES]: self._dps_to_request[entity[CONF_ID]] = None - def connect(self, delay=None): + def connect(self): """Connet to device if not already connected.""" if self._connect_task is None: self._connect_task = asyncio.ensure_future(self._make_connection()) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index fc169c0..c68d362 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -336,11 +336,13 @@ class TuyaProtocol(asyncio.Protocol): def close(self): """Close connection and abort all outstanding listeners.""" if self.transport is not None: - self.dispatcher.abort() - self.heartbeater.cancel() transport = self.transport self.transport = None transport.close() + if self.dispatcher is not None: + self.dispatcher.abort() + if self.heartbeater is not None: + self.heartbeater.cancel() async def exchange(self, command, dps=None): """Send and receive a message, returning response from device."""