Преглед на файлове

Fix contact sensor not seeing timeout as open (#133)

J. Nick Koston преди 1 година
родител
ревизия
265d8e7a5c
променени са 1 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 4 2
      switchbot/adv_parsers/contact.py

+ 4 - 2
switchbot/adv_parsers/contact.py

@@ -4,12 +4,14 @@ from __future__ import annotations
 
 def process_wocontact(data: bytes, mfr_data: bytes | None) -> dict[str, bool | int]:
     """Process woContact Sensor services data."""
+    contact_timeout = data[3] & 0b00000110 == 0b00000110
+    contact_open = data[3] & 0b00000010 == 0b00000010
     return {
         "tested": bool(data[1] & 0b10000000),
         "motion_detected": bool(data[1] & 0b01000000),
         "battery": data[2] & 0b01111111,
-        "contact_open": data[3] & 0b00000010 == 0b00000010,
-        "contact_timeout": data[3] & 0b00000110 == 0b00000110,
+        "contact_open": contact_open or contact_timeout,  # timeout still means its open
+        "contact_timeout": contact_timeout,
         "is_light": bool(data[3] & 0b00000001),
         "button_count": (data[8] & 0b00001111),
     }