Skip to content

Commit fad2711

Browse files
authored
Re-architect triggered meaning for v2 sensors (#11)
* Re-architect triggered meaning for v2 sensors * Tests in place
1 parent 21c187c commit fad2711

3 files changed

Lines changed: 27 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ async def main() -> None:
236236
sensor.low_battery
237237
# >>> False
238238

239-
# Return whether the sensor has been triggered:
239+
# Return whether the sensor has been triggered (open/closed, etc.):
240240
sensor.triggered
241241
# >>> False
242242

simplipy/sensor.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from enum import Enum
44
from typing import Union
55

6+
from .errors import SimplipyError
7+
68
_LOGGER = logging.getLogger(__name__)
79

810

@@ -78,7 +80,12 @@ def settings(self) -> bool:
7880
@property
7981
def triggered(self) -> bool:
8082
"""Return the current sensor state."""
81-
return self.sensor_data.get('sensorStatus', 0) != 0
83+
if self.type == SensorTypes.entry:
84+
return self.sensor_data.get('entryStatus', 'closed') == 'open'
85+
86+
raise SimplipyError(
87+
'Cannot determine triggered state for sensor: {0}'.format(
88+
self.name))
8289

8390

8491
class SensorV3(Sensor):

tests/test_sensor.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import pytest
66

77
from simplipy import API
8+
from simplipy.errors import SimplipyError
89
from simplipy.sensor import SensorTypes
910

1011
from .const import TEST_EMAIL, TEST_PASSWORD
@@ -37,12 +38,23 @@ async def test_properties_v2(event_loop, v2_server):
3738
TEST_EMAIL, TEST_PASSWORD, websession)
3839
[system] = await api.get_systems()
3940

40-
sensor = system.sensors['195']
41-
assert sensor.data == 0
42-
assert not sensor.error
43-
assert not sensor.low_battery
44-
assert sensor.settings == 1
45-
assert not sensor.triggered
41+
keypad = system.sensors['195']
42+
assert keypad.data == 0
43+
assert not keypad.error
44+
assert not keypad.low_battery
45+
assert keypad.settings == 1
46+
47+
# Ensure that attempting to access the triggered of anything but
48+
# an entry sensor in a V2 system throws an error:
49+
with pytest.raises(SimplipyError):
50+
assert keypad.triggered == 42
51+
52+
entry_sensor = system.sensors['609']
53+
assert entry_sensor.data == 210
54+
assert not entry_sensor.error
55+
assert not entry_sensor.low_battery
56+
assert entry_sensor.settings == 1
57+
assert not entry_sensor.triggered
4658

4759

4860
@pytest.mark.asyncio

0 commit comments

Comments
 (0)