From f9ac47df7d96ebd990a94a5907f879376ca847fa Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Sun, 19 Jun 2022 17:39:43 -0400 Subject: [PATCH 1/3] 0.18.0.dev0 version bump --- zigpy_deconz/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zigpy_deconz/__init__.py b/zigpy_deconz/__init__.py index 11b3303..c348846 100644 --- a/zigpy_deconz/__init__.py +++ b/zigpy_deconz/__init__.py @@ -2,7 +2,7 @@ # coding: utf-8 MAJOR_VERSION = 0 -MINOR_VERSION = 17 +MINOR_VERSION = 18 PATCH_VERSION = "0.dev0" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}" From 6d86840c1bc3a3d128c1bec8ae39fd5dd3b46fa7 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Sun, 26 Jun 2022 22:01:05 -0400 Subject: [PATCH 2/3] Ensure the watchdog is always re-started when the network state changes --- tests/test_application.py | 13 +++++-------- zigpy_deconz/zigbee/application.py | 26 ++++++++------------------ 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/tests/test_application.py b/tests/test_application.py index 3129994..012971c 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -252,15 +252,12 @@ async def test_start_network(app, proto_ver, nwk_state, error): with patch.object(application.DeconzDevice, "initialize", AsyncMock()): await app.start_network() assert app.load_network_info.await_count == 1 + assert app._change_network_state.await_count == 1 - if nwk_state != deconz_api.NetworkState.CONNECTED: - assert app._change_network_state.await_count == 1 - assert ( - app._change_network_state.await_args_list[0][0][0] - == deconz_api.NetworkState.CONNECTED - ) - else: - assert app._change_network_state.await_count == 0 + assert ( + app._change_network_state.await_args_list[0][0][0] + == deconz_api.NetworkState.CONNECTED + ) if proto_ver >= application.PROTO_VER_NEIGBOURS: assert app.restore_neighbours.await_count == 1 diff --git a/zigpy_deconz/zigbee/application.py b/zigpy_deconz/zigbee/application.py index a8fbb5e..27aa4b8 100644 --- a/zigpy_deconz/zigbee/application.py +++ b/zigpy_deconz/zigbee/application.py @@ -80,8 +80,9 @@ async def _reset_watchdog(self): await self._api.write_parameter( NetworkParameter.watchdog_ttl, self._config[CONF_WATCHDOG_TTL] ) - except (asyncio.TimeoutError, zigpy.exceptions.ZigbeeException): - LOGGER.warning("No watchdog response") + except Exception as e: + LOGGER.warning("Failed to reset watchdog", exc_info=e) + await asyncio.sleep(self._config[CONF_WATCHDOG_TTL] * 0.75) async def connect(self): @@ -95,15 +96,7 @@ async def disconnect(self): if self._reset_watchdog_task is not None: self._reset_watchdog_task.cancel() - if self._api is None: - return - - try: - if self._api.protocol_version >= PROTO_VER_WATCHDOG: - await self._api.write_parameter(NetworkParameter.watchdog_ttl, 1) - except zigpy_deconz.exception.CommandError: - pass - finally: + if self._api is not None: self._api.close() async def permit_with_key(self, node: t.EUI64, code: bytes, time_s=60): @@ -113,13 +106,10 @@ async def start_network(self): await self.register_endpoints() await self.load_network_info(load_devices=False) - device_state, _, _ = await self._api.device_state() - - if device_state.network_state != NetworkState.CONNECTED: - try: - await self._change_network_state(NetworkState.CONNECTED) - except asyncio.TimeoutError as e: - raise FormationFailure() from e + try: + await self._change_network_state(NetworkState.CONNECTED) + except asyncio.TimeoutError as e: + raise FormationFailure() from e coordinator = await DeconzDevice.new( self, From 34697799df21d0c67e82652ea8e9963f611fa1fd Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Mon, 27 Jun 2022 00:10:21 -0400 Subject: [PATCH 3/3] 0.18.0 version bump --- zigpy_deconz/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zigpy_deconz/__init__.py b/zigpy_deconz/__init__.py index c348846..c91bb45 100644 --- a/zigpy_deconz/__init__.py +++ b/zigpy_deconz/__init__.py @@ -3,6 +3,6 @@ # coding: utf-8 MAJOR_VERSION = 0 MINOR_VERSION = 18 -PATCH_VERSION = "0.dev0" +PATCH_VERSION = "0" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}"