nutechsoftware / alarmdecoder

Python interface for the Alarm Decoder (AD2) family of alarm devices. (AD2USB, AD2SERIAL and AD2PI)
MIT License
63 stars 40 forks source link

.. _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

Requirements

Required:

Optional:


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