Skip to content

Commit

Permalink
Merge 639aad0 into 627c51f
Browse files Browse the repository at this point in the history
  • Loading branch information
nickw444 committed Dec 30, 2018
2 parents 627c51f + 639aad0 commit 31132dd
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 22 deletions.
18 changes: 6 additions & 12 deletions nessclient/alarm.py
Expand Up @@ -2,7 +2,7 @@
from enum import Enum
from typing import Optional, Callable, List

from .event import BaseEvent, ZoneUpdate, ArmingUpdate, SystemStatusEvent
from .event import BaseEvent, ZoneUpdate, SystemStatusEvent


class ArmingState(Enum):
Expand Down Expand Up @@ -35,27 +35,21 @@ class Zone:
triggered: Optional[bool]

def __init__(self) -> None:
self.arming_state: ArmingState = ArmingState.UNKNOWN
# TODO: Determine the best way to query the alarm initial state. For
# now, we assume the alarm is initially disarmed on connection.
self.arming_state: ArmingState = ArmingState.DISARMED
self.zones: List[Alarm.Zone] = [Alarm.Zone(triggered=None) for _ in range(16)]

self._on_state_change: Optional[Callable[['ArmingState'], None]] = None
self._on_zone_change: Optional[Callable[[int, bool], None]] = None

def handle_event(self, event: BaseEvent) -> None:
if isinstance(event, ArmingUpdate):
self._handle_arming_update(event)
elif (isinstance(event, ZoneUpdate)
and event.request_id == ZoneUpdate.RequestID.ZONE_INPUT_UNSEALED):
if (isinstance(event, ZoneUpdate)
and event.request_id == ZoneUpdate.RequestID.ZONE_INPUT_UNSEALED):
self._handle_zone_input_update(event)
elif isinstance(event, SystemStatusEvent):
self._handle_system_status_event(event)

def _handle_arming_update(self, update: ArmingUpdate) -> None:
if ArmingUpdate.ArmingStatus.AREA_1_ARMED in update.status:
return self._update_arming_state(ArmingState.ARMED)
else:
return self._update_arming_state(ArmingState.DISARMED)

def _handle_zone_input_update(self, update: ZoneUpdate) -> None:
for i, zone in enumerate(self.zones):
zone_id = i + 1
Expand Down
12 changes: 5 additions & 7 deletions nessclient/cli/server/alarm_server.py
Expand Up @@ -141,13 +141,11 @@ def get_events_for_state_update(


def get_arming_status(state: Alarm.ArmingState) -> List[ArmingUpdate.ArmingStatus]:
# TODO(NW): Verify these are the correct response values for different alarm states.
if state == Alarm.ArmingState.EXIT_DELAY:
return [ArmingUpdate.ArmingStatus.AREA_1_ARMED]
elif state == Alarm.ArmingState.ARMED_AWAY:
return [ArmingUpdate.ArmingStatus.AREA_1_FULLY_ARMED]
elif state == Alarm.ArmingState.ENTRY_DELAY:
return [ArmingUpdate.ArmingStatus.ENTRY_DELAY_1_ON]
if state == Alarm.ArmingState.ARMED_AWAY:
return [
ArmingUpdate.ArmingStatus.MANUAL_EXCLUDE_MODE,
ArmingUpdate.ArmingStatus.DAY_ZONE_SELECT
]
return []


Expand Down
4 changes: 1 addition & 3 deletions nessclient/client.py
Expand Up @@ -59,12 +59,10 @@ async def aux(self, output_id: int, state: bool = True) -> None:
return await self.send_command(command)

async def update(self) -> None:
"""Force update of alarm status and zones"""
"""Force update of zones"""
await asyncio.gather(
# List unsealed Zones
self.send_command('S00'),
# Arming status update
self.send_command('S14'),
)

async def _connect(self) -> None:
Expand Down

0 comments on commit 31132dd

Please sign in to comment.