MattTW / HoneyAlarmServer

Envisalink 2DS/3 Alarm Server for Honeywell or Ademco Vista Security Systems
37 stars 43 forks source link

This project uses the Ademco TPI provided by Eyez-On. It processes events and passes commands to the Envisalink server and provides an easy to use HTTP interface for clients.

This project was originally a fork of the AlarmServer project for DSC panels - credit to them for the base code. However, the API's between DSC and Honeywell are so different that it didn't make sense to try to maintain a single codebase.

This is still beta software. So far it has only been tested with an Envisalink 3 and Honeywell Vista 15p panel.

What Works

What Doesn't Work

Plugin System

A basic plugin system is available. The plugins directory is searched for any python files containing classes that inherit from BasePlugin.

These classes override whatever events they are interested in responding to. A cfg file of the format ClassName.cfg is automatically loaded if present.

See the plugin-examples directory for a few samples:

indigoPlugin - Communicates status with Indigo home automation servers

pushoverPlugin - Sends notifications via the Pushover API to iOS/Android/Desktops

sssPlugin - Communicates with Synology Survelliance Station

pushbullet - Sends notifications to the PushBullet API (see dependancies)

Config

Please see the alarmserver-example.cfg and rename to alarmserver.cfg and customize to requirements.

The config requirements for pushbullet are located inside the python script itself (plugin-examples\pushbullet.py)

There are example plugins in the plugin-examples directory. Copy/modify and place them in the plugins directory along with a valid cfg file to use them

OpenSSL Certificate Howto

The ssl certificates that are provided are intended for demo purposes only.
Please use openssl to generate your own. A quick HOWTO is below.

To generate a self signed cert issue the following in a command prompt: openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt

Openssl will ask you some questions. The only semi-important one is the 'common name' field. You want this set to your servers fqdn. IE alarmserver.example.com.

If you have a real ssl cert from a certificate authority and it has intermediate certs then you'll need to bundle them all up or the webbrowser will complain about it not being a valid cert. To bundle the certs use cat to include your cert, then the intermediates (ie cat mycert.crt > combined.crt; cat intermediates.crt >> combined.crt)

Dependencies:

On windows, pyOpenSSL is required. http://pypi.python.org/pypi/pyOpenSSL

To use the pushbullet Plugin you need to install the Pushbullet library https://github.com/randomchars/pushbullet.py Use the easy install (pip install pushbullet.py)

Launchers

REST API Info

/api

/api/partition?changeTo=1

/api/alarm/arm

/api/alarm/stayarm

/api/alarm/disarm

arm,stayarm,disarm can all take optional param alarmcode. If alarmcode param is missing the config file value is used instead