AlarmDecoder
=============
#### Interface for the [AlarmDecoder](http://www.alarmdecoder.com) (AD2) device family ####
This Python library aims to provide a consistent interface for the [Alarm
Decoder](http://www.alarmdecoder.com) product line. (AD2USB, AD2SERIAL and AD2PI)
This also includes devices that have been exposed via [ser2sock](http://github.com/nutechsoftware/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
------------
* An [AlarmDecoder](http://www.alarmdecoder.com) device
* Python 2.7
* [pyftdi](https://github.com/eblot/pyftdi) >= 0.9.0
* [pyusb](http://sourceforge.net/apps/trac/pyusb/) >= 1.0.0b1
* [pyserial](http://pyserial.sourceforge.net/) >= 2.7
* [pyopenssl](https://launchpad.net/pyopenssl)
Documentation
-------------
API documentation can be found [here](http://alarmdecoder.readthedocs.org).
Examples
--------
A basic example is included below. Please see the [examples](http://github.com/nutechsoftware/alarmdecoder/tree/master/examples) directory for more.
```python
import time
from alarmdecoder import AlarmDecoder
from alarmdecoder.devices import USBDevice
def main():
"""
Example application that prints messages from the panel to the terminal.
"""
try:
# Retrieve the first USB device
device = AlarmDecoder(USBDevice.find())
# Set up an event handler and open the device
device.on_message += handle_message
with device.open():
while True:
time.sleep(1)
except Exception, ex:
print 'Exception:', ex
def handle_message(sender, message):
"""
Handles message events from the AlarmDecoder.
"""
print sender, message.raw
if __name__ == '__main__':
main()
```