From 8f9911e31ef28cb2f65d1f5d8cc997da31a4c67f Mon Sep 17 00:00:00 2001 From: Scott Petersen Date: Wed, 30 Apr 2014 10:46:49 -0700 Subject: [PATCH] Updated docs and setup.py for 0.7 --- docs/build/doctrees/alarmdecoder.doctree | Bin 375822 -> 396130 bytes .../build/doctrees/alarmdecoder.event.doctree | Bin 18446 -> 18476 bytes docs/build/doctrees/environment.pickle | Bin 116114 -> 132109 bytes docs/build/doctrees/index.doctree | Bin 10368 -> 10380 bytes docs/build/doctrees/modules.doctree | Bin 2828 -> 2838 bytes .../html/_modules/alarmdecoder/decoder.html | 265 +++++++++++------- .../html/_modules/alarmdecoder/devices.html | 264 ++++++++++------- .../_modules/alarmdecoder/event/event.html | 3 + .../html/_modules/alarmdecoder/messages.html | 227 ++++++++++----- .../html/_modules/alarmdecoder/util.html | 16 +- .../_modules/alarmdecoder/zonetracking.html | 95 +++++-- docs/build/html/alarmdecoder.html | 70 ++++- docs/build/html/genindex.html | 60 +++- docs/build/html/objects.inv | Bin 1737 -> 1814 bytes docs/build/html/searchindex.js | 2 +- setup.py | 2 +- 16 files changed, 690 insertions(+), 314 deletions(-) diff --git a/docs/build/doctrees/alarmdecoder.doctree b/docs/build/doctrees/alarmdecoder.doctree index b01805f8e3ad09c83720425d027e02bfdead0543..9c260779a5c26ff519f5c7cf6f8ffa75884bea65 100644 GIT binary patch literal 396130 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 z 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 RKNT*AK_YDu2vb$%{|`yOO633m literal 375822 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 UhVHI;c?rMb!)kk+VX?XXf0`pdWB>pF diff --git a/docs/build/doctrees/alarmdecoder.event.doctree b/docs/build/doctrees/alarmdecoder.event.doctree index efd70566653dd601391cb071408c9fcc50efdd1b..df7a5bf3caf605a3576925b8fac96ba471537491 100644 GIT binary patch delta 138 zcmeC1z_?}t;|4<}J_iN{2L0la(zG=F^vsgU-U`x_@3}~C&Sx?b<15FMi&XI6EG((a j&R2yYw>eTlik+_lLwqtw&r|iAGTaWR7Hz)gV!#XlMujTh delta 177 zcmZ28fw6A_;|4<}Q7Z-p2L0la(zG=F^vn|d#1x~_;-ty%Tr@YAG8u`97Gjlt=psG& spA7fr7ZOqIq9yp0OnxC@zIm6zX*SU!g3A7?-;@!u!f?#ycP@6!03h@~i~s-t diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 69bc766a275aa7ac8a0d6ffb880e96538b1c7ce1..f82c1323ac8d9f23bd5929fa334a2ebefc4e3430 100644 GIT binary patch literal 132109 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 delta 28475 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 JmRCz;0sz9$8Os0w delta 60 zcmeAPYzW-&lu1;Vfq_B4xTG{KO+P)eL_aabsI)j~6SJ_gkS>PsBxae-?rN?~09YFn AJ^%m! diff --git a/docs/build/doctrees/modules.doctree b/docs/build/doctrees/modules.doctree index 2e7af4ed86569c74c0ba8a0698519e2f52dc1e08..ec9b93581021f16d5730ddc279c9440b45f5e282 100644 GIT binary patch delta 219 zcmeAXnewP-Rwr~Kw>#wK%Fl^U%g-;#%P&cdFD^+eDkXlBUQ7H*wP`0AfG?2O-wS_xNlk@t2<0wHERRpkOH9g1O(|UO%^1p?Qkq*3Uz}P}l9`uYT)1I!50|vbMsJ2t z=FF7h!cDb>n==G5M2bU&ic6DD{kgqM=Hu*M} Zy2$p}!X2S(MX6~Z%{yxgcaSource code for alarmdecoder.decoder

[docs]class USBDevice(Device): """ - AD2USB device exposed with PyFTDI's interface. + `AD2USB`_ device utilizing PyFTDI's interface. """ # Constants FTDI_VENDOR_ID = 0x0403 - """Vendor ID used to recognize AD2USB devices.""" + """Vendor ID used to recognize `AD2USB`_ devices.""" FTDI_PRODUCT_ID = 0x6001 - """Product ID used to recognize AD2USB devices.""" + """Product ID used to recognize `AD2USB`_ devices.""" BAUDRATE = 115200 - """Default baudrate for AD2USB devices.""" + """Default baudrate for `AD2USB`_ devices.""" __devices = [] __detect_thread = None @@ -215,7 +235,7 @@ Returns all FTDI devices matching our vendor and product IDs. :returns: list of devices - :raises: CommError + :raises: :py:class:`~alarmdecoder.util.CommError` """ cls.__devices = [] @@ -230,24 +250,24 @@ @classmethod
[docs] def devices(cls): """ - Returns a cached list of AD2USB devices located on the system. + Returns a cached list of `AD2USB`_ devices located on the system. - :returns: cached list of devices found. + :returns: cached list of devices found """ return cls.__devices
@classmethod
[docs] def find(cls, device=None): """ - Factory method that returns the requested USBDevice device, or the + Factory method that returns the requested :py:class:`USBDevice` device, or the first device. :param device: Tuple describing the USB device to open, as returned by find_all(). :type device: tuple - :returns: USBDevice object utilizing the specified device. - :raises: NoDeviceError + :returns: :py:class:`USBDevice` object utilizing the specified device + :raises: :py:class:`~alarmdecoder.util.NoDeviceError` """ cls.find_all() @@ -266,14 +286,18 @@ """ Starts the device detection thread. - :param on_attached: function to be called when a device is attached. + :param on_attached: function to be called when a device is attached **Callback definition:** *def callback(thread, device)* :type on_attached: function - :param on_detached: function to be called when a device is detached. + :param on_detached: function to be called when a device is detached **Callback definition:** *def callback(thread, device)* + :type on_detached: function """ cls.__detect_thread = USBDevice.DetectThread(on_attached, on_detached) - cls.find_all() + try: + cls.find_all() + except CommError: + pass cls.__detect_thread.start()
@@ -293,7 +317,7 @@ """ Retrieves the interface used to connect to the device. - :returns: the interface used to connect to the device. + :returns: the interface used to connect to the device """ return self._interface @@ -302,8 +326,8 @@ """ Sets the interface used to connect to the device. - :param value: May specify either the serial number or the device index. - :type value: str or int + :param value: may specify either the serial number or the device index + :type value: string or int """ self._interface = value if isinstance(value, int): @@ -316,7 +340,7 @@ """ Retrieves the serial number of the device. - :returns: The serial number of the device. + :returns: serial number of the device """ return self._serial_number @@ -326,7 +350,7 @@ """ Sets the serial number of the device. - :param value: The serial number of the device. + :param value: serial number of the device :type value: string """ self._serial_number = value @@ -336,7 +360,7 @@ """ Retrieves the description of the device. - :returns: The description of the device. + :returns: description of the device """ return self._description @@ -345,7 +369,7 @@ """ Sets the description of the device. - :param value: The description of the device. + :param value: description of the device :type value: string """ self._description = value @@ -356,7 +380,7 @@ :param interface: May specify either the serial number or the device index. - :type interface: str or int + :type interface: string or int """ Device.__init__(self) @@ -376,13 +400,13 @@ """ Opens the device. - :param baudrate: The baudrate to use. + :param baudrate: baudrate to use :type baudrate: int - :param no_reader_thread: Whether or not to automatically start the + :param no_reader_thread: whether or not to automatically start the reader thread. :type no_reader_thread: bool - :raises: NoDeviceError + :raises: :py:class:`~alarmdecoder.util.NoDeviceError` """ # Set up defaults if baudrate is None: @@ -429,14 +453,17 @@ except Exception: pass
+
[docs] def fileno(self): + raise NotImplementedError('USB devices do not support fileno()') +
[docs] def write(self, data): """ Writes data to the device. - :param data: Data to write - :type data: str + :param data: data to write + :type data: string - :raises: CommError + :raises: :py:class:`~alarmdecoder.util.CommError` """ try: self._device.write_data(data) @@ -450,8 +477,8 @@ """ Reads a single character from the device. - :returns: The character read from the device. - :raises: CommError + :returns: character read from the device + :raises: :py:class:`~alarmdecoder.util.CommError` """ ret = None @@ -467,14 +494,14 @@ """ Reads a line from the device. - :param timeout: The read timeout. + :param timeout: read timeout :type timeout: float :param purge_buffer: Indicates whether to purge the buffer prior to reading. :type purge_buffer: bool - :returns: The line that was read. - :raises: CommError, TimeoutError + :returns: line that was read + :raises: :py:class:`~alarmdecoder.util.CommError`, :py:class:`~alarmdecoder.util.TimeoutError` """ def timeout_event(): @@ -504,6 +531,8 @@ if len(self._buffer) > 0: got_line = True break + else: + time.sleep(0.01) except (usb.core.USBError, FtdiError), err: raise CommError('Error reading from device: {0}'.format(str(err)), err) @@ -526,7 +555,7 @@ """ Retrieves the FTDI device serial number. - :returns: string containing the device serial number. + :returns: string containing the device serial number """ return usb.util.get_string(self._device.usb_dev, 64, self._device.usb_dev.iSerialNumber) @@ -534,16 +563,16 @@ """ Thread that handles detection of added/removed devices. """ - on_attached = event.Event('Called when an AD2USB device has been detected.') - on_detached = event.Event('Called when an AD2USB device has been removed.') + on_attached = event.Event("This event is called when an `AD2USB`_ device has been detected.\n\n**Callback definition:** def callback(thread, device*") + on_detached = event.Event("This event is called when an `AD2USB`_ device has been removed.\n\n**Callback definition:** def callback(thread, device*") def __init__(self, on_attached=None, on_detached=None): """ Constructor - :param on_attached: Function to call when a device is attached. + :param on_attached: Function to call when a device is attached **Callback definition:** *def callback(thread, device)* :type on_attached: function - :param on_detached: Function to call when a device is detached. + :param on_detached: Function to call when a device is detached **Callback definition:** *def callback(thread, device)* :type on_detached: function """ threading.Thread.__init__(self) @@ -590,7 +619,7 @@
[docs]class SerialDevice(Device): """ - AD2USB or AD2SERIAL device exposed with the pyserial interface. + `AD2USB`_, `AD2SERIAL`_ or `AD2PI`_ device utilizing the PySerial interface. """ # Constants @@ -602,11 +631,11 @@ """ Returns all serial ports present. - :param pattern: Pattern to search for when retrieving serial ports. - :type pattern: str + :param pattern: pattern to search for when retrieving serial ports + :type pattern: string :returns: list of devices - :raises: CommError + :raises: :py:class:`~alarmdecoder.util.CommError` """ devices = [] @@ -626,7 +655,7 @@ """ Retrieves the interface used to connect to the device. - :returns: the interface used to connect to the device. + :returns: interface used to connect to the device """ return self._port @@ -635,7 +664,7 @@ """ Sets the interface used to connect to the device. - :param value: The name of the serial device. + :param value: name of the serial device :type value: string """ self._port = value @@ -644,8 +673,8 @@ """ Constructor - :param interface: The device to open. - :type interface: str + :param interface: device to open + :type interface: string """ Device.__init__(self) @@ -658,13 +687,13 @@ """ Opens the device. - :param baudrate: The baudrate to use with the device. + :param baudrate: baudrate to use with the device :type baudrate: int - :param no_reader_thread: Whether or not to automatically start the + :param no_reader_thread: whether or not to automatically start the reader thread. :type no_reader_thread: bool - :raises: NoDeviceError + :raises: :py:class:`~alarmdecoder.util.NoDeviceError` """ # Set up the defaults if baudrate is None: @@ -685,8 +714,8 @@ # all issues with it. self._device.baudrate = baudrate - except (serial.SerialException, ValueError), err: - raise NoDeviceError('Error opening device on port {0}.'.format(self._port), err) + except (serial.SerialException, ValueError, OSError), err: + raise NoDeviceError('Error opening device on {0}.'.format(self._port), err) else: self._running = True @@ -707,14 +736,17 @@ except Exception: pass
+
[docs] def fileno(self): + return self._device.fileno() +
[docs] def write(self, data): """ Writes data to the device. - :param data: The data to write. - :type data: str + :param data: data to write + :type data: string - :raises: CommError + :raises: py:class:`~alarmdecoder.util.CommError` """ try: self._device.write(data) @@ -732,8 +764,8 @@ """ Reads a single character from the device. - :returns: The character read from the device. - :raises: CommError + :returns: character read from the device + :raises: :py:class:`~alarmdecoder.util.CommError` """ ret = None @@ -749,14 +781,14 @@ """ Reads a line from the device. - :param timeout: The read timeout. + :param timeout: read timeout :type timeout: float :param purge_buffer: Indicates whether to purge the buffer prior to reading. :type purge_buffer: bool - :returns: The line that was read. - :raises: CommError, TimeoutError + :returns: line that was read + :raises: :py:class:`~alarmdecoder.util.CommError`, :py:class:`~alarmdecoder.util.TimeoutError` """ def timeout_event(): @@ -787,6 +819,8 @@ if len(self._buffer) > 0: got_line = True break + else: + time.sleep(0.01) except (OSError, serial.SerialException), err: raise CommError('Error reading from device: {0}'.format(str(err)), err) @@ -808,8 +842,8 @@
[docs]class SocketDevice(Device): """ - Device that supports communication with an Alarm Decoder (AD2) that is - exposed via ser2sock or another Serial to IP interface. + Device that supports communication with an `AlarmDecoder`_ (AD2) that is + exposed via `ser2sock`_ or another Serial to IP interface. """ @property @@ -817,7 +851,7 @@ """ Retrieves the interface used to connect to the device. - :returns: the interface used to connect to the device. + :returns: interface used to connect to the device """ return (self._host, self._port) @@ -826,7 +860,7 @@ """ Sets the interface used to connect to the device. - :param value: Tuple containing the host and port to use. + :param value: Tuple containing the host and port to use :type value: tuple """ self._host, self._port = value @@ -836,7 +870,7 @@ """ Retrieves whether or not the device is using SSL. - :returns: Whether or not the device is using SSL. + :returns: whether or not the device is using SSL """ return self._use_ssl @@ -845,7 +879,7 @@ """ Sets whether or not SSL communication is in use. - :param value: Whether or not SSL communication is in use. + :param value: Whether or not SSL communication is in use :type value: bool """ self._use_ssl = value @@ -855,7 +889,7 @@ """ Retrieves the SSL client certificate path used for authentication. - :returns: The certificate path + :returns: path to the certificate path or :py:class:`OpenSSL.crypto.X509` """ return self._ssl_certificate @@ -864,8 +898,8 @@ """ Sets the SSL client certificate to use for authentication. - :param value: The path to the SSL certificate. - :type value: str + :param value: path to the SSL certificate or :py:class:`OpenSSL.crypto.X509` + :type value: string or :py:class:`OpenSSL.crypto.X509` """ self._ssl_certificate = value
@@ -874,7 +908,7 @@ """ Retrieves the SSL client certificate key used for authentication. - :returns: The key path + :returns: jpath to the SSL key or :py:class:`OpenSSL.crypto.PKey` """ return self._ssl_key @@ -883,8 +917,8 @@ """ Sets the SSL client certificate key to use for authentication. - :param value: The path to the SSL key. - :type value: str + :param value: path to the SSL key or :py:class:`OpenSSL.crypto.PKey` + :type value: string or :py:class:`OpenSSL.crypto.PKey` """ self._ssl_key = value @@ -894,7 +928,7 @@ Retrieves the SSL Certificate Authority certificate used for authentication. - :returns: The CA path + :returns: path to the CA certificate or :py:class:`OpenSSL.crypto.X509` """ return self._ssl_ca @@ -903,8 +937,8 @@ """ Sets the SSL Certificate Authority certificate used for authentication. - :param value: The path to the SSL CA certificate. - :type value: str + :param value: path to the SSL CA certificate or :py:class:`OpenSSL.crypto.X509` + :type value: string or :py:class:`OpenSSL.crypto.X509` """ self._ssl_ca = value @@ -912,7 +946,7 @@ """ Constructor - :param interface: Tuple containing the hostname and port of our target. + :param interface: Tuple containing the hostname and port of our target :type interface: tuple """ Device.__init__(self) @@ -927,13 +961,13 @@ """ Opens the device. - :param baudrate: The baudrate to use + :param baudrate: baudrate to use :type baudrate: int - :param no_reader_thread: Whether or not to automatically open the reader + :param no_reader_thread: whether or not to automatically open the reader thread. :type no_reader_thread: bool - :raises: NoDeviceError, CommError + :raises: :py:class:`~alarmdecoder.util.NoDeviceError`, :py:class:`~alarmdecoder.util.CommError` """ try: @@ -943,9 +977,15 @@ self._init_ssl() self._device.connect((self._host, self._port)) + #self._device.setblocking(1) if self._use_ssl: - self._device.do_handshake() + while True: + try: + self._device.do_handshake() + break + except SSL.WantReadError: + pass self._id = '{0}:{1}'.format(self._host, self._port) @@ -974,20 +1014,23 @@ # Make sure that it closes immediately. self._device.shutdown(socket.SHUT_RDWR) - Device.close(self) - except Exception: pass + + Device.close(self) + +
[docs] def fileno(self): + return self._device.fileno()
[docs] def write(self, data): """ Writes data to the device. - :param data: The data to write. - :type data: str + :param data: data to write + :type data: string - :returns: The number of bytes sent. - :raises: CommError + :returns: number of bytes sent + :raises: :py:class:`~alarmdecoder.util.CommError` """ data_sent = None @@ -1008,8 +1051,8 @@ """ Reads a single character from the device. - :returns: The character read from the device. - :raises: CommError + :returns: character read from the device + :raises: :py:class:`~alarmdecoder.util.CommError` """ data = None @@ -1025,14 +1068,14 @@ """ Reads a line from the device. - :param timeout: The read timeout. + :param timeout: read timeout :type timeout: float :param purge_buffer: Indicates whether to purge the buffer prior to reading. :type purge_buffer: bool - :returns: The line that was read.: - :raises: CommError, TimeoutError + :returns: line that was read + :raises: :py:class:`~alarmdecoder.util.CommError`, :py:class:`~alarmdecoder.util.TimeoutError` """ def timeout_event(): @@ -1062,10 +1105,19 @@ if len(self._buffer) > 0: got_line = True break + else: + time.sleep(0.01) except socket.error, err: raise CommError('Error reading from device: {0}'.format(str(err)), err) + except SSL.SysCallError, err: + errno, msg = err + raise CommError('SSL error while reading from device: {0} ({1})'.format(msg, errno)) + + except Exception: + raise + else: if got_line: ret, self._buffer = self._buffer, '' @@ -1083,6 +1135,8 @@ def _init_ssl(self): """ Initializes our device as an SSL connection. + + :raises: :py:class:`~alarmdecoder.util.CommError` """ try: diff --git a/docs/build/html/_modules/alarmdecoder/event/event.html b/docs/build/html/_modules/alarmdecoder/event/event.html index e62ec66..050e58f 100644 --- a/docs/build/html/_modules/alarmdecoder/event/event.html +++ b/docs/build/html/_modules/alarmdecoder/event/event.html @@ -80,6 +80,9 @@ self.event = event self.obj = obj + def __iter__(self): + return iter(self._getfunctionlist()) + def _getfunctionlist(self): """(internal use) """ diff --git a/docs/build/html/_modules/alarmdecoder/messages.html b/docs/build/html/_modules/alarmdecoder/messages.html index 2645690..a48645a 100644 --- a/docs/build/html/_modules/alarmdecoder/messages.html +++ b/docs/build/html/_modules/alarmdecoder/messages.html @@ -48,13 +48,21 @@

Source code for alarmdecoder.messages

 """
-Message representations received from the panel through the Alarm Decoder (AD2)
+Message representations received from the panel through the `AlarmDecoder`_ (AD2)
 devices.
 
+* :py:class:`Message`: The standard and most common message received from a panel.
+* :py:class:`ExpanderMessage`: Messages received from Relay or Zone expander modules.
+* :py:class:`RFMessage`: Message received from an RF receiver module.
+* :py:class:`LRRMessage`: Message received from a long-range radio module.
+
+.. _AlarmDecoder: http://www.alarmdecoder.com
+
 .. moduleauthor:: Scott Petersen <scott@nutech.com>
 """
 
 import re
+import datetime
 
 from .util import InvalidMessageError
 
@@ -67,11 +75,14 @@
     raw = None
     """The raw message text"""
 
+    timestamp = None
+    """The timestamp of the message"""
+
     def __init__(self):
         """
         Constructor
         """
-        pass
+        self.timestamp = datetime.datetime.now()
 
     def __str__(self):
         """
@@ -79,6 +90,22 @@
         """
         return self.raw
 
+
[docs] def dict(self, **kwargs): + """ + Dictionary representation. + """ + return dict( + time=self.timestamp, + mesg=self.raw, + **kwargs + ) +
+ def __repr__(self): + """ + String representation. + """ + return repr(self.dict()) +
[docs]class Message(BaseMessage): """ @@ -86,78 +113,72 @@ """ ready = False - """Indicates whether or not the panel is in a ready state""" + """Indicates whether or not the panel is in a ready state.""" armed_away = False - """Indicates whether or not the panel is armed away""" + """Indicates whether or not the panel is armed away.""" armed_home = False - """Indicates whether or not the panel is armed home""" + """Indicates whether or not the panel is armed home.""" backlight_on = False - """Indicates whether or not the keypad backlight is on""" + """Indicates whether or not the keypad backlight is on.""" programming_mode = False - """Indicates whether or not we're in programming mode""" + """Indicates whether or not we're in programming mode.""" beeps = -1 - """Number of beeps associated with a message""" + """Number of beeps associated with a message.""" zone_bypassed = False - """Indicates whether or not a zone is bypassed""" + """Indicates whether or not a zone is bypassed.""" ac_power = False - """Indicates whether or not the panel is on AC power""" + """Indicates whether or not the panel is on AC power.""" chime_on = False - """Indicates whether or not the chime is enabled""" + """Indicates whether or not the chime is enabled.""" alarm_event_occurred = False - """Indicates whether or not an alarm event has occurred""" + """Indicates whether or not an alarm event has occurred.""" alarm_sounding = False - """Indicates whether or not an alarm is sounding""" + """Indicates whether or not an alarm is sounding.""" battery_low = False - """Indicates whether or not there is a low battery""" + """Indicates whether or not there is a low battery.""" entry_delay_off = False - """Indicates whether or not the entry delay is enabled""" + """Indicates whether or not the entry delay is enabled.""" fire_alarm = False - """Indicates whether or not a fire alarm is sounding""" + """Indicates whether or not a fire alarm is sounding.""" check_zone = False """Indicates whether or not there are zones that require attention.""" perimeter_only = False - """Indicates whether or not the perimeter is armed""" + """Indicates whether or not the perimeter is armed.""" numeric_code = None - """The numeric code associated with the message""" + """The numeric code associated with the message.""" text = None - """The human-readable text to be displayed on the panel LCD""" + """The human-readable text to be displayed on the panel LCD.""" cursor_location = -1 - """Current cursor location on the keypad""" + """Current cursor location on the keypad.""" mask = None - """Address mask this message is intended for""" + """Address mask this message is intended for.""" bitfield = None - """The bitfield associated with this message""" + """The bitfield associated with this message.""" panel_data = None - """The panel data field associated with this message""" + """The panel data field associated with this message.""" def __init__(self, data=None): """ Constructor - :param data: Message data to parse. - :type data: str + :param data: message data to parse + :type data: string """ BaseMessage.__init__(self) - self._regex = re.compile('^(!KPE:){0,1}(\[[a-fA-F0-9\-]+\]),([a-fA-F0-9]+),(\[[a-fA-F0-9]+\]),(".+")$') + self._regex = re.compile('^(!KPM:){0,1}(\[[a-fA-F0-9\-]+\]),([a-fA-F0-9]+),(\[[a-fA-F0-9]+\]),(".+")$') 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. - :param data: The message data. - :type data: str + :param data: message data + :type data: string - :raises: InvalidMessageError + :raises: :py:class:`~alarmdecoder.util.InvalidMessageError` """ match = self._regex.match(data) @@ -193,7 +214,38 @@ # Current cursor location on the alpha display. self.cursor_location = int(self.bitfield[21:23], 16) -
+
[docs] 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 + ) + +
[docs]class ExpanderMessage(BaseMessage): """ Represents a message from a zone or relay expansion module. @@ -217,26 +269,22 @@ """ Constructor - :param data: The message data to parse. - :type data: str + :param data: message data to parse + :type data: string """ BaseMessage.__init__(self) 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. - :param data: The message data - :type data: str + :param data: message data + :type data: string + + :raises: :py:class:`~alarmdecoder.util.InvalidMessageError` """ try: header, values = data.split(':') @@ -257,47 +305,55 @@ else: raise InvalidMessageError('Unknown expander message header: {0}'.format(data)) -
+
[docs] def dict(self, **kwargs): + """ + Dictionary representation. + """ + return dict( + time = self.timestamp, + address = self.address, + channel = self.channel, + value = self.value, + **kwargs + ) + +
[docs]class RFMessage(BaseMessage): """ Represents a message from an RF receiver. """ serial_number = None - """Serial number of the RF device""" + """Serial number of the RF device.""" value = -1 - """Value associated with this message""" + """Value associated with this message.""" battery = False - """Battery low indication""" + """Low battery indication""" supervision = False """Supervision required indication""" - loop = [False for x in range(4)] + loop = [False for _ in range(4)] """Loop indicators""" def __init__(self, data=None): """ Constructor - :param data: The message data to parse - :type data: str + :param data: message data to parse + :type data: string """ BaseMessage.__init__(self) 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. - :param data: The message data. - :type data: str + :param data: message data + :type data: string + + :raises: :py:class:`~alarmdecoder.util.InvalidMessageError` """ try: self.raw = data @@ -320,7 +376,20 @@ except ValueError: raise InvalidMessageError('Received invalid message: {0}'.format(data)) -
+
[docs] 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 + ) + +
[docs]class LRRMessage(BaseMessage): """ Represent a message from a Long Range Radio. @@ -329,34 +398,30 @@ event_data = None """Data associated with the LRR message. Usually user ID or zone.""" partition = -1 - """The partition that this message applies to""" + """The partition that this message applies to.""" event_type = None - """The type of the event that occurred""" + """The type of the event that occurred.""" def __init__(self, data=None): """ Constructor - :param data: The message data to parse. - :type data: str + :param data: message data to parse + :type data: string """ BaseMessage.__init__(self) 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. - :param data: The message data. - :type data: str + :param data: message data to parse + :type data: string + + :raises: :py:class:`~alarmdecoder.util.InvalidMessageError` """ try: self.raw = data @@ -365,7 +430,19 @@ self.event_data, self.partition, self.event_type = values.split(',') except ValueError: - raise InvalidMessageError('Received invalid message: {0}'.format(data))
+ raise InvalidMessageError('Received invalid message: {0}'.format(data)) + +
[docs] 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 + )
diff --git a/docs/build/html/_modules/alarmdecoder/util.html b/docs/build/html/_modules/alarmdecoder/util.html index 3540201..194f8bd 100644 --- a/docs/build/html/_modules/alarmdecoder/util.html +++ b/docs/build/html/_modules/alarmdecoder/util.html @@ -48,7 +48,9 @@

Source code for alarmdecoder.util

 """
-Provides utility classes for the Alarm Decoder (AD2) devices.
+Provides utility classes for the `AlarmDecoder`_ (AD2) devices.
+
+.. _AlarmDecoder: http://www.alarmdecoder.com
 
 .. moduleauthor:: Scott Petersen <scott@nutech.com>
 """
@@ -87,7 +89,7 @@
 
[docs]class Firmware(object): """ - Represents firmware for the Alarm Decoder devices. + Represents firmware for the `AlarmDecoder`_ devices. """ # Constants @@ -102,14 +104,14 @@ @staticmethod
[docs] def upload(dev, filename, progress_callback=None): """ - Uploads firmware to an Alarm Decoder device. + Uploads firmware to an `AlarmDecoder`_ device. - :param filename: The firmware filename - :type filename: str - :param progress_callback: Callback function used to report progress. + :param filename: firmware filename + :type filename: string + :param progress_callback: callback function used to report progress :type progress_callback: function - :raises: NoDeviceError, TimeoutError + :raises: :py:class:`~alarmdecoder.util.NoDeviceError`, :py:class:`~alarmdecoder.util.TimeoutError` """ def do_upload(): diff --git a/docs/build/html/_modules/alarmdecoder/zonetracking.html b/docs/build/html/_modules/alarmdecoder/zonetracking.html index b0ed0c1..363a54c 100644 --- a/docs/build/html/_modules/alarmdecoder/zonetracking.html +++ b/docs/build/html/_modules/alarmdecoder/zonetracking.html @@ -48,7 +48,9 @@

Source code for alarmdecoder.zonetracking

 """
-Provides zone tracking functionality for the Alarm Decoder (AD2) device family.
+Provides zone tracking functionality for the `AlarmDecoder`_ (AD2) device family.
+
+.. _AlarmDecoder: http://www.alarmdecoder.com
 
 .. moduleauthor:: Scott Petersen <scott@nutech.com>
 """
@@ -65,6 +67,7 @@
     Representation of a panel zone.
     """
 
+    # Constants
     CLEAR = 0
     """Status indicating that the zone is cleared."""
     FAULT = 1
@@ -74,15 +77,25 @@
 
     STATUS = {CLEAR: 'CLEAR', FAULT: 'FAULT', CHECK: 'CHECK'}
 
+    # Attributes
+    zone = 0
+    """Zone ID"""
+    name = ''
+    """Zone name"""
+    status = CLEAR
+    """Zone status"""
+    timestamp = None
+    """Timestamp of last update"""
+
     def __init__(self, zone=0, name='', status=CLEAR):
         """
         Constructor
 
-        :param zone: The zone number.
+        :param zone: zone number
         :type zone: int
-        :param name: Human readable zone name.
-        :type name: str
-        :param status: Initial zone state.
+        :param name: Human readable zone name
+        :type name: string
+        :param status: Initial zone state
         :type status: int
         """
         self.zone = zone
@@ -105,15 +118,53 @@
 
[docs]class Zonetracker(object): """ - Handles tracking of zone and their statuses. + Handles tracking of zones and their statuses. """ - on_fault = event.Event('Called when the device detects a zone fault.') - on_restore = event.Event('Called when the device detects that a fault is restored.') + on_fault = event.Event("This event is called when the device detects a zone fault.\n\n**Callback definition:** *def callback(device, zone)*") + on_restore = event.Event("This event is called when the device detects that a fault is restored.\n\n**Callback definition:** *def callback(device, zone)*") EXPIRE = 30 """Zone expiration timeout.""" + @property + def zones(self): + """ + Returns the current list of zones being tracked. + + :returns: dictionary of :py:class:`Zone` being tracked + """ + return self._zones + + @zones.setter +
[docs] def zones(self, value): + """ + Sets the current list of zones being tracked. + + :param value: new list of zones being tracked + :type value: dictionary of :py:class:`Zone` being tracked + """ + self._zones = value +
+ @property + def faulted(self): + """ + Retrieves the current list of faulted zones. + + :returns: list of faulted zones + """ + return self._zones_faulted + + @faulted.setter +
[docs] def faulted(self, value): + """ + Sets the current list of faulted zones. + + :param value: new list of faulted zones + :type value: list of integers + """ + self._zones_faulted = value +
def __init__(self): """ Constructor @@ -126,8 +177,8 @@ """ Update zone statuses based on the current message. - :param message: Message to use to update the zone tracking. - :type message: Message or ExpanderMessage + :param message: message to use to update the zone tracking + :type message: :py:class:`~alarmdecoder.messages.Message` or :py:class:`~alarmdecoder.messages.ExpanderMessage` """ if isinstance(message, ExpanderMessage): if message.type == ExpanderMessage.ZONE: @@ -208,12 +259,12 @@ """ Convert an address and channel into a zone number. - :param address: The expander address + :param address: expander address :type address: int - :param channel: The channel + :param channel: channel :type channel: int - :returns: The zone number associated with an address and channel. + :returns: zone number associated with an address and channel """ # TODO: This is going to need to be reworked to support the larger @@ -227,7 +278,7 @@ """ Clear all expired zones from our status list. - :param zone: current zone being processed. + :param zone: current zone being processed :type zone: int """ cleared_zones = [] @@ -300,11 +351,11 @@ """ Adds a zone to the internal zone list. - :param zone: The zone number. + :param zone: zone number :type zone: int - :param name: Human readable zone name. - :type name: str - :param status: The zone status. + :param name: human readable zone name + :type name: string + :param status: zone status :type status: int """ if not zone in self._zones: @@ -317,9 +368,9 @@ """ Updates a zones status. - :param zone: The zone number. + :param zone: zone number :type zone: int - :param status: The zone status. + :param status: zone status :type status: int :raises: IndexError @@ -342,10 +393,10 @@ """ Determine if a zone is expired or not. - :param zone: The zone number. + :param zone: zone number :type zone: int - :returns: Whether or not the zone is expired. + :returns: whether or not the zone is expired """ return time.time() > self._zones[zone].timestamp + Zonetracker.EXPIRE
diff --git a/docs/build/html/alarmdecoder.html b/docs/build/html/alarmdecoder.html index 5f87dd9..d18d7e8 100644 --- a/docs/build/html/alarmdecoder.html +++ b/docs/build/html/alarmdecoder.html @@ -177,6 +177,13 @@

Callback definition: def callback(device, message)

+
+
+on_sending_received
+

This event is called when a !Sending.done message is received from the AlarmDecoder.

+

Callback definition: def callback(device, status, message)

+
+
on_open
@@ -229,6 +236,12 @@

Represents panel function key #4

+
+
+KEY_PANIC = u'\x05\x05\x05'
+

Represents a panic keypress

+
+
BATTERY_TIMEOUT = 30
@@ -255,7 +268,7 @@
-address_mask = 0
+address_mask = 4294967295

The address mask configured on the device.

@@ -693,6 +706,11 @@ reader thread.

Closes the device.

+
+
+fileno()[source]
+
+
write(data)[source]
@@ -856,6 +874,11 @@ reader thread.

Closes the device.

+
+
+fileno()[source]
+
+
write(data)[source]
@@ -1020,6 +1043,11 @@ thread.

Closes the device.

+
+
+fileno()[source]
+
+
write(data)[source]
@@ -1103,6 +1131,18 @@ devices.

The raw message text

+
+
+timestamp = None
+

The timestamp of the message

+
+ +
+
+dict(**kwargs)[source]
+

Dictionary representation.

+
+
@@ -1242,6 +1282,12 @@ devices.

The panel data field associated with this message.

+
+
+dict(**kwargs)[source]
+

Dictionary representation.

+
+
@@ -1285,6 +1331,12 @@ devices.

Value associated with the message

+
+
+dict(**kwargs)[source]
+

Dictionary representation.

+
+
@@ -1322,6 +1374,12 @@ devices.

Loop indicators

+
+
+dict(**kwargs)[source]
+

Dictionary representation.

+
+
@@ -1347,6 +1405,12 @@ devices.

The type of the event that occurred.

+
+
+dict(**kwargs)[source]
+

Dictionary representation.

+
+
@@ -1434,7 +1498,7 @@ devices.

-zones
+zones[source]

Returns the current list of zones being tracked.

@@ -1448,7 +1512,7 @@ devices.

-faulted
+faulted[source]

Retrieves the current list of faulted zones.

diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index 0ec83bb..eaefde2 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -295,6 +295,28 @@
devices() (alarmdecoder.devices.USBDevice class method)
+ +
dict() (alarmdecoder.messages.BaseMessage method) +
+ +
+ +
(alarmdecoder.messages.ExpanderMessage method) +
+ + +
(alarmdecoder.messages.LRRMessage method) +
+ + +
(alarmdecoder.messages.Message method) +
+ + +
(alarmdecoder.messages.RFMessage method) +
+ +
@@ -366,6 +388,20 @@ +
fileno() (alarmdecoder.devices.SerialDevice method) +
+ +
+ +
(alarmdecoder.devices.SocketDevice method) +
+ + +
(alarmdecoder.devices.USBDevice method) +
+ +
+
find() (alarmdecoder.devices.USBDevice class method)
@@ -473,16 +509,20 @@
KEY_F2 (alarmdecoder.decoder.AlarmDecoder attribute)
-
-
KEY_F3 (alarmdecoder.decoder.AlarmDecoder attribute)
+
+
KEY_F4 (alarmdecoder.decoder.AlarmDecoder attribute)
+ +
KEY_PANIC (alarmdecoder.decoder.AlarmDecoder attribute) +
+
@@ -599,12 +639,12 @@
on_low_battery (alarmdecoder.decoder.AlarmDecoder attribute)
- -
on_lrr_message (alarmdecoder.decoder.AlarmDecoder attribute)
+
+
on_message (alarmdecoder.decoder.AlarmDecoder attribute)
@@ -650,6 +690,10 @@ +
on_sending_received (alarmdecoder.decoder.AlarmDecoder attribute) +
+ +
on_write (alarmdecoder.decoder.AlarmDecoder attribute)
@@ -908,9 +952,15 @@
-
timestamp (alarmdecoder.zonetracking.Zone attribute) +
timestamp (alarmdecoder.messages.BaseMessage attribute)
+
+ +
(alarmdecoder.zonetracking.Zone attribute) +
+ +
type (alarmdecoder.messages.ExpanderMessage attribute)
diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index b32ce896d827142c0b5072ca9de45fa4c78cd143..cd58da796df5a5cafcac7e4ac02d69edb292123d 100644 GIT binary patch delta 1710 zcmV;f22uIR4VDg&e1A)G;y4h#&#$0r_ZrvE?w;mGf-^%+CZrrQyE7M+up3ZCwp_A+ zu)lug7Xd7%#;v|UFm|Wa>c`h#i%g{=PvLb^n)H+8E0B|$kCWnfleJ$2Ta(G(Cf`)L zlQ5ZAmp*JDcRbWxZJ%gvErIJ~dwFAXt-bBJx#5X#-~*RjXMZUqDg_<1?^c&jS@X~T zm|WaYKi_b>ji5xT62?k8nW!~SkZeT;Ow}rJW3*W942;ui`Fz`|Byt0K z%@aUK8wi_U)TDWzRu^aOheYLTu~`XIBD8UY0A7=l?}0Vyc<)!`i$~OEITTYltK@m? z{e?%CrDO@GQto~pg)E+b3m41SV+VuizO!AqD?sl>DSuGz?#eEK<_CnRs=5U8e9xsw zTS=kTsxEr)nm}PH6_G)>w$+$%DNmUXlWE?>Ve-{^EC)Zk5A7EvmAm<5n=_mcgw^X8 zo~P1&p&?WIchc&6^`~b%Wbt_hEx1I9s6Fdm=2f@s_@S6D;p|OY_`U)Dqk226T}Y1j19OWlj`7; zK09%#NX&R3>TI2W_<{^qYX?2!iDL0(L(#cMjO51%)xDiOF za-)a(CYm*mjzqUcCFHh&-B?_cfY?Jywb-@Lz<-Rz%4%n5(1=t`vcO=6JC$Wv#L#n( z`dikxoJy>-Xh=!wMU@U&S|`ZX?MCB~9+If9_-sJtTa3;h_>=}v4~05c;>DIUCUZX$Q71nIoGO8v?wUcCS*Iw4KS%SiQ(?!*_=H^ zi`nunX7d@L|2C9`PbnQrk$$Wk4f9n~q*#pA53Kv?@*$>3LiRgI*;ZvhBCRg&rP|f7 z2=5$Y%ShkcT5UAXvI?A8K|on>p{?o6D1X-B0~Eh{-ZS~7kPA@hFV-r`nqs%PiA%8u5`V&@ zBVzFF=upM)h!om5LygW{3R19G240C8cpQOsZ7DAv^SYVEsMHVhoM+(g`4xcdfSOmM zu`8r%Y&5=>xX%NONU4LEW6gKc(D6%E@Er?YmL!JnB85ORELVS)oU!ccwRb05o?FaL zH9x`vJjd>(kXkRrLbAbO6i-v^B!9}G{OttT5=<%^T1X5Ar2<3M>Z4Hti z>3Z$&;p1!(VO#BiQ5Fij44F}C&9XOIokB-~+23W&LoK*23~>W{$oTIn#ka|ql;p65 zE9Hi4Q*AC33FYjDF3?&EmLd7mK38Bp&zj7FW|hk$CEFi`57Qqcyh_3fb$R(kps(j*$Olz zU*vsU2g$@b?DjSM!S4U0+JA*w+FzunN6fJRQuRKPGJjDxoq4q)ZeOm!9De#fn1U&- z>A{S=&$MA1?Y9OSk{5>HPCrf zjU=+}W(81`gq~ZYURF^t8z4J5jv+zahyEpSjhq1v<-NZNt%oM&u74u}H3J{g>NG#~ zAq|FpUm*FB!d=dz47GSyAMww09^;NRUB?;iLE?%E1N3CFmjf&u&_^q=+6uK^Q~uuL z1;~(S-8Rw1ZU+XuyRq{I*5~-tAh!5PbwJ-Acf0LKoEECA`ZRr<-%+%o1oMf?k*U^( zN=C8IF0-5_IriS`Y)*&zelbh`59oqI E!nWgAm;e9( delta 1632 zcmV-m2A}zs4#^FWe1A=I+c*rp_g8pk_ZrQ1cTc@JvC?{)#u-KKZhPU-5^Qrqi5il! z}@80n|)Df zDPgv(F1_19KJZX?wSA(w)d1JY{_@7=T6^1LbHfAQ!8WWvgXJC zm|fgZKi_GfA)@rdSElgAIQ6*1cTP0NilT{lOlt^X3+sI_^Y;*>Cn74ks zZdDSwTdgfm03mH8ntoA}=6zmWT(ln&m2bsvBdkGaGY}bgO$2~?&jy6guGw@~ zUaU`3?f&$v^)Kp!x*&DNYoJ0O19^&Ux2B@}Q0`qn+^yz|<^4yjzrK>^UZa?5ZSWh| zi-e4uC&I2|E07*AR16b^k9Cc*u{HntuYXU@ zGw}D_8C3(216u2iL3@)T0%TG&!(bX4HlXY8C{K*_4*^@8Wuu7RHH4LfZr431g+3DV=z z`5RrP2FXu!edgEjezA(MZRW_}0)JI@jO~nTt6BDgvZc_GVA6A$t562l*&%L1f{e4R zaK1%g(gxpUuasM|O?7}M62kDs#_l+6$cQ;VybF)!ktn>Ie}`qXqx%Ofy)wz zSj386CaF!UlB=X9^XuA)a!0XC*B^8WyA>cw5g`2cVHt&l=2A@H+%CKjOMes9>YXjb zEp=VlVCRyfNlzUaeyH0|Qb_V`+3{NpCpdg^S_0R|xz-r&{Y|)fXwvI-M4-m1V_Ln;1buq(u|wLDpD5hrJjzhU z549lw%$G6lgv;wVLsF3AgF6RyWP>|b4(OAUSZ#&cZYdAVKLOd1{#m-?qKnD}%O(sX{e*B}y5>y@8S`3NfV`;38${&@XJeMksdI1Nmm@4|WHUxL*~ eF`IcT1}vxl1JS_Vdz}pFimG1(!T$kSCluS6yff+m diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index bacf391..aec054a 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{represent:3,all:[0,3],code:[3,2],sleep:2,on_boot:3,stage_don:3,backlight:3,zone:3,messagesexpandermessag:[],readabl:3,send:3,program:3,x03:3,x02:3,x01:3,sent:3,x04:3,sourc:[0,2,3],string:3,clear_zon:3,fals:3,on_messag:[3,2],perimeter_onli:3,lrr:3,level:3,list:3,upload:3,"try":[3,2],emul:3,expandermessag:3,pleas:2,second:3,port:3,supervis:3,ad2seri:[3,2],current:3,"new":0,method:3,ser2sock:3,perimet:3,timeouterror:3,gener:[],usbdevic:[3,2],entry_delay_off:3,here:2,on_config_receiv:3,address:3,path:3,valu:3,fire_alarm:3,search:[3,2],sender:[0,2],prior:3,aliv:3,invalidmessageerror:3,via:3,vid:3,appli:3,filenam:3,api:2,famili:[3,2],from:[3,2],describ:3,commun:3,is_reader_al:3,handler:[0,2],call:[0,3],type:3,more:2,relat:3,stage_boot:3,pkei:3,flag:3,indic:[],relai:3,expander_to_zon:3,cach:3,serialdevic:3,must:0,none:[0,3],retriev:[3,2],key_f2:3,on_restor:3,restor:3,dev:3,kwarg:0,can:0,def:[3,2],backlight_on:3,process:3,templat:3,high:3,cursor_loc:3,serial:3,occur:3,delai:3,progress_callback:3,secur:2,anoth:3,simulate_wire_problem:3,write:3,purg:3,low:3,instead:0,panic:3,updat:3,product:3,recogn:3,x509:3,ftdi:3,befor:3,attent:3,mai:2,associ:3,github:[],classmethod:3,ssl_ca:3,issu:3,callback:3,"switch":3,ttimeout:3,socketdevic:3,disarm:3,jpath:3,through:3,paramet:3,bypass:3,on_read:3,main:[3,2],"return":3,python:2,timestamp:3,on_bypass:3,detach:3,name:3,revert:3,on_pan:3,authent:3,stage_wait:3,mode:3,timeout:3,found:[3,2],rfx:[],nodeviceerror:3,"static":3,connect:3,our:3,read_lin:3,event:[],ad2pi:[3,2],reboot:3,content:2,reader:3,print:2,factori:3,state:3,standard:3,on_clos:3,base:[0,3],dictionari:3,"byte":3,armed_hom:3,on_detach:3,key_f4:3,key_f1:3,thread:3,key_f3:3,emulate_relai:3,openssl:3,readthread:3,get_config:3,on_rfx_messag:3,find_al:3,ad2usb:[3,2],first:[3,2],oper:0,rang:3,number:3,on_writ:3,configbit:3,open:[3,2],on_power_chang:3,differ:3,data:3,interact:2,system:3,wrapper:3,attach:3,start_detect:3,on_open:3,termin:2,battery_low:3,specifi:3,rfmessag:3,on_fir:3,provid:[3,2],remov:[0,3],charact:3,project:2,str:[],save_config:3,ani:[],bitfield:3,check_zon:3,dedupl:3,expir:3,"__main__":2,programming_mod:3,also:[0,3],exampl:2,which:3,event_data:3,channel:3,zone_bypass:3,index:2,buffer:3,object:[0,3],most:3,detect:3,basemessag:3,"class":[0,3],armed_awai:3,doc:0,clear:3,request:3,emulate_lrr:3,on_low_batteri:3,text:3,ssl_kei:3,radio:3,find:[3,2],locat:3,configur:3,solut:3,fault_zon:3,should:3,serial_numb:3,stop:3,ssl:3,"import":2,report:3,requir:[3,2],enabl:3,earg:0,"default":3,common:3,partit:3,contain:3,alarm_event_occur:3,certif:3,set:[3,2],keypad:3,ac_pow:3,displai:3,see:2,full:[],arg:0,close:3,arm:3,stop_read:3,pyseri:3,statu:3,wire:3,parent:[],pattern:3,written:3,between:3,progress:3,awai:3,kei:3,numer:3,last:3,fault:3,com:[],batteri:3,on_attach:3,detectthread:3,been:3,beep:3,trigger:3,basic:2,no_reader_thread:3,fire:[0,3],commerror:3,chime_on:3,convert:3,func:0,present:3,sound:3,raw:[3,2],on_fault:3,cursor:3,defin:0,"while":[3,2],stage_upload:3,error:3,loop:3,readi:3,itself:0,ftdi_vendor_id:3,on_zone_fault:3,alarm_sound:3,panel_data:3,author:3,receiv:3,belong:3,handl:[3,2],decod:[],status:3,finish:3,http:[],expans:3,rais:3,user:3,expand:3,lower:3,entri:3,client:3,thi:[3,2],usual:3,when:3,human:3,baudrat:3,expos:3,on_disarm:3,"_on_open":3,except:[3,2],param:[],identif:3,add:0,board:3,match:3,applic:2,vendor:3,around:3,format:3,read:3,numeric_cod:3,lcd:3,bit:3,ad2:[3,2],like:0,singl:3,page:2,www:[],crypto:3,nutechsoftwar:[],sampl:2,toctre:[],fire_timeout:3,home:3,librari:2,definit:3,pyftdi:3,localhost:3,run:3,power:3,event_typ:3,stage_load:3,ssl_certif:3,"__name__":2,usb:[3,2],actual:3,simul:3,stage_start:3,address_mask:3,"float":3,automat:3,chime:3,support:[3,2],on_relay_chang:3,"long":3,start:3,interfac:3,includ:2,on_expander_messag:3,stop_detect:3,"function":[0,3],tupl:3,eventhandl:0,line:3,"true":2,emulate_zon:3,whether:3,on_alarm:3,purge_buff:3,below:2,alarm:[],"int":3,descript:3,pid:3,repres:3,on_zone_restor:3,exist:0,read_timeout:3,ftdi_product_id:3,check:3,battery_timeout:3,handle_messag:2,obj:0,boot:3,invalid:3,field:3,bool:3,you:0,intend:3,firmwar:3,track:3,on_arm:3,directori:2,mask:3,lrrmessag:3,on_lrr_messag:3,maxdepth:[],time:2},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:exception","5":"py:classmethod","6":"py:staticmethod"},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","exception","Python exception"],"5":["py","classmethod","Python class method"],"6":["py","staticmethod","Python static method"]},filenames:["alarmdecoder.event","modules","index","alarmdecoder"],titles:["event Package","alarmdecoder","Welcome to Alarm Decoder’s documentation!","alarmdecoder Package"],objects:{"alarmdecoder.messages.LRRMessage":{partition:[3,3,1,""],event_data:[3,3,1,""],event_type:[3,3,1,""]},"alarmdecoder.messages.BaseMessage":{raw:[3,3,1,""]},"alarmdecoder.messages.ExpanderMessage":{RELAY:[3,3,1,""],ZONE:[3,3,1,""],value:[3,3,1,""],address:[3,3,1,""],type:[3,3,1,""],channel:[3,3,1,""]},"alarmdecoder.event.event":{EventHandler:[0,1,1,""],Event:[0,1,1,""]},"alarmdecoder.zonetracking.Zone":{status:[3,3,1,""],STATUS:[3,3,1,""],name:[3,3,1,""],zone:[3,3,1,""],timestamp:[3,3,1,""],CLEAR:[3,3,1,""],FAULT:[3,3,1,""],CHECK:[3,3,1,""]},"alarmdecoder.devices.SerialDevice":{read_line:[3,2,1,""],BAUDRATE:[3,3,1,""],read:[3,2,1,""],write:[3,2,1,""],find_all:[3,6,1,""],"interface":[3,3,1,""],close:[3,2,1,""],open:[3,2,1,""]},"alarmdecoder.zonetracking":{Zonetracker:[3,1,1,""],Zone:[3,1,1,""]},"alarmdecoder.zonetracking.Zonetracker":{faulted:[3,3,1,""],on_restore:[3,3,1,""],update:[3,2,1,""],zones:[3,3,1,""],on_fault:[3,3,1,""],EXPIRE:[3,3,1,""],expander_to_zone:[3,2,1,""]},"alarmdecoder.devices.Device.ReadThread":{READ_TIMEOUT:[3,3,1,""],stop:[3,2,1,""],run:[3,2,1,""]},"alarmdecoder.event":{event:[0,0,1,""]},"alarmdecoder.messages":{Message:[3,1,1,""],LRRMessage:[3,1,1,""],RFMessage:[3,1,1,""],ExpanderMessage:[3,1,1,""],BaseMessage:[3,1,1,""]},"alarmdecoder.devices":{Device:[3,1,1,""],SocketDevice:[3,1,1,""],USBDevice:[3,1,1,""],SerialDevice:[3,1,1,""]},"alarmdecoder.devices.USBDevice.DetectThread":{stop:[3,2,1,""],run:[3,2,1,""],on_attached:[3,3,1,""],on_detached:[3,3,1,""]},alarmdecoder:{zonetracking:[3,0,1,""],messages:[3,0,1,""],devices:[3,0,1,""],util:[3,0,1,""],decoder:[3,0,1,""],panels:[3,0,1,""],event:[0,0,1,""]},"alarmdecoder.decoder.AlarmDecoder":{configbits:[3,3,1,""],on_rfx_message:[3,3,1,""],fault_zone:[3,2,1,""],on_expander_message:[3,3,1,""],on_open:[3,3,1,""],save_config:[3,2,1,""],on_alarm:[3,3,1,""],on_arm:[3,3,1,""],on_boot:[3,3,1,""],fire_timeout:[3,3,1,""],close:[3,2,1,""],open:[3,2,1,""],id:[3,3,1,""],on_power_changed:[3,3,1,""],BATTERY_TIMEOUT:[3,3,1,""],KEY_F1:[3,3,1,""],KEY_F2:[3,3,1,""],KEY_F3:[3,3,1,""],on_message:[3,3,1,""],reboot:[3,2,1,""],send:[3,2,1,""],on_zone_restore:[3,3,1,""],on_disarm:[3,3,1,""],on_fire:[3,3,1,""],on_write:[3,3,1,""],on_read:[3,3,1,""],on_lrr_message:[3,3,1,""],KEY_F4:[3,3,1,""],clear_zone:[3,2,1,""],on_zone_fault:[3,3,1,""],on_config_received:[3,3,1,""],FIRE_TIMEOUT:[3,3,1,""],on_close:[3,3,1,""],on_bypass:[3,3,1,""],address:[3,3,1,""],battery_timeout:[3,3,1,""],on_panic:[3,3,1,""],on_relay_changed:[3,3,1,""],on_low_battery:[3,3,1,""],emulate_lrr:[3,3,1,""],deduplicate:[3,3,1,""],emulate_zone:[3,3,1,""],get_config:[3,2,1,""],address_mask:[3,3,1,""],emulate_relay:[3,3,1,""]},"alarmdecoder.devices.SocketDevice":{ssl_certificate:[3,3,1,""],ssl_key:[3,3,1,""],read:[3,2,1,""],ssl_ca:[3,3,1,""],read_line:[3,2,1,""],ssl:[3,3,1,""],write:[3,2,1,""],"interface":[3,3,1,""],close:[3,2,1,""],open:[3,2,1,""]},"alarmdecoder.devices.USBDevice":{write:[3,2,1,""],BAUDRATE:[3,3,1,""],description:[3,3,1,""],read:[3,2,1,""],DetectThread:[3,1,1,""],stop_detection:[3,5,1,""],devices:[3,5,1,""],start_detection:[3,5,1,""],read_line:[3,2,1,""],find_all:[3,5,1,""],FTDI_VENDOR_ID:[3,3,1,""],serial_number:[3,3,1,""],"interface":[3,3,1,""],close:[3,2,1,""],FTDI_PRODUCT_ID:[3,3,1,""],open:[3,2,1,""],find:[3,5,1,""]},"alarmdecoder.messages.Message":{backlight_on:[3,3,1,""],alarm_event_occurred:[3,3,1,""],programming_mode:[3,3,1,""],text:[3,3,1,""],bitfield:[3,3,1,""],armed_home:[3,3,1,""],alarm_sounding:[3,3,1,""],ready:[3,3,1,""],zone_bypassed:[3,3,1,""],panel_data:[3,3,1,""],check_zone:[3,3,1,""],numeric_code:[3,3,1,""],battery_low:[3,3,1,""],chime_on:[3,3,1,""],entry_delay_off:[3,3,1,""],perimeter_only:[3,3,1,""],fire_alarm:[3,3,1,""],ac_power:[3,3,1,""],beeps:[3,3,1,""],mask:[3,3,1,""],armed_away:[3,3,1,""],cursor_location:[3,3,1,""]},"alarmdecoder.devices.Device":{stop_reader:[3,2,1,""],on_open:[3,3,1,""],on_write:[3,3,1,""],ReadThread:[3,1,1,""],on_close:[3,3,1,""],on_read:[3,3,1,""],close:[3,2,1,""],is_reader_alive:[3,2,1,""],id:[3,3,1,""]},"alarmdecoder.messages.RFMessage":{battery:[3,3,1,""],value:[3,3,1,""],loop:[3,3,1,""],supervision:[3,3,1,""],serial_number:[3,3,1,""]},"alarmdecoder.decoder":{AlarmDecoder:[3,1,1,""]},"alarmdecoder.event.event.EventHandler":{fire:[0,2,1,""],add:[0,2,1,""],remove:[0,2,1,""]},"alarmdecoder.util.Firmware":{STAGE_LOAD:[3,3,1,""],upload:[3,6,1,""],STAGE_BOOT:[3,3,1,""],STAGE_START:[3,3,1,""],STAGE_UPLOADING:[3,3,1,""],STAGE_WAITING:[3,3,1,""],STAGE_DONE:[3,3,1,""]},"alarmdecoder.util":{CommError:[3,4,1,""],Firmware:[3,1,1,""],TimeoutError:[3,4,1,""],NoDeviceError:[3,4,1,""],InvalidMessageError:[3,4,1,""]}},titleterms:{subpackag:[],alarmdecod:[3,1],welcom:2,alarm:2,devic:3,zonetrack:3,util:3,packag:[0,3],decod:[3,2],messag:3,indic:2,tabl:2,modul:[0,3],document:2,event:0,panel:3}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{represent:1,all:[1,0],code:[1,3],sleep:3,on_boot:1,stage_don:1,backlight:1,zone:1,readabl:1,send:1,program:1,x03:1,x02:1,x01:1,sent:1,x04:1,sourc:[0,1,3],string:1,clear_zon:1,fals:1,on_messag:[1,3],perimeter_onli:1,lrr:1,level:1,list:1,upload:1,"try":[1,3],emul:1,expandermessag:1,pleas:3,second:1,port:1,supervis:1,ad2seri:[1,3],current:1,"new":0,method:1,can:0,ser2sock:1,perimet:1,timeouterror:1,usbdevic:[1,3],entry_delay_off:1,here:3,on_config_receiv:1,address:1,path:1,valu:1,fire_alarm:1,search:[1,3],sender:[3,0],prior:1,def:[1,3],invalidmessageerror:1,via:1,vid:1,appli:1,filenam:1,api:3,famili:[1,3],key_pan:1,from:[1,3],usb:[1,3],commun:1,is_reader_al:1,handler:[3,0],call:[1,0],type:1,more:3,relat:1,stage_boot:1,pkei:1,flag:1,templat:1,relai:1,actual:1,cach:1,serialdevic:1,must:0,none:[1,0],retriev:[1,3],key_f2:1,on_restor:1,restor:1,dev:1,itself:0,x05:1,aliv:1,backlight_on:1,process:1,indic:1,high:1,cursor_loc:1,serial:1,occur:1,delai:1,progress_callback:1,secur:3,anoth:1,simulate_wire_problem:1,write:1,purg:1,low:1,instead:0,panic:1,updat:1,product:1,recogn:1,x509:1,ftdi:1,befor:1,attent:1,mai:3,data:1,classmethod:1,ssl_ca:1,issu:1,callback:1,"switch":1,ttimeout:1,socketdevic:1,disarm:1,jpath:1,through:1,paramet:1,bypass:1,on_read:1,main:[1,3],"return":1,python:3,timestamp:1,on_bypass:1,detach:1,name:1,revert:1,on_pan:1,authent:1,stage_wait:1,mode:1,timeout:1,found:[1,3],nodeviceerror:1,"static":1,connect:1,our:1,read_lin:1,event:1,ad2pi:[1,3],reboot:1,content:3,reader:1,print:3,factori:1,written:1,standard:1,on_clos:1,base:[1,0],dictionari:1,"byte":1,armed_hom:1,on_detach:1,key_f4:1,key_f1:1,thread:1,key_f3:1,emulate_relai:1,openssl:1,readthread:1,get_config:1,on_rfx_messag:1,find_al:1,ad2usb:[1,3],first:[1,3],oper:0,rang:1,number:1,done:1,on_writ:1,configbit:1,open:[1,3],on_power_chang:1,differ:1,associ:1,interact:3,system:1,wrapper:1,attach:1,start_detect:1,on_open:1,termin:3,battery_low:1,specifi:1,rfmessag:1,on_fir:1,provid:[1,3],remov:[1,0],charact:1,project:3,save_config:1,bitfield:1,raw:[1,3],dedupl:1,expir:1,"__main__":3,programming_mod:1,also:[1,0],exampl:3,which:1,event_data:1,channel:1,thi:[1,3],index:3,buffer:1,object:[1,0],most:1,detect:1,basemessag:1,"class":[1,0],armed_awai:1,doc:0,clear:1,request:1,emulate_lrr:1,on_low_batteri:1,text:1,ssl_kei:1,radio:1,find:[1,3],locat:1,configur:1,solut:1,fault_zon:1,should:1,dict:1,serial_numb:1,stop:1,ssl:1,"import":3,report:1,requir:[1,3],fileno:1,enabl:1,earg:0,whether:1,common:1,partit:1,contain:1,alarm_event_occur:1,certif:1,set:[1,3],keypad:1,ac_pow:1,on_alarm:1,see:3,arg:0,close:1,arm:1,stop_read:1,pyseri:1,statu:1,wire:1,pattern:1,keypress:1,state:1,between:1,progress:1,awai:1,kei:1,numer:1,last:1,fault:1,batteri:1,identif:1,detectthread:1,been:1,beep:1,trigger:1,basic:3,no_reader_thread:1,fire:[1,0],commerror:1,chime_on:1,convert:1,func:0,present:1,sound:1,check_zon:1,on_fault:1,cursor:1,defin:0,"while":[1,3],stage_upload:1,error:1,loop:1,readi:1,kwarg:[1,0],ftdi_vendor_id:1,on_zone_fault:1,alarm_sound:1,panel_data:1,author:1,receiv:1,belong:1,handl:[1,3],status:1,finish:1,expans:1,rais:1,user:1,expand:1,lower:1,entri:1,client:1,zone_bypass:1,usual:1,boot:1,human:1,baudrat:1,expos:1,field:1,"_on_open":1,except:[1,3],on_attach:1,add:0,board:1,match:1,applic:3,vendor:1,around:1,format:1,read:1,numeric_cod:1,lcd:1,bit:1,ad2:[1,3],like:0,singl:1,page:3,crypto:1,sampl:3,fire_timeout:1,home:1,librari:3,definit:1,pyftdi:1,localhost:1,run:1,power:1,event_typ:1,stage_load:1,ssl_certif:1,"__name__":3,describ:1,expander_to_zon:1,simul:1,stage_start:1,address_mask:1,"float":1,automat:1,chime:1,support:[1,3],on_relay_chang:1,"long":1,start:1,interfac:1,includ:3,on_expander_messag:1,stop_detect:1,"function":[1,0],tupl:1,eventhandl:0,line:1,"true":3,emulate_zon:1,"default":1,displai:1,purge_buff:1,below:3,alarm:1,"int":1,descript:1,pid:1,repres:1,on_zone_restor:1,exist:0,read_timeout:1,ftdi_product_id:1,check:1,battery_timeout:1,handle_messag:3,when:1,invalid:1,on_disarm:1,bool:1,you:0,intend:1,firmwar:1,track:1,on_arm:1,on_sending_receiv:1,directori:3,mask:1,lrrmessag:1,on_lrr_messag:1,obj:0,time:3},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:exception","5":"py:classmethod","6":"py:staticmethod"},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","exception","Python exception"],"5":["py","classmethod","Python class method"],"6":["py","staticmethod","Python static method"]},filenames:["alarmdecoder.event","alarmdecoder","modules","index"],titles:["event Package","alarmdecoder Package","alarmdecoder","Welcome to Alarm Decoder’s documentation!"],objects:{"alarmdecoder.messages.LRRMessage":{partition:[1,3,1,""],dict:[1,2,1,""],event_data:[1,3,1,""],event_type:[1,3,1,""]},"alarmdecoder.messages.BaseMessage":{raw:[1,3,1,""],dict:[1,2,1,""],timestamp:[1,3,1,""]},"alarmdecoder.messages.ExpanderMessage":{ZONE:[1,3,1,""],RELAY:[1,3,1,""],value:[1,3,1,""],dict:[1,2,1,""],address:[1,3,1,""],type:[1,3,1,""],channel:[1,3,1,""]},"alarmdecoder.event.event":{EventHandler:[0,1,1,""],Event:[0,1,1,""]},"alarmdecoder.zonetracking.Zone":{status:[1,3,1,""],STATUS:[1,3,1,""],name:[1,3,1,""],zone:[1,3,1,""],timestamp:[1,3,1,""],CLEAR:[1,3,1,""],FAULT:[1,3,1,""],CHECK:[1,3,1,""]},"alarmdecoder.devices.SerialDevice":{fileno:[1,2,1,""],BAUDRATE:[1,3,1,""],read:[1,2,1,""],read_line:[1,2,1,""],write:[1,2,1,""],find_all:[1,6,1,""],"interface":[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""]},"alarmdecoder.zonetracking":{Zonetracker:[1,1,1,""],Zone:[1,1,1,""]},"alarmdecoder.zonetracking.Zonetracker":{faulted:[1,3,1,""],on_restore:[1,3,1,""],update:[1,2,1,""],zones:[1,3,1,""],on_fault:[1,3,1,""],EXPIRE:[1,3,1,""],expander_to_zone:[1,2,1,""]},"alarmdecoder.devices.Device.ReadThread":{READ_TIMEOUT:[1,3,1,""],stop:[1,2,1,""],run:[1,2,1,""]},"alarmdecoder.event":{event:[0,0,1,""]},"alarmdecoder.messages":{Message:[1,1,1,""],LRRMessage:[1,1,1,""],RFMessage:[1,1,1,""],ExpanderMessage:[1,1,1,""],BaseMessage:[1,1,1,""]},"alarmdecoder.devices":{Device:[1,1,1,""],SocketDevice:[1,1,1,""],USBDevice:[1,1,1,""],SerialDevice:[1,1,1,""]},"alarmdecoder.devices.USBDevice.DetectThread":{run:[1,2,1,""],stop:[1,2,1,""],on_attached:[1,3,1,""],on_detached:[1,3,1,""]},alarmdecoder:{zonetracking:[1,0,1,""],messages:[1,0,1,""],devices:[1,0,1,""],util:[1,0,1,""],decoder:[1,0,1,""],panels:[1,0,1,""],event:[0,0,1,""]},"alarmdecoder.decoder.AlarmDecoder":{configbits:[1,3,1,""],on_rfx_message:[1,3,1,""],fault_zone:[1,2,1,""],on_expander_message:[1,3,1,""],on_open:[1,3,1,""],save_config:[1,2,1,""],on_alarm:[1,3,1,""],on_arm:[1,3,1,""],on_sending_received:[1,3,1,""],KEY_PANIC:[1,3,1,""],fire_timeout:[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""],id:[1,3,1,""],on_power_changed:[1,3,1,""],battery_timeout:[1,3,1,""],KEY_F1:[1,3,1,""],KEY_F2:[1,3,1,""],KEY_F3:[1,3,1,""],on_message:[1,3,1,""],reboot:[1,2,1,""],send:[1,2,1,""],on_zone_restore:[1,3,1,""],on_disarm:[1,3,1,""],on_fire:[1,3,1,""],on_write:[1,3,1,""],on_read:[1,3,1,""],on_lrr_message:[1,3,1,""],KEY_F4:[1,3,1,""],clear_zone:[1,2,1,""],on_zone_fault:[1,3,1,""],on_config_received:[1,3,1,""],emulate_relay:[1,3,1,""],on_close:[1,3,1,""],on_bypass:[1,3,1,""],address:[1,3,1,""],BATTERY_TIMEOUT:[1,3,1,""],on_panic:[1,3,1,""],on_relay_changed:[1,3,1,""],on_low_battery:[1,3,1,""],emulate_lrr:[1,3,1,""],deduplicate:[1,3,1,""],emulate_zone:[1,3,1,""],get_config:[1,2,1,""],address_mask:[1,3,1,""],FIRE_TIMEOUT:[1,3,1,""],on_boot:[1,3,1,""]},"alarmdecoder.devices.SocketDevice":{ssl_certificate:[1,3,1,""],ssl_key:[1,3,1,""],fileno:[1,2,1,""],read:[1,2,1,""],ssl_ca:[1,3,1,""],read_line:[1,2,1,""],ssl:[1,3,1,""],write:[1,2,1,""],"interface":[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""]},"alarmdecoder.devices.USBDevice":{fileno:[1,2,1,""],BAUDRATE:[1,3,1,""],description:[1,3,1,""],read:[1,2,1,""],DetectThread:[1,1,1,""],stop_detection:[1,5,1,""],devices:[1,5,1,""],start_detection:[1,5,1,""],read_line:[1,2,1,""],write:[1,2,1,""],find_all:[1,5,1,""],FTDI_VENDOR_ID:[1,3,1,""],serial_number:[1,3,1,""],"interface":[1,3,1,""],close:[1,2,1,""],FTDI_PRODUCT_ID:[1,3,1,""],open:[1,2,1,""],find:[1,5,1,""]},"alarmdecoder.messages.Message":{backlight_on:[1,3,1,""],alarm_event_occurred:[1,3,1,""],programming_mode:[1,3,1,""],text:[1,3,1,""],bitfield:[1,3,1,""],armed_home:[1,3,1,""],alarm_sounding:[1,3,1,""],ready:[1,3,1,""],zone_bypassed:[1,3,1,""],panel_data:[1,3,1,""],check_zone:[1,3,1,""],numeric_code:[1,3,1,""],dict:[1,2,1,""],battery_low:[1,3,1,""],chime_on:[1,3,1,""],entry_delay_off:[1,3,1,""],perimeter_only:[1,3,1,""],fire_alarm:[1,3,1,""],ac_power:[1,3,1,""],beeps:[1,3,1,""],mask:[1,3,1,""],armed_away:[1,3,1,""],cursor_location:[1,3,1,""]},"alarmdecoder.devices.Device":{stop_reader:[1,2,1,""],on_open:[1,3,1,""],on_write:[1,3,1,""],ReadThread:[1,1,1,""],on_close:[1,3,1,""],on_read:[1,3,1,""],close:[1,2,1,""],is_reader_alive:[1,2,1,""],id:[1,3,1,""]},"alarmdecoder.messages.RFMessage":{battery:[1,3,1,""],value:[1,3,1,""],dict:[1,2,1,""],supervision:[1,3,1,""],serial_number:[1,3,1,""],loop:[1,3,1,""]},"alarmdecoder.decoder":{AlarmDecoder:[1,1,1,""]},"alarmdecoder.event.event.EventHandler":{fire:[0,2,1,""],add:[0,2,1,""],remove:[0,2,1,""]},"alarmdecoder.util.Firmware":{STAGE_LOAD:[1,3,1,""],upload:[1,6,1,""],STAGE_BOOT:[1,3,1,""],STAGE_START:[1,3,1,""],STAGE_UPLOADING:[1,3,1,""],STAGE_WAITING:[1,3,1,""],STAGE_DONE:[1,3,1,""]},"alarmdecoder.util":{CommError:[1,4,1,""],Firmware:[1,1,1,""],TimeoutError:[1,4,1,""],NoDeviceError:[1,4,1,""],InvalidMessageError:[1,4,1,""]}},titleterms:{alarmdecod:[1,2],welcom:3,alarm:3,devic:1,messag:1,event:0,util:1,packag:[1,0],decod:[1,3],zonetrack:1,indic:3,tabl:3,document:3,modul:[1,0],panel:1}}) \ No newline at end of file diff --git a/setup.py b/setup.py index f8cb474..38a11ba 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ def readme(): return readme_file.read() setup(name='alarmdecoder', - version='0.6', + version='0.7', description='Python interface for the AlarmDecoder (AD2) family ' 'of alarm devices which includes the AD2USB, AD2SERIAL and AD2PI.', long_description=readme(),
 """
-Provides the full AlarmDecoder class.
+Provides the main AlarmDecoder class.
+
+.. _AlarmDecoder: http://www.alarmdecoder.com
 
 .. moduleauthor:: Scott Petersen <scott@nutech.com>
 """
 
 import time
+import re
 
 from .event import event
 from .util import InvalidMessageError
@@ -63,34 +66,36 @@
 
 
[docs]class AlarmDecoder(object): """ - High-level wrapper around Alarm Decoder (AD2) devices. + High-level wrapper around `AlarmDecoder`_ (AD2) devices. """ # High-level Events - on_arm = event.Event('Called when the panel is armed.') - on_disarm = event.Event('Called when the panel is disarmed.') - on_power_changed = event.Event('Called when panel power switches between AC and DC.') - on_alarm = event.Event('Called when the alarm is triggered.') - on_fire = event.Event('Called when a fire is detected.') - on_bypass = event.Event('Called when a zone is bypassed.') - on_boot = event.Event('Called when the device finishes bootings.') - on_config_received = event.Event('Called when the device receives its configuration.') - on_zone_fault = event.Event('Called when the device detects a zone fault.') - on_zone_restore = event.Event('Called when the device detects that a fault is restored.') - on_low_battery = event.Event('Called when the device detects a low battery.') - on_panic = event.Event('Called when the device detects a panic.') - on_relay_changed = event.Event('Called when a relay is opened or closed on an expander board.') + on_arm = event.Event("This event is called when the panel is armed.\n\n**Callback definition:** *def callback(device)*") + on_disarm = event.Event("This event is called when the panel is disarmed.\n\n**Callback definition:** *def callback(device)*") + on_power_changed = event.Event("This event is called when panel power switches between AC and DC.\n\n**Callback definition:** *def callback(device, status)*") + on_alarm = event.Event("This event is called when the alarm is triggered.\n\n**Callback definition:** *def callback(device, status)*") + on_fire = event.Event("This event is called when a fire is detected.\n\n**Callback definition:** *def callback(device, status)*") + on_bypass = event.Event("This event is called when a zone is bypassed. \n\n\n\n**Callback definition:** *def callback(device, status)*") + on_boot = event.Event("This event is called when the device finishes booting.\n\n**Callback definition:** *def callback(device)*") + on_config_received = event.Event("This event is called when the device receives its configuration. \n\n**Callback definition:** *def callback(device)*") + on_zone_fault = event.Event("This event is called when :py:class:`~alarmdecoder.zonetracking.Zonetracker` detects a zone fault.\n\n**Callback definition:** *def callback(device, zone)*") + on_zone_restore = event.Event("This event is called when :py:class:`~alarmdecoder.zonetracking.Zonetracker` detects that a fault is restored.\n\n**Callback definition:** *def callback(device, zone)*") + on_low_battery = event.Event("This event is called when the device detects a low battery.\n\n**Callback definition:** *def callback(device, status)*") + on_panic = event.Event("This event is called when the device detects a panic.\n\n**Callback definition:** *def callback(device, status)*") + on_relay_changed = event.Event("This event is called when a relay is opened or closed on an expander board.\n\n**Callback definition:** *def callback(device, message)*") # Mid-level Events - on_message = event.Event('Called when a message has been received from the device.') - on_lrr_message = event.Event('Called when an LRR message is received.') - on_rfx_message = event.Event('Called when an RFX message is received.') + on_message = event.Event("This event is called when standard panel :py:class:`~alarmdecoder.messages.Message` is received.\n\n**Callback definition:** *def callback(device, message)*") + on_expander_message = event.Event("This event is called when an :py:class:`~alarmdecoder.messages.ExpanderMessage` is received.\n\n**Callback definition:** *def callback(device, message)*") + on_lrr_message = event.Event("This event is called when an :py:class:`~alarmdecoder.messages.LRRMessage` is received.\n\n**Callback definition:** *def callback(device, message)*") + on_rfx_message = event.Event("This event is called when an :py:class:`~alarmdecoder.messages.RFMessage` is received.\n\n**Callback definition:** *def callback(device, message)*") + on_sending_received = event.Event("This event is called when a !Sending.done message is received from the AlarmDecoder.\n\n**Callback definition:** *def callback(device, status, message)*") # Low-level Events - on_open = event.Event('Called when the device has been opened.') - on_close = event.Event('Called when the device has been closed.') - on_read = event.Event('Called when a line has been read from the device.') - on_write = event.Event('Called when data has been written to the device.') + on_open = event.Event("This event is called when the device has been opened.\n\n**Callback definition:** *def callback(device)*") + on_close = event.Event("This event is called when the device has been closed.\n\n**Callback definition:** *def callback(device)*") + on_read = event.Event("This event is called when a line has been read from the device.\n\n**Callback definition:** *def callback(device, data)*") + on_write = event.Event("This event is called when data has been written to the device.\n\n**Callback definition:** *def callback(device, data)*") # Constants KEY_F1 = unichr(1) + unichr(1) + unichr(1) @@ -101,17 +106,35 @@ """Represents panel function key #3""" KEY_F4 = unichr(4) + unichr(4) + unichr(4) """Represents panel function key #4""" + KEY_PANIC = unichr(5) + unichr(5) + unichr(5) + """Represents a panic keypress""" BATTERY_TIMEOUT = 30 - """Timeout before the battery status reverts.""" + """Default timeout (in seconds) before the battery status reverts.""" FIRE_TIMEOUT = 30 - """Timeout before the fire status reverts.""" + """Default tTimeout (in seconds) before the fire status reverts.""" + + # Attributes + address = 18 + """The keypad address in use by the device.""" + configbits = 0xFF00 + """The configuration bits set on the device.""" + address_mask = 0xFFFFFFFF + """The address mask configured on the device.""" + emulate_zone = [False for _ in range(5)] + """List containing the devices zone emulation status.""" + emulate_relay = [False for _ in range(4)] + """List containing the devices relay emulation status.""" + emulate_lrr = False + """The status of the devices LRR emulation.""" + deduplicate = False + """The status of message deduplication as configured on the device.""" def __init__(self, device): """ Constructor - :param device: The low-level device used for this Alarm Decoder + :param device: The low-level device used for this `AlarmDecoder`_ interface. :type device: Device """ @@ -154,9 +177,9 @@ @property
[docs] def id(self): """ - The ID of the Alarm Decoder device. + The ID of the `AlarmDecoder`_ device. - :returns: The identification string for the device. + :returns: identification string for the device """ return self._device.id
@@ -165,7 +188,7 @@ """ Retrieves the timeout for restoring the battery status, in seconds. - :returns: The battery status timeout + :returns: battery status timeout """ return self._battery_timeout @@ -174,7 +197,7 @@ """ Sets the timeout for restoring the battery status, in seconds. - :param value: The timeout in seconds. + :param value: timeout in seconds :type value: int """ self._battery_timeout = value @@ -184,7 +207,7 @@ """ Retrieves the timeout for restoring the fire status, in seconds. - :returns: The fire status timeout + :returns: fire status timeout """ return self._fire_timeout @@ -193,7 +216,7 @@ """ Sets the timeout for restoring the fire status, in seconds. - :param value: The timeout in seconds. + :param value: timeout in seconds :type value: int """ self._fire_timeout = value @@ -202,10 +225,10 @@ """ Opens the device. - :param baudrate: The baudrate used for the device. + :param baudrate: baudrate used for the device. Defaults to the lower-level device default. :type baudrate: int :param no_reader_thread: Specifies whether or not the automatic reader - thread should be started or not + thread should be started. :type no_reader_thread: bool """ self._wire_events() @@ -225,17 +248,18 @@
[docs] def send(self, data): """ - Sends data to the Alarm Decoder device. + Sends data to the `AlarmDecoder`_ device. - :param data: The data to send. - :type data: str + :param data: data to send + :type data: string """ + if self._device: - self._device.write(data) + self._device.write(str(data))
[docs] def get_config(self): """ - Retrieves the configuration from the device. + Retrieves the configuration from the device. Called automatically by :py:meth:`_on_open`. """ self.send("C\r")
@@ -276,9 +300,9 @@ """ Faults a zone if we are emulating a zone expander. - :param zone: The zone to fault. + :param zone: zone to fault :type zone: int - :param simulate_wire_problem: Whether or not to simulate a wire fault. + :param simulate_wire_problem: Whether or not to simulate a wire fault :type simulate_wire_problem: bool """ @@ -299,7 +323,7 @@ """ Clears a zone if we are emulating a zone expander. - :param zone: The zone to clear. + :param zone: zone to clear :type zone: int """ self.send("L{0:02}0\r".format(zone)) @@ -317,29 +341,28 @@ def _handle_message(self, data): """ - Parses messages from the panel. + Parses keypad messages from the panel. - :param data: Panel data to parse. - :type data: str + :param data: keypad data to parse + :type data: string - :returns: An object representing the message. + :returns: :py:class:`~alarmdecoder.messages.Message` """ - if data is None: + + if data is not None: + data = data.lstrip('\0') + + if data is None or data == '': raise InvalidMessageError() msg = None header = data[0:4] - if header[0] != '!' or header == '!KPE': - msg = Message(data) - - if self.address_mask & msg.mask > 0: - self._update_internal_states(msg) + if header[0] != '!' or header == '!KPM': + msg = self._handle_keypad_message(data) elif header == '!EXP' or header == '!REL': - msg = ExpanderMessage(data) - - self._update_internal_states(msg) + msg = self._handle_expander_message(data) elif header == '!RFX': msg = self._handle_rfx(data) @@ -353,16 +376,53 @@ elif data.startswith('!CONFIG'): self._handle_config(data) + elif data.startswith('!Sending'): + self._handle_sending(data) + + return msg + + def _handle_keypad_message(self, data): + """ + Handle keypad messages. + + :param data: keypad message to parse + :type data: string + + :returns: :py:class:`~alarmdecoder.messages.Message` + """ + msg = Message(data) + + if self.address_mask & msg.mask > 0: + self._update_internal_states(msg) + + self.on_message(message=msg) + + return msg + + def _handle_expander_message(self, data): + """ + Handle expander messages. + + :param data: expander message to parse + :type data: string + + :returns: :py:class:`~alarmdecoder.messages.ExpanderMessage` + """ + msg = ExpanderMessage(data) + + self._update_internal_states(msg) + self.on_expander_message(message=msg) + return msg def _handle_rfx(self, data): """ Handle RF messages. - :param data: RF message to parse. - :type data: str + :param data: RF message to parse + :type data: string - :returns: An object representing the RF message. + :returns: :py:class:`~alarmdecoder.messages.RFMessage` """ msg = RFMessage(data) @@ -374,10 +434,10 @@ """ Handle Long Range Radio messages. - :param data: LRR message to parse. - :type data: str + :param data: LRR message to parse + :type data: string - :returns: An object representing the LRR message. + :returns: :py:class:`~alarmdecoder.messages.LRRMessage` """ msg = LRRMessage(data) @@ -398,8 +458,8 @@ """ Handles received configuration data. - :param data: Configuration string to parse. - :type data: str + :param data: Configuration string to parse + :type data: string """ _, config_string = data.split('>') for setting in config_string.split('&'): @@ -422,12 +482,28 @@ self.on_config_received() + def _handle_sending(self, data): + """ + Handles results of a keypress send. + + :param data: Sending string to parse + :type data: string + """ + + matches = re.match('^!Sending(\.{1,5})done.*', data) + if matches is not None: + good_send = False + if len(matches.group(1)) < 5: + good_send = True + + self.on_sending_received(status=good_send, message=data) + def _update_internal_states(self, message): """ Updates internal device states. - :param message: Message to update internal states with. - :type message: Message, ExpanderMessage, LRRMessage, or RFMessage + :param message: :py:class:`~alarmdecoder.messages.Message` to update internal states with + :type message: :py:class:`~alarmdecoder.messages.Message`, :py:class:`~alarmdecoder.messages.ExpanderMessage`, :py:class:`~alarmdecoder.messages.LRRMessage`, or :py:class:`~alarmdecoder.messages.RFMessage` """ if isinstance(message, Message): self._update_power_status(message) @@ -446,10 +522,10 @@ """ Uses the provided message to update the AC power state. - :param message: The message to use to update. - :type message: Message + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.Message` - :returns: Boolean indicating the new status + :returns: bool indicating the new status """ if message.ac_power != self._power_status: self._power_status, old_status = message.ac_power, self._power_status @@ -463,10 +539,10 @@ """ Uses the provided message to update the alarm state. - :param message: The message to use to update. - :type message: Message + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.Message` - :returns: Boolean indicating the new status + :returns: bool indicating the new status """ if message.alarm_sounding != self._alarm_status: @@ -481,10 +557,10 @@ """ Uses the provided message to update the zone bypass state. - :param message: The message to use to update. - :type message: Message + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.Message` - :returns: Boolean indicating the new status + :returns: bool indicating the new status """ if message.zone_bypassed != self._bypass_status: @@ -499,10 +575,10 @@ """ Uses the provided message to update the armed state. - :param message: The message to use to update. - :type message: Message + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.Message` - :returns: Boolean indicating the new status + :returns: bool indicating the new status """ message_status = message.armed_away | message.armed_home @@ -521,10 +597,10 @@ """ Uses the provided message to update the battery state. - :param message: The message to use to update. - :type message: Message + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.Message` - :returns: Boolean indicating the new status + :returns: boolean indicating the new status """ last_status, last_update = self._battery_status @@ -541,10 +617,10 @@ """ Uses the provided message to update the fire alarm state. - :param message: The message to use to update. - :type message: Message + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.Message` - :returns: Boolean indicating the new status + :returns: boolean indicating the new status """ last_status, last_update = self._fire_status @@ -561,10 +637,10 @@ """ Uses the provided message to update the expander states. - :param message: The message to use to update. - :type message: ExpanderMessage + :param message: message to use to update + :type message: :py:class:`~alarmdecoder.messages.ExpanderMessage` - :returns: Boolean indicating the new status + :returns: boolean indicating the new status """ if message.type == ExpanderMessage.RELAY: @@ -576,10 +652,10 @@ def _update_zone_tracker(self, message): """ - Trigger an update of the zonetracker. + Trigger an update of the :py:class:`~alarmdecoder.messages.Zonetracker`. - :param message: The message to update the zonetracker with. - :type message: Message, ExpanderMessage, LRRMessage, or RFMessage + :param message: message to update the zonetracker with + :type message: :py:class:`~alarmdecoder.messages.Message`, :py:class:`~alarmdecoder.messages.ExpanderMessage`, :py:class:`~alarmdecoder.messages.LRRMessage`, or :py:class:`~alarmdecoder.messages.RFMessage` """ # Retrieve a list of faults. @@ -597,29 +673,28 @@ """ self.get_config() - self.on_open(args, kwargs) + self.on_open() def _on_close(self, sender, *args, **kwargs): """ Internal handler for closing the device. """ - self.on_close(args, kwargs) + self.on_close() def _on_read(self, sender, *args, **kwargs): """ Internal handler for reading from the device. """ - self.on_read(args, kwargs) + data = kwargs.get('data', None) + self.on_read(data=data) - msg = self._handle_message(kwargs.get('data', None)) - if msg: - self.on_message(message=msg) + self._handle_message(data) def _on_write(self, sender, *args, **kwargs): """ Internal handler for writing to the device. """ - self.on_write(args, kwargs) + self.on_write(data=kwargs.get('data', None)) def _on_zone_fault(self, sender, *args, **kwargs): """ diff --git a/docs/build/html/_modules/alarmdecoder/devices.html b/docs/build/html/_modules/alarmdecoder/devices.html index b77c905..c8f1813 100644 --- a/docs/build/html/_modules/alarmdecoder/devices.html +++ b/docs/build/html/_modules/alarmdecoder/devices.html @@ -48,7 +48,18 @@

Source code for alarmdecoder.devices

 """
-Contains different types of devices belonging to the Alarm Decoder (AD2) family.
+This module contains different types of devices belonging to the `AlarmDecoder`_ (AD2) family.
+
+* :py:class:`USBDevice`: Interfaces with the `AD2USB`_ device.
+* :py:class:`SerialDevice`: Interfaces with the `AD2USB`_, `AD2SERIAL`_ or `AD2PI`_.
+* :py:class:`SocketDevice`: Interfaces with devices exposed through `ser2sock`_ or another IP to Serial solution.
+  Also supports SSL if using `ser2sock`_.
+
+.. _ser2sock: http://github.com/nutechsoftware/ser2sock
+.. _AlarmDecoder: http://www.alarmdecoder.com
+.. _AD2USB: http://www.alarmdecoder.com
+.. _AD2SERIAL: http://www.alarmdecoder.com
+.. _AD2PI: http://www.alarmdecoder.com
 
 .. moduleauthor:: Scott Petersen <scott@nutech.com>
 """
@@ -63,20 +74,20 @@
 
 from OpenSSL import SSL, crypto
 from pyftdi.pyftdi.ftdi import Ftdi, FtdiError
-from .util import CommError, TimeoutError, NoDeviceError
+from .util import CommError, TimeoutError, NoDeviceError, InvalidMessageError
 from .event import event
 
 
 
[docs]class Device(object): """ - Generic parent device to all Alarm Decoder (AD2) products. + Base class for all `AlarmDecoder`_ (AD2) device types. """ # Generic device events - on_open = event.Event('Called when the device has been opened') - on_close = event.Event('Called when the device has been closed') - on_read = event.Event('Called when a line has been read from the device') - on_write = event.Event('Called when data has been written to the device') + on_open = event.Event("This event is called when the device has been opened.\n\n**Callback definition:** *def callback(device)*") + on_close = event.Event("This event is called when the device has been closed.\n\n**Callback definition:** def callback(device)*") + on_read = event.Event("This event is called when a line has been read from the device.\n\n**Callback definition:** def callback(device, data)*") + on_write = event.Event("This event is called when data has been written to the device.\n\n**Callback definition:** def callback(device, data)*") def __init__(self): """ @@ -107,7 +118,7 @@ """ Retrieve the device ID. - :returns: The identification string for the device. + :returns: identification string for the device """ return self._id @@ -116,8 +127,8 @@ """ Sets the device ID. - :param value: The device identification. - :type value: str + :param value: device identification string + :type value: string """ self._id = value
@@ -125,7 +136,7 @@ """ Indicates whether or not the reader thread is alive. - :returns: Whether or not the reader thread is alive. + :returns: whether or not the reader thread is alive """ return self._read_thread.is_alive()
@@ -161,8 +172,8 @@ """ Constructor - :param device: The device used by the reader thread. - :type device: devices.Device + :param device: device used by the reader thread + :type device: :py:class:`~alarmdecoder.devices.Device` """ threading.Thread.__init__(self) self._device = device @@ -187,24 +198,33 @@ except TimeoutError: pass - except Exception: - self._running = False + except InvalidMessageError: + pass + + except SSL.WantReadError: + pass + + except CommError, err: + self._device.close() - time.sleep(0.01) + except Exception, err: + self._device.close() + self._running = False + raise