Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ async def main() -> None:
sensor.low_battery
# >>> False

# Return whether the sensor has been triggered:
# Return whether the sensor has been triggered (open/closed, etc.):
sensor.triggered
# >>> False

Expand Down
9 changes: 8 additions & 1 deletion simplipy/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
from enum import Enum
from typing import Union

from .errors import SimplipyError

_LOGGER = logging.getLogger(__name__)


Expand Down Expand Up @@ -78,7 +80,12 @@ def settings(self) -> bool:
@property
def triggered(self) -> bool:
"""Return the current sensor state."""
return self.sensor_data.get('sensorStatus', 0) != 0
if self.type == SensorTypes.entry:
return self.sensor_data.get('entryStatus', 'closed') == 'open'

raise SimplipyError(
'Cannot determine triggered state for sensor: {0}'.format(
self.name))


class SensorV3(Sensor):
Expand Down
24 changes: 18 additions & 6 deletions tests/test_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import pytest

from simplipy import API
from simplipy.errors import SimplipyError
from simplipy.sensor import SensorTypes

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

sensor = system.sensors['195']
assert sensor.data == 0
assert not sensor.error
assert not sensor.low_battery
assert sensor.settings == 1
assert not sensor.triggered
keypad = system.sensors['195']
assert keypad.data == 0
assert not keypad.error
assert not keypad.low_battery
assert keypad.settings == 1

# Ensure that attempting to access the triggered of anything but
# an entry sensor in a V2 system throws an error:
with pytest.raises(SimplipyError):
assert keypad.triggered == 42

entry_sensor = system.sensors['609']
assert entry_sensor.data == 210
assert not entry_sensor.error
assert not entry_sensor.low_battery
assert entry_sensor.settings == 1
assert not entry_sensor.triggered


@pytest.mark.asyncio
Expand Down