|
@@ -123,6 +123,20 @@ def _process_wocontact(data: bytes, mfr_data: bytes | None) -> dict[str, bool |
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+def _process_wopresence(data: bytes, mfr_data: bytes | None) -> dict[str, bool | int]:
|
|
|
|
+ """Process WoPresence Sensor services data."""
|
|
|
|
+ return {
|
|
|
|
+ "tested": bool(data[1] & 0b10000000),
|
|
|
|
+ "motion_detected": bool(data[1] & 0b01000000),
|
|
|
|
+ "battery": data[2] & 0b01111111,
|
|
|
|
+ "led": (data[5] & 0b00100000) >> 5,
|
|
|
|
+ "iot": (data[5] & 0b00010000) >> 4,
|
|
|
|
+ "sense_distance": (data[5] & 0b00001100) >> 2,
|
|
|
|
+ "light_intensity": data[5] & 0b00000011,
|
|
|
|
+ "is_light": bool(data[5] & 0b00000010),
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
def _process_woplugmini(data: bytes, mfr_data: bytes | None) -> dict[str, bool | int]:
|
|
def _process_woplugmini(data: bytes, mfr_data: bytes | None) -> dict[str, bool | int]:
|
|
"""Process plug mini."""
|
|
"""Process plug mini."""
|
|
return {
|
|
return {
|
|
@@ -157,6 +171,7 @@ def parse_advertisement_data(
|
|
supported_types: dict[str, dict[str, Any]] = {
|
|
supported_types: dict[str, dict[str, Any]] = {
|
|
"d": {"modelName": "WoContact", "func": _process_wocontact},
|
|
"d": {"modelName": "WoContact", "func": _process_wocontact},
|
|
"H": {"modelName": "WoHand", "func": _process_wohand},
|
|
"H": {"modelName": "WoHand", "func": _process_wohand},
|
|
|
|
+ "s": {"modelName": "WoPresence", "func": _process_wopresence},
|
|
"c": {"modelName": "WoCurtain", "func": _process_wocurtain},
|
|
"c": {"modelName": "WoCurtain", "func": _process_wocurtain},
|
|
"T": {"modelName": "WoSensorTH", "func": _process_wosensorth},
|
|
"T": {"modelName": "WoSensorTH", "func": _process_wosensorth},
|
|
"i": {"modelName": "WoSensorTH", "func": _process_wosensorth},
|
|
"i": {"modelName": "WoSensorTH", "func": _process_wosensorth},
|