From b857f838dff06a9662258c97a3b529b9a8b2ffaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= <mail@dahoiv.net> Date: Sat, 18 Feb 2017 07:38:50 +0100 Subject: [PATCH] Broadlink (#6051) * Add fail checking of broadlink data --- homeassistant/components/sensor/broadlink.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sensor/broadlink.py b/homeassistant/components/sensor/broadlink.py index 5fda261b61c..64a5b73ba25 100644 --- a/homeassistant/components/sensor/broadlink.py +++ b/homeassistant/components/sensor/broadlink.py @@ -116,14 +116,20 @@ class BroadlinkData(object): def _update(self, retry=2): try: - self.data = self._device.check_sensors_raw() + data = self._device.check_sensors_raw() + if (data.get('humidity', 0) <= 100 and + data.get('light', 0) in [0, 1, 2, 3] and + data.get('air_quality', 0) in [0, 1, 2, 3] and + data.get('noise', 0) in [0, 1, 2]): + self.data = data + return except socket.timeout as error: if retry < 1: _LOGGER.error(error) return - if not self._auth(): - return - return self._update(max(0, retry-1)) + if retry < 1 or not self._auth(): + return + self._update(retry-1) def _auth(self, retry=2): try: @@ -131,5 +137,5 @@ class BroadlinkData(object): except socket.timeout: auth = False if not auth and retry > 0: - return self._auth(max(0, retry-1)) + return self._auth(retry-1) return auth -- GitLab