Skip to content

Commit 8072bd3

Browse files
committed
Scan: MotionSensitivity all the way
1 parent a78207d commit 8072bd3

File tree

3 files changed

+20
-15
lines changed

3 files changed

+20
-15
lines changed

plugwise_usb/messages/requests.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import logging
1010
from typing import Any
1111

12+
from ..api import MotionSensitivity
1213
from ..constants import (
1314
DAY_IN_MINUTES,
1415
HOUR_IN_MINUTES,
@@ -1376,14 +1377,14 @@ def __init__(
13761377
send_fn: Callable[[PlugwiseRequest, bool], Awaitable[PlugwiseResponse | None]],
13771378
mac: bytes,
13781379
reset_timer: int,
1379-
sensitivity: int,
1380+
sensitivity: MotionSensitivity,
13801381
light: bool,
13811382
):
13821383
"""Initialize ScanConfigureRequest message object."""
13831384
super().__init__(send_fn, mac)
13841385
reset_timer_value = Int(reset_timer, length=2)
13851386
# Sensitivity: HIGH(0x14), MEDIUM(0x1E), OFF(0xFF)
1386-
sensitivity_value = Int(sensitivity, length=2)
1387+
sensitivity_value = Int(sensitivity.value, length=2)
13871388
light_temp = 1 if light else 0
13881389
light_value = Int(light_temp, length=2)
13891390
self._args += [

plugwise_usb/nodes/scan.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ async def _load_from_cache(self) -> bool:
165165
self._motion_config = MotionConfig(
166166
daylight_mode=daylight_mode,
167167
reset_timer=reset_timer,
168-
sensitivity_level=sensitivity_level.value,
168+
sensitivity_level=sensitivity_level,
169169
dirty=dirty,
170170
)
171171
if dirty:
@@ -274,11 +274,11 @@ def reset_timer(self) -> int:
274274
return DEFAULT_RESET_TIMER
275275

276276
@property
277-
def sensitivity_level(self) -> int:
277+
def sensitivity_level(self) -> MotionSensitivity:
278278
"""Sensitivity level of motion sensor."""
279279
if self._motion_config.sensitivity_level is not None:
280280
return self._motion_config.sensitivity_level
281-
return DEFAULT_SENSITIVITY.value
281+
return DEFAULT_SENSITIVITY
282282

283283
# endregion
284284
# region Configuration actions
@@ -331,14 +331,14 @@ async def set_motion_sensitivity_level(self, level: MotionSensitivity) -> bool:
331331
_LOGGER.debug(
332332
"set_motion_sensitivity_level | Device %s | %s -> %s",
333333
self.name,
334-
self._motion_config.sensitivity_level,
335-
level.value,
334+
self._motion_config.sensitivity_level.name,
335+
level.name,
336336
)
337-
if self._motion_config.sensitivity_level == level.value:
337+
if self._motion_config.sensitivity_level == level:
338338
return False
339339
self._motion_config = replace(
340340
self._motion_config,
341-
sensitivity_level=level.value,
341+
sensitivity_level=level,
342342
dirty=True,
343343
)
344344
await self._scan_configure_update()
@@ -478,7 +478,7 @@ async def _scan_configure_update(self) -> None:
478478
self._set_cache(CACHE_SCAN_CONFIG_RESET_TIMER, str(self.reset_timer))
479479
self._set_cache(
480480
CACHE_SCAN_CONFIG_SENSITIVITY,
481-
self._motion_config.sensitivity_level,
481+
self._motion_config.sensitivity_level.name,
482482
)
483483
self._set_cache(CACHE_SCAN_CONFIG_DAYLIGHT_MODE, str(self.daylight_mode))
484484
self._set_cache(CACHE_SCAN_CONFIG_DIRTY, str(self.dirty))

tests/test_usb.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,7 +1494,7 @@ async def test_creating_request_messages(self) -> None:
14941494
self.dummy_fn,
14951495
b"1111222233334444",
14961496
5, # Delay in minutes when signal is send when no motion is detected
1497-
30, # Sensitivity of Motion sensor (High, Medium, Off)
1497+
pw_api.MotionSensitivity.MEDIUM, # Sensitivity of Motion sensor (High, Medium, Off)
14981498
False, # Daylight override to only report motion when lightlevel is below calibrated level
14991499
)
15001500
assert (
@@ -2240,8 +2240,10 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
22402240
assert test_scan.motion_config.daylight_mode
22412241

22422242
# test motion sensitivity level
2243-
assert test_scan.sensitivity_level == 30
2244-
assert test_scan.motion_config.sensitivity_level == 30
2243+
assert test_scan.sensitivity_level == pw_api.MotionSensitivity.MEDIUM
2244+
assert (
2245+
test_scan.motion_config.sensitivity_level == pw_api.MotionSensitivity.MEDIUM
2246+
)
22452247
assert not await test_scan.set_motion_sensitivity_level(
22462248
pw_api.MotionSensitivity.MEDIUM
22472249
)
@@ -2261,8 +2263,10 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
22612263
await test_scan._awake_response(awake_response4) # pylint: disable=protected-access
22622264
await asyncio.sleep(0.001) # Ensure time for task to be executed
22632265
assert not test_scan.motion_config.dirty
2264-
assert test_scan.sensitivity_level == 20
2265-
assert test_scan.motion_config.sensitivity_level == 20
2266+
assert test_scan.sensitivity_level == pw_api.MotionSensitivity.HIGH
2267+
assert (
2268+
test_scan.motion_config.sensitivity_level == pw_api.MotionSensitivity.HIGH
2269+
)
22662270

22672271
# scan with cache enabled
22682272
mock_stick_controller.send_response = None

0 commit comments

Comments
 (0)