From 6f3592445144fd4ca9fdfa0df11dc5fc2a7d197f Mon Sep 17 00:00:00 2001 From: "Spencer E. Olson" Date: Sat, 19 Apr 2014 13:44:48 -0600 Subject: [PATCH] messages->dict conversion --- alarmdecoder/messages.py | 104 ++++++++++++++++++++++++++++++--------- 1 file changed, 80 insertions(+), 24 deletions(-) diff --git a/alarmdecoder/messages.py b/alarmdecoder/messages.py index ad7b0b7..b613f15 100644 --- a/alarmdecoder/messages.py +++ b/alarmdecoder/messages.py @@ -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 + )