Skip to content

Commit f51e4bb

Browse files
committed
store MotionSensitivity enum which makes communication to HA easier
1 parent 6be2724 commit f51e4bb

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

plugwise_usb/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ class MotionConfig:
233233
Attributes:
234234
reset_timer: int | None: Motion reset timer in minutes before the motion detection is switched off.
235235
daylight_mode: bool | None: Motion detection when light level is below threshold.
236-
sensitivity_level: int | None: Motion sensitivity level.
236+
sensitivity_level: MotionSensitivity | None: Motion sensitivity level.
237237
dirty: bool: Settings changed, device update pending
238238
239239
"""

plugwise_usb/nodes/scan.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ def _reset_timer_from_cache(self) -> int | None:
198198
return int(reset_timer)
199199
return None
200200

201-
def _sensitivity_level_from_cache(self) -> int | None:
201+
def _sensitivity_level_from_cache(self) -> MotionSensitivity | None:
202202
"""Load sensitivity level from cache."""
203203
if (
204204
sensitivity_level := self._get_cache(
@@ -326,14 +326,27 @@ async def set_motion_reset_timer(self, minutes: int) -> bool:
326326
await self._scan_configure_update()
327327
return True
328328

329-
async def set_motion_sensitivity_level(self, level: int) -> bool:
329+
async def set_motion_sensitivity_level(self, level: MotionSensitivity | int | str) -> bool:
330330
"""Configure the motion sensitivity level."""
331331
_LOGGER.debug(
332332
"set_motion_sensitivity_level | Device %s | %s -> %s",
333333
self.name,
334334
self._motion_config.sensitivity_level,
335-
level,
335+
str(level),
336336
)
337+
if isinstance(level,int):
338+
try:
339+
level = MotionSensitivity(level)
340+
except ValueError:
341+
_LOGGER.exception("MotionSensitivity for %s: value error ", self._mac_in_str)
342+
return False
343+
344+
if isinstance(level,str):
345+
try:
346+
level = MotionSensitivity[level]
347+
except KeyError:
348+
_LOGGER.exception("MotionSensitivity for %s: unknown level %s", self._mac_in_str,level)
349+
return False
337350
if self._motion_config.sensitivity_level == level:
338351
return False
339352
self._motion_config = replace(
@@ -447,7 +460,7 @@ async def scan_configure(self) -> bool:
447460
self._send,
448461
self._mac_in_bytes,
449462
self._motion_config.reset_timer,
450-
self._motion_config.sensitivity_level,
463+
self._motion_config.sensitivity_level.value,
451464
self._motion_config.daylight_mode,
452465
)
453466
if (response := await request.send()) is None:
@@ -478,7 +491,7 @@ async def _scan_configure_update(self) -> None:
478491
)
479492
self._set_cache(
480493
CACHE_SCAN_CONFIG_SENSITIVITY,
481-
str(MotionSensitivity(self._motion_config.sensitivity_level).name),
494+
self._motion_config.sensitivity_level.name,
482495
)
483496
self._set_cache(
484497
CACHE_SCAN_CONFIG_DAYLIGHT_MODE, str(self._motion_config.daylight_mode)

0 commit comments

Comments
 (0)