plug.py 991 B

12345678910111213141516171819202122232425262728293031323334
  1. """Library to handle connection with Switchbot."""
  2. from __future__ import annotations
  3. from ..helpers import parse_power_data
  4. def process_woplugmini(
  5. data: bytes | None, mfr_data: bytes | None
  6. ) -> dict[str, bool | int]:
  7. """Process plug mini."""
  8. if mfr_data is None or len(mfr_data) < 12:
  9. return {}
  10. return {
  11. "switchMode": True,
  12. "isOn": mfr_data[7] == 0x80,
  13. "wifi_rssi": -mfr_data[9],
  14. "power": parse_power_data(mfr_data, 10, 10.0, 0x7FFF), # W
  15. }
  16. def process_outdoor_plug(
  17. data: bytes | None, mfr_data: bytes | None
  18. ) -> dict[str, bool | int | float]:
  19. """Process Outdoor Plug EU consumption and production power."""
  20. if mfr_data is None or len(mfr_data) < 14:
  21. return {}
  22. return {
  23. "switchMode": True,
  24. "sequence_number": mfr_data[6],
  25. "isOn": bool(mfr_data[7] & 0x80),
  26. "power": parse_power_data(mfr_data, 10),
  27. "power_production": parse_power_data(mfr_data, 12),
  28. }