@@ -29,3 +29,27 @@ def process_wolock(data: bytes | None, mfr_data: bytes | None) -> dict[str, bool
2929 "auto_lock_paused" : bool (mfr_data [8 ] & 0b00000010 ),
3030 "night_latch" : bool (mfr_data [9 ] & 0b00000001 ) if len (mfr_data ) > 9 else False ,
3131 }
32+
33+
34+ def process_wolock_pro (
35+ data : bytes | None , mfr_data : bytes | None
36+ ) -> dict [str , bool | int ]:
37+ _LOGGER .debug ("mfr_data: %s" , mfr_data .hex ())
38+ if data :
39+ _LOGGER .debug ("data: %s" , data .hex ())
40+
41+ res = {
42+ "battery" : data [2 ] & 0b01111111 if data else None ,
43+ "calibration" : bool (mfr_data [7 ] & 0b10000000 ),
44+ "status" : LockStatus ((mfr_data [7 ] & 0b00111000 ) >> 3 ),
45+ "door_open" : bool (mfr_data [8 ] & 0b01100000 ),
46+ # Double lock mode is not supported on Lock Pro
47+ "update_from_secondary_lock" : False ,
48+ "double_lock_mode" : False ,
49+ "unclosed_alarm" : bool (mfr_data [11 ] & 0b10000000 ),
50+ "unlocked_alarm" : bool (mfr_data [11 ] & 0b01000000 ),
51+ "auto_lock_paused" : bool (mfr_data [8 ] & 0b100000 ),
52+ "night_latch" : bool (mfr_data [9 ] & 0b00000001 ),
53+ }
54+ _LOGGER .debug (res )
55+ return res
0 commit comments