Skip to content

Commit 23e3e43

Browse files
authored
Add support for Smoke+CO Detector (#527)
* Add support for Smoke+CO Detector * Clean up
1 parent f999cd4 commit 23e3e43

4 files changed

Lines changed: 58 additions & 9 deletions

File tree

simplipy/device/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class DeviceTypes(Enum):
2626
TEMPERATURE = 10
2727
CAMERA = 12
2828
SIREN = 13
29+
SMOKE_AND_CARBON_MONOXIDE = 14
2930
DOORBELL = 15
3031
LOCK = 16
3132
OUTDOOR_CAMERA = 17

simplipy/device/sensor/v3.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ def trigger_instantly(self) -> bool:
2020
Returns:
2121
The "instant trigger" status.
2222
"""
23-
return cast(
24-
bool,
23+
return (
2524
self._system.sensor_data[self._serial]["setting"].get(
2625
"instantTrigger", False
27-
),
26+
)
27+
is True
2828
)
2929

3030
@property
@@ -43,11 +43,21 @@ def triggered(self) -> bool:
4343
DeviceTypes.SMOKE,
4444
DeviceTypes.TEMPERATURE,
4545
):
46-
return cast(
47-
bool,
46+
return (
47+
self._system.sensor_data[self._serial]["status"].get("triggered")
48+
is True
49+
)
50+
51+
if self.type == DeviceTypes.SMOKE_AND_CARBON_MONOXIDE:
52+
return (
4853
self._system.sensor_data[self._serial]["status"].get(
49-
"triggered", False
50-
),
54+
"coTriggered", False
55+
)
56+
is True
57+
or self._system.sensor_data[self._serial]["status"].get(
58+
"smokeTriggered", False
59+
)
60+
is True
5161
)
5262

5363
return False

tests/fixtures/v3_sensors_response.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,33 @@
509509
"lowBattery": false,
510510
"offline": false
511511
}
512+
},
513+
{
514+
"serial": "00000000",
515+
"type": 14,
516+
"name": "Kitchen",
517+
"setting": {},
518+
"status": {
519+
"coTriggered": false,
520+
"malfunction": false,
521+
"tamper": true,
522+
"lowSensitivity": false,
523+
"endOfLife": false,
524+
"test": false,
525+
"smokeTriggered": false,
526+
"preSmokeAlarm": false
527+
},
528+
"timestamp": 0,
529+
"rssi": -45,
530+
"WDTCount": 23,
531+
"nonce": 0,
532+
"rebootCnt": 17,
533+
"deviceGroupID": 0,
534+
"flags": {
535+
"offline": true,
536+
"lowBattery": false,
537+
"swingerShutdown": false
538+
}
512539
}
513540
],
514541
"lastUpdated": 1534626361,

tests/system/test_v3.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,17 @@ async def test_as_dict(
411411
"trigger_instantly": False,
412412
"triggered": False,
413413
},
414+
{
415+
"name": "Kitchen",
416+
"serial": "00000000",
417+
"type": 14,
418+
"error": False,
419+
"low_battery": False,
420+
"offline": True,
421+
"settings": {},
422+
"trigger_instantly": False,
423+
"triggered": False,
424+
},
414425
],
415426
"alarm_duration": 240,
416427
"alarm_volume": 3,
@@ -991,7 +1002,7 @@ async def test_async_get_systems(
9911002
system = systems[TEST_SYSTEM_ID]
9921003
assert system.serial == TEST_SYSTEM_SERIAL_NO
9931004
assert system.system_id == TEST_SYSTEM_ID
994-
assert len(system.sensors) == 24
1005+
assert len(system.sensors) == 25
9951006

9961007
aresponses.assert_plan_strictly_followed()
9971008

@@ -1728,7 +1739,7 @@ async def test_update_system_data(
17281739

17291740
assert system.serial == TEST_SYSTEM_SERIAL_NO
17301741
assert system.system_id == TEST_SYSTEM_ID
1731-
assert len(system.sensors) == 24
1742+
assert len(system.sensors) == 25
17321743

17331744
aresponses.assert_plan_strictly_followed()
17341745

0 commit comments

Comments
 (0)