@@ -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