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