From 74d400495007dd76ee870dc38a2e97acd152eb4f Mon Sep 17 00:00:00 2001 From: Kevin Roberts Date: Thu, 3 Nov 2016 13:27:41 -0700 Subject: [PATCH 1/2] Added version information to object --- alarmdecoder/decoder.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/alarmdecoder/decoder.py b/alarmdecoder/decoder.py index 856a4cd..3c22e02 100644 --- a/alarmdecoder/decoder.py +++ b/alarmdecoder/decoder.py @@ -87,6 +87,14 @@ class AlarmDecoder(object): mode = ADEMCO """The panel mode that the AlarmDecoder is in. Currently supports ADEMCO and DSC.""" + #Version Information + serial_number = 0xFFFFFFFF + """The device serial number""" + version_number = '2.2a.8' + """The device firmware version""" + version_flags = "TX;RX;SM;VZ;RF;ZX;RE;AU;3X;CG;DD;MF;LR;KE;MK;CB;DS;ER" + """Device flags enabled""" + def __init__(self, device): """ Constructor @@ -119,6 +127,10 @@ class AlarmDecoder(object): self.deduplicate = False self.mode = ADEMCO + self.serial_number = 0xFFFFFFFF + self.version_number = '2.2a.8' + self.version_flags = "TX;RX;SM;VZ;RF;ZX;RE;AU;3X;CG;DD;MF;LR;KE;MK;CB;DS;ER" + def __enter__(self): """ Support for context manager __enter__. @@ -266,6 +278,12 @@ class AlarmDecoder(object): return '&'.join(['='.join(t) for t in config_entries]) + def get_version(self): + """ + Retrieves the version string from the device. Called automatically by :py:meth:`_on_open`. + """ + self.send("V\r") + def reboot(self): """ Reboots the device. @@ -354,6 +372,9 @@ class AlarmDecoder(object): elif data.startswith('!CONFIG'): self._handle_config(data) + elif data.startswith('!VER'): + self._handle_version(data) + elif data.startswith('!Sending'): self._handle_sending(data) @@ -432,6 +453,21 @@ class AlarmDecoder(object): return msg + def _handle_version(self, data): + """ + Handles received version data. + + :param data: Version string to parse + :type data: string + """ + + _, version_string = data.split(':') + version_parts = version_string.split(',') + + self.serial_number = version_parts[0] + self.version_number = version_parts[1] + self.version_flags = version_parts[2] + def _handle_config(self, data): """ Handles received configuration data. @@ -656,6 +692,8 @@ class AlarmDecoder(object): """ self.get_config() + self.get_version() + self.on_open() def _on_close(self, sender, *args, **kwargs): From 73ad6e991ff893ee5210beb1040320eaef9550b7 Mon Sep 17 00:00:00 2001 From: Kevin Roberts Date: Thu, 3 Nov 2016 13:51:07 -0700 Subject: [PATCH 2/2] Blank defaults for version so we don't report bad stuff --- alarmdecoder/decoder.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/alarmdecoder/decoder.py b/alarmdecoder/decoder.py index 3c22e02..4f98690 100644 --- a/alarmdecoder/decoder.py +++ b/alarmdecoder/decoder.py @@ -90,9 +90,9 @@ class AlarmDecoder(object): #Version Information serial_number = 0xFFFFFFFF """The device serial number""" - version_number = '2.2a.8' + version_number = 'Unknown' """The device firmware version""" - version_flags = "TX;RX;SM;VZ;RF;ZX;RE;AU;3X;CG;DD;MF;LR;KE;MK;CB;DS;ER" + version_flags = "" """Device flags enabled""" def __init__(self, device): @@ -128,8 +128,8 @@ class AlarmDecoder(object): self.mode = ADEMCO self.serial_number = 0xFFFFFFFF - self.version_number = '2.2a.8' - self.version_flags = "TX;RX;SM;VZ;RF;ZX;RE;AU;3X;CG;DD;MF;LR;KE;MK;CB;DS;ER" + self.version_number = 'Unknown' + self.version_flags = "" def __enter__(self): """