소스 검색

Remove fire timeout. Not needed now that fire is tracked correctly by removing system messages. In theory any normal message with no fire bit will clear the fire event so most of this was just workarrounds for other issues.

main
f34rdotcom 4 년 전
부모
커밋
75947c726f
1개의 변경된 파일3개의 추가작업 그리고 49개의 파일을 삭제
  1. +3
    -49
      alarmdecoder/decoder.py

+ 3
- 49
alarmdecoder/decoder.py 파일 보기

@@ -93,8 +93,6 @@ class AlarmDecoder(object):

BATTERY_TIMEOUT = 30
"""Default timeout (in seconds) before the battery status reverts."""
FIRE_TIMEOUT = 30
"""Default tTimeout (in seconds) before the fire status reverts."""

# Attributes
address = 18
@@ -143,7 +141,6 @@ class AlarmDecoder(object):
self._ignore_message_states = ignore_message_states
self._ignore_lrr_states = ignore_lrr_states
self._battery_timeout = AlarmDecoder.BATTERY_TIMEOUT
self._fire_timeout = AlarmDecoder.FIRE_TIMEOUT
self._power_status = None
self._chime_status = None
self._ready_status = None
@@ -155,7 +152,6 @@ class AlarmDecoder(object):
self._armed_stay = False
self._exit = False
self._fire_status = False
self._fire_status_timeout = 0
self._battery_status = (False, 0)
self._panic_status = False
self._relay_status = {}
@@ -220,25 +216,6 @@ class AlarmDecoder(object):
"""
self._battery_timeout = value

@property
def fire_timeout(self):
"""
Retrieves the timeout for restoring the fire status, in seconds.

:returns: fire status timeout
"""
return self._fire_timeout

@fire_timeout.setter
def fire_timeout(self, value):
"""
Sets the timeout for restoring the fire status, in seconds.

:param value: timeout in seconds
:type value: int
"""
self._fire_timeout = value

@property
def internal_address_mask(self):
"""
@@ -916,7 +893,6 @@ class AlarmDecoder(object):
fire_status = status

last_status = self._fire_status
last_update = self._fire_status_timeout

# Quirk in Ademco panels. Fire bit goes on/off if other alarms are on or a system fault
if isinstance(message, Message):
@@ -926,33 +902,12 @@ class AlarmDecoder(object):
not message.text.startswith("CHECK") and
message.system_fault != 3):

# if we had an alarm and the sticky bit was cleared then clear the alarm
if self._fire_status and not message.alarm_event_occurred:
# fire restore
fire_status = False

# if we had a fire event and it went away and we still have a sticky alarm bit
# then it is not gone yet just restore it
if not message.fire_alarm and self._fire_status:
if message.alarm_event_occurred:
fire_status = self._fire_status

# if we did not have an alarm and we do now send event
if message.fire_alarm and message.fire_alarm != self._fire_status:
fire_status = message.fire_alarm

# if we had an alarm already send and we get it again extend the timeout
if message.fire_alarm and message.fire_alarm == self._fire_status:
self._fire_status = message.fire_alarm
self._fire_status_timeout = time.time()
fire_status = message.fire_alarm

else:
# if we timeout with an alarm set restore it
if time.time() > last_update + self._fire_timeout:
fire_status = False
else:
# Keep the current fire state do not update for SYSTEM messages.
fire_status = self._fire_status
# Keep the current fire state do not update for SYSTEM messages.
fire_status = self._fire_status

else:
fire_status = message.fire_alarm
@@ -960,7 +915,6 @@ class AlarmDecoder(object):
if fire_status != self._fire_status:
if fire_status is not None:
self._fire_status = fire_status
self._fire_status_timeout = time.time()
self.on_fire(status=fire_status)

return self._fire_status


불러오는 중...
취소
저장