Browse Source

messages->dict conversion

pyserial_fix
Spencer E. Olson 11 years ago
parent
commit
6f35924451
1 changed files with 80 additions and 24 deletions
  1. +80
    -24
      alarmdecoder/messages.py

+ 80
- 24
alarmdecoder/messages.py View File

@@ -41,6 +41,18 @@ class BaseMessage(object):
"""
return self.raw

def dict(self, **kwargs):
"""
Dictionary representation.
"""
return dict(time=self.timestamp, mesg=self.raw, **kwargs)

def __repr__(self):
"""
String representation.
"""
return repr(self.dict())


class Message(BaseMessage):
"""
@@ -106,12 +118,6 @@ class Message(BaseMessage):
if data is not None:
self._parse_message(data)

def __str__(self):
"""
String conversion operator.
"""
return self.raw

def _parse_message(self, data):
"""
Parse the message from the device.
@@ -155,6 +161,37 @@ class Message(BaseMessage):
# Current cursor location on the alpha display.
self.cursor_location = int(self.bitfield[21:23], 16)

def dict(self, **kwargs):
"""
Dictionary representation.
"""
return dict(
time = self.timestamp,
bitfield = self.bitfield,
numeric_code = self.numeric_code,
panel_data = self.panel_data,
mask = self.mask,
ready = self.ready,
armed_away = self.armed_away,
armed_home = self.armed_home,
backlight_on = self.backlight_on,
programming_mode = self.programming_mode,
beeps = self.beeps,
zone_bypassed = self.zone_bypassed,
ac_power = self.ac_power,
chime_on = self.chime_on,
alarm_event_occurred = self.alarm_event_occurred,
alarm_sounding = self.alarm_sounding,
battery_low = self.battery_low,
entry_delay_off = self.entry_delay_off,
fire_alarm = self.fire_alarm,
check_zone = self.check_zone,
perimeter_only = self.perimeter_only,
text = self.text,
cursor_location = self.cursor_location,
**kwargs
)


class ExpanderMessage(BaseMessage):
"""
@@ -187,12 +224,6 @@ class ExpanderMessage(BaseMessage):
if data is not None:
self._parse_message(data)

def __str__(self):
"""
String conversion operator.
"""
return self.raw

def _parse_message(self, data):
"""
Parse the raw message from the device.
@@ -221,6 +252,18 @@ class ExpanderMessage(BaseMessage):
else:
raise InvalidMessageError('Unknown expander message header: {0}'.format(data))

def dict(self, **kwargs):
"""
Dictionary representation.
"""
return dict(
time = self.timestamp,
address = self.address,
channel = self.channel,
value = self.value,
**kwargs
)


class RFMessage(BaseMessage):
"""
@@ -250,12 +293,6 @@ class RFMessage(BaseMessage):
if data is not None:
self._parse_message(data)

def __str__(self):
"""
String conversion operator.
"""
return self.raw

def _parse_message(self, data):
"""
Parses the raw message from the device.
@@ -286,6 +323,19 @@ class RFMessage(BaseMessage):
except ValueError:
raise InvalidMessageError('Received invalid message: {0}'.format(data))

def dict(self, **kwargs):
"""
Dictionary representation.
"""
return dict(
time = self.timestamp,
serial_number = self.serial_number,
value = self.value,
battery = self.battery,
supervision = self.supervision,
**kwargs
)


class LRRMessage(BaseMessage):
"""
@@ -311,12 +361,6 @@ class LRRMessage(BaseMessage):
if data is not None:
self._parse_message(data)

def __str__(self):
"""
String conversion operator.
"""
return self.raw

def _parse_message(self, data):
"""
Parses the raw message from the device.
@@ -334,3 +378,15 @@ class LRRMessage(BaseMessage):

except ValueError:
raise InvalidMessageError('Received invalid message: {0}'.format(data))

def dict(self, **kwargs):
"""
Dictionary representation.
"""
return dict(
time = self.timestamp,
event_data = self.event_data,
event_type = self.event_type,
partition = self.partition,
**kwargs
)

Loading…
Cancel
Save