1234567891011121314151617 |
- """Contact sensor parser."""
- 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] & 0b00000100 == 0b00000100
- contact_open = data[3] & 0b00000010 == 0b00000010
- return {
- "tested": bool(data[1] & 0b10000000),
- "motion_detected": bool(data[1] & 0b01000000),
- "battery": data[2] & 0b01111111,
- "contact_open": contact_open or contact_timeout,
- "contact_timeout": contact_timeout,
- "is_light": bool(data[3] & 0b00000001),
- "button_count": (data[8] & 0b00001111),
- }
|