A clone of: https://github.com/nutechsoftware/alarmdecoder This is requires as they dropped support for older firmware releases w/o building in backward compatibility code, and they had previously hardcoded pyserial to a python2 only version.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.9 KiB

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()
```