diff --git a/alarmdecoder/messages.py b/alarmdecoder/messages.py index f44edff..1bff13d 100644 --- a/alarmdecoder/messages.py +++ b/alarmdecoder/messages.py @@ -16,6 +16,7 @@ import re import datetime from .util import InvalidMessageError +from .panels import MODES, ADEMCO, DSC class BaseMessage(object): @@ -95,6 +96,10 @@ class Message(BaseMessage): """Indicates whether or not there are zones that require attention.""" perimeter_only = False """Indicates whether or not the perimeter is armed.""" + system_fault = False + """Indicates whether a system fault has occurred.""" + panel_type = ADEMCO + """Indicates which panel type was the source of this message.""" numeric_code = None """The numeric code associated with the message.""" text = None @@ -158,7 +163,10 @@ class Message(BaseMessage): self.fire_alarm = is_bit_set(14) self.check_zone = is_bit_set(15) self.perimeter_only = is_bit_set(16) - # bits 17-20 unused. + self.system_fault = is_bit_set(17) + if self.bitfield[18] in MODES.keys(): + self.panel_type = MODES.keys()[MODES.values().index(self.bitfield[18])]) + # pos 20-21 - Unused. self.text = alpha.strip('"') if int(self.panel_data[19:21], 16) & 0x01 > 0: