motion.py 655 B

1234567891011121314151617181920
  1. """Motion sensor parser."""
  2. from __future__ import annotations
  3. def process_wopresence(
  4. data: bytes | None, mfr_data: bytes | None
  5. ) -> dict[str, bool | int]:
  6. """Process WoPresence Sensor services data."""
  7. if data is None:
  8. return {}
  9. return {
  10. "tested": bool(data[1] & 0b10000000),
  11. "motion_detected": bool(data[1] & 0b01000000),
  12. "battery": data[2] & 0b01111111,
  13. "led": (data[5] & 0b00100000) >> 5,
  14. "iot": (data[5] & 0b00010000) >> 4,
  15. "sense_distance": (data[5] & 0b00001100) >> 2,
  16. "light_intensity": data[5] & 0b00000011,
  17. "is_light": bool(data[5] & 0b00000010),
  18. }