diff --git a/switchbot/adv_parsers/presence_sensor.py b/switchbot/adv_parsers/presence_sensor.py index e638ff54..b44832fd 100644 --- a/switchbot/adv_parsers/presence_sensor.py +++ b/switchbot/adv_parsers/presence_sensor.py @@ -21,15 +21,17 @@ def process_presence_sensor( motion_detected = bool(mfr_data[7] & 0x40) battery_bits = (mfr_data[7] >> 2) & 0x03 battery_range = BATTERY_LEVEL_MAP.get(battery_bits, "Unknown") + duration = (mfr_data[8] << 8) + mfr_data[9] trigger_flag = mfr_data[10] led_state = bool(mfr_data[11] & 0x80) - light_level = mfr_data[11] & 0x0F + light_level = mfr_data[11] & 0x1F result = { "sequence_number": seq_number, "adaptive_state": adaptive_state, "motion_detected": motion_detected, "battery_range": battery_range, + "duration": duration, "trigger_flag": trigger_flag, "led_state": led_state, "lightLevel": light_level, diff --git a/tests/test_adv_parser.py b/tests/test_adv_parser.py index 6f6b3c84..cb89f5a5 100644 --- a/tests/test_adv_parser.py +++ b/tests/test_adv_parser.py @@ -3508,6 +3508,7 @@ def test_humidifer_with_empty_data() -> None: "adaptive_state": True, "battery": 100, "battery_range": ">=60%", + "duration": 1110, "led_state": True, "lightLevel": 12, "motion_detected": True, @@ -3805,6 +3806,7 @@ def test_adv_active(test_case: AdvTestCase) -> None: { "adaptive_state": True, "battery_range": ">=60%", + "duration": 1110, "led_state": True, "lightLevel": 12, "motion_detected": True,