about summary refs log tree commit diff
path: root/broadlink/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'broadlink/__init__.py')
-rwxr-xr-xbroadlink/__init__.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/broadlink/__init__.py b/broadlink/__init__.py
index 7c3ba81bcb3c..94446fc2ff74 100755
--- a/broadlink/__init__.py
+++ b/broadlink/__init__.py
@@ -238,7 +238,7 @@ class device:
         if (time.time() - starttime) < self.timeout:
           pass
         raise
-    return bytes(response[0])
+    return bytearray(response[0])
 
 
 class sp1(device):
@@ -289,9 +289,18 @@ class a1(device):
       data = {}
       aes = AES.new(bytes(self.key), AES.MODE_CBC, bytes(self.iv))
       payload = aes.decrypt(bytes(response[0x38:]))
-      data['temperature'] = (payload[0x4] * 10 + payload[0x5]) / 10.0
-      data['humidity'] = (payload[0x6] * 10 + payload[0x7]) / 10.0
-      light = payload[0x8]
+      if type(payload[0x4]) == int:
+        data['temperature'] = (payload[0x4] * 10 + payload[0x5]) / 10.0
+        data['humidity'] = (payload[0x6] * 10 + payload[0x7]) / 10.0
+        light = payload[0x8]
+        air_quality = payload[0x0a]
+        noise = payload[0xc]
+      else:
+        data['temperature'] = (ord(payload[0x4]) * 10 + ord(payload[0x5])) / 10.0
+        data['humidity'] = (ord(payload[0x6]) * 10 + ord(payload[0x7])) / 10.0
+        light = ord(payload[0x8])
+        air_quality = ord(payload[0x0a])
+        noise = ord(payload[0xc])
       if light == 0:
         data['light'] = 'dark'
       elif light == 1:
@@ -302,7 +311,6 @@ class a1(device):
         data['light'] = 'bright'
       else:
         data['light'] = 'unknown'
-      air_quality = payload[0x0a]
       if air_quality == 0:
         data['air_quality'] = 'excellent'
       elif air_quality == 1:
@@ -313,7 +321,6 @@ class a1(device):
         data['air_quality'] = 'bad'
       else:
         data['air_quality'] = 'unknown'
-      noise = payload[0xc]
       if noise == 0:
         data['noise'] = 'quiet'
       elif noise == 1:
@@ -358,7 +365,10 @@ class rm(device):
     if err == 0:
       aes = AES.new(bytes(self.key), AES.MODE_CBC, bytes(self.iv))
       payload = aes.decrypt(bytes(response[0x38:]))
-      temp = (payload[0x4] * 10 + payload[0x5]) / 10.0
+      if type(payload[0x4]) == int:
+        temp = (payload[0x4] * 10 + payload[0x5]) / 10.0
+      else:
+        temp = (ord(payload[0x4]) * 10 + ord(payload[0x5])) / 10.0
       return temp
 
 # For legay compatibility - don't use this