.. _AlarmDecoder: http://www.alarmdecoder.com
.. _ser2sock: http://github.com/nutechsoftware/ser2sock
.. _pyftdi: https://github.com/eblot/pyftdi
.. _pyusb: http://sourceforge.net/apps/trac/pyusb
.. _pyserial: http://pyserial.sourceforge.net
.. _pyopenssl: https://launchpad.net/pyopenssl
.. _readthedocs: http://alarmdecoder.readthedocs.org
.. _examples: http://github.com/nutechsoftware/alarmdecoder/tree/master/examples
============
AlarmDecoder
============
.. image:: https://travis-ci.org/nutechsoftware/alarmdecoder.svg?branch=master
:target: https://travis-ci.org/nutechsoftware/alarmdecoder
-------
Summary
-------
This Python library aims to provide a consistent interface for the
`AlarmDecoder`_ product line. (AD2USB, AD2SERIAL and AD2PI).
This also includes devices that have been exposed via `ser2sock`_, which
supports encryption via SSL/TLS.
------------
Installation
------------
AlarmDecoder can be installed through ``pip``::
pip install alarmdecoder
or from source::
python setup.py install
* Note: ``python-setuptools`` is required for installation.
------------
Requirements
------------
Required:
* An `AlarmDecoder`_ device
* Python 2.7
* `pyserial`_ >= 2.7
Optional:
* `pyftdi`_ >= 0.9.0
* `pyusb`_ >= 1.0.0b1
* `pyopenssl`_
-------------
Documentation
-------------
API documentation can be found at `readthedocs`_.
--------
Examples
--------
A basic example is included below. Please see the `examples`_ directory for
more.::
import time
from alarmdecoder import AlarmDecoder
from alarmdecoder.devices import SerialDevice
def main():
"""
Example application that prints messages from the panel to the terminal.
"""
try:
# Retrieve the first USB device
device = AlarmDecoder(SerialDevice(interface='/dev/ttyUSB0'))
# Set up an event handler and open the device
device.on_message += handle_message
with device.open(baudrate=115200):
while True:
time.sleep(1)
except Exception as ex:
print ('Exception:', ex)
def handle_message(sender, message):
"""
Handles message events from the AlarmDecoder.
"""
print sender, message.raw
if __name__ == '__main__':
main()