Honeywell/Ademco Alarm Panel Plugin Development (RS232)

I am starting plugin development on a Honeywell Vista alarm panel. I decided to start a thread on this so other users could track my progress as well as give input/feedback.

I am a professional engineer and have quite a bit of experience writing firmware, although I am new to Lua.

Here is the list of materials I have in house as I begin:

-A Honeywell security system with a Vista-128BPT panel. While I had the system installed and monitored by a local company here in San Francisco, I do own the system and the company is very responsive to any help that I need up to and including calling Honeywell as an installer with questions.
-A Vera 2 with the latest UI installed.
-A Vera supported USB/RS232 FTDI converter
-All of the installation and programming manuals for the alarm panel.
-A copy of the Honeywell Home Automation Setup Guide and a copy for the Computer Interface Protocol 4 spec.
-A home made serial cable. This board has pin headers for the RS232 port right on the panel, so I had to make a cable.
-A copy of the latest DSC alarm panel plugin for reference.
-A laptop running Ubuntu Linux for development.

Current Progress:

I have created a cable and connect the panel to my laptop using the FTDI converter. I have opened up a terminal program and observed System Notifications coming from the panel. I then wrote a C++ program that captures these notifications and decodes them to human readable messages as well as generates and compares the checksum.

Next Steps:

The panel is not responding to requests from the outside. I have read through the programming guide and I think that there are some more options that need to be enabled in the panel. I have made a list of these and sent it to the installer to have them enabled. I expect that to be done by this evening when I get home. Once that is working, I will enhance my C++ reference program to handle sending in status requests and reading logs.

Once that is complete, it will be time to write the actual plugin. I am hoping to be to the spot by late this week. I will then look at the DSC panel plugin for reference and start writing it from scratch. We will see how long that takes.

Any comments, suggestions, or donation of equipment will be appreciated. :slight_smile:

Any new Alarm Panel plugin is welcome. You may want to look here and here for some examples.
Also, you should try to use the standard discussed here for the alarm partitions implementation.

Thanks @mcvflorin. I have already read those post and I am aware of the other plugins. IU am basing my work off of the DSC panel because that supposedly has the latest partition standard.

When I get something running, do I just post it to this thread?

You can post it here, you can create a Wiki page for it, or you can create a Trac page on code.mios.com. This way you can also use the repository.

To create a Wiki page you’ll need to register, and then I will confirm your account, to give you permission to create a page. After you register, you’ll have to tell me the username.

To create a Trac project on code.mios.com I have to create an account for you and a project. For this, I will have to know what username you want, and how you want to name your project.

I would prefer a Trac page for use of the repository. I can’t seem to send you a PM though. I would like my username to be the same as I have here (dfad1469) and the name of the project would be Honeywell/Ademco Alarm Panel.

Check out the AD2USB from Nutech. http://www.nutech.com/online-store/35.html

The Caddx plugin uses the latest partition standard as of about a month ago, so it’s safe to refer to. (Only one function required any serious rework, actually, so it’s probable that other alarm plugins are still useful as code references.) Pick the plugin with the closest message format to the one your panel has, is my advice. The Caddx panel reads binary bytes one at a time and builds up a message buffer; the Paradox is ASCII and line-based.

Status Update:

I have the basic top level VistaAlarmPanel files created and running. I can observe System Notifications in the log file on the Vera. Also, I have successfully sent in a zone status request and received back data. This is a huge step as I have the environment up and running as well as IO moving in both directions.

Next step is to start setting up the data structures and then hook up the common partition template. More work tomorrow.

Will your plugin work with the Vista panels that use the AD2USB adapter? Please have a look here and tell me if the Vista-128BPT uses the same messages.

[quote=“dfad1469, post:8, topic:168386”]Status Update:

I have the basic top level VistaAlarmPanel files created and running. I can observe System Notifications in the log file on the Vera. Also, I have successfully sent in a zone status request and received back data. This is a huge step as I have the environment up and running as well as IO moving in both directions.

Next step is to start setting up the data structures and then hook up the common partition template. More work tomorrow.[/quote]
Great stuff! It’s kinda fun when it gets to that point and you start to see the bits coming together.

Do you have an SVN space on code.mios.com? You won’t be able to PM with your account until it hits 25 posts, but just post here if you need one and I’m sure @mcvflorin will sort it out for you (if it hasn’t been done as a hidden-one already)

Anyhow, let us know if you need anything. There’s a bunch of people here that are familiar with the inner-workings, and they’re all willing to pitch in and lend a hand on this stuff.

@mcvflorin

No. My work hooks up to the RS232 port of the Vista Panel. In the case of Vista-128BPT its built onto the panel. In most of the other Vista panels, you have to add either the VA8201 or the 4100SM modules to get the RS232 port. However, once you have the serial port, the protocol is the same. So my plug-in should work with all Vista panels that use the same version of the RS232 protocol (called the Computer Interface Protocol 4).

The AD2USB hooks up to the panel as a keypad. So that uses a completely different protocol and doesn’t resemble what I am working on at all. However, the functionality will be the same. Through the RS232 I can arm/disarm, get status and names of all zones and partitions and even use or change control panels. There is even a command that allows you to make virtual keypad presses from any keypad.

Speaking as a long time engineer, I think the RS232 is the best way to go, even if you have to but a 4100SM to get it. The 4100SM is about the same price as a AD2USB and its made and supported by the same company who makes the alarm panel and not a small 5 person shop in Oregon. :slight_smile: (I currently work at a really small shop, so no offense)

However, all of that being said, if someone were to buy and send me a AD2USB as well as its protocol, I guess I could look in to creating the plug-in after I get this one done.

@guessed

No code space yet. I will start really bugging someone if its not set up when I get to even and Alpha stage. However, what I have is really basic, and there is not much to share just yet. I hoping that by this weekend I will have something for people to look at.

Also, thanks for the offer of help. The barrier to entry on creating these plug-ins is quite high. I am making progress though.

I spoke too soon. mcvflorin has me set up on code.mios.com. Now I just have to figure out where the subversion repo is…can some PM me the location?

If you drop down the little blue Triangle at the end of your entry on the front page of code.mios.com, it’ll give you the mounts for SVN (both public and secured)

Looks like they haven’t given Anon users Read-priv on the Wiki page yet, so folks won’t easily be able to see what you’re doing just yet either :wink: If you see a Settings link next to it, then you can change those perms also.

Thanks @guessed. That makes perfect sense. Once I get to Alpha stage, I will begin to post things.

Yeah, but both the 4100SM and the VA8201 work only with the more expensive/advanced panels. For the owners of the more entry-level panels the AD2USB is the only solution.

I did now. ;D

I have my AD2USB working with my Vera, but the logic is currently implemented as a C++ program. Once I get everything reliable and working to my liking I’ll move to a native plugin.

The AD2USB works very well. The only problem is that it’s emulating a keypad by design, which means when there are sensors tripped, it cycles through the list of faults, 1 per second. If you have several things tripped it can take a while to detect that a certain sensor is tripped.

The AD2USB supports virtual relay emulation available that can improve this (the alarm can be configured to trip a relay when a zone is faulted), but it does not currently work with my Vista 10SE panel. It works with other panels; Sean the author says he will enable this for mine at some point. The wireless sensors work great though, it gives you direct access to that bus.

[quote=“dfad1469, post:11, topic:168386”]@mcvflorin

No. My work hooks up to the RS232 port of the Vista Panel. In the case of Vista-128BPT its built onto the panel. In most of the other Vista panels, you have to add either the VA8201 or the 4100SM modules to get the RS232 port. However, once you have the serial port, the protocol is the same. So my plug-in should work with all Vista panels that use the same version of the RS232 protocol (called the Computer Interface Protocol 4).

The AD2USB hooks up to the panel as a keypad. So that uses a completely different protocol and doesn’t resemble what I am working on at all. However, the functionality will be the same. Through the RS232 I can arm/disarm, get status and names of all zones and partitions and even use or change control panels. There is even a command that allows you to make virtual keypad presses from any keypad.

Speaking as a long time engineer, I think the RS232 is the best way to go, even if you have to but a 4100SM to get it. The 4100SM is about the same price as a AD2USB and its made and supported by the same company who makes the alarm panel and not a small 5 person shop in Oregon. :slight_smile: (I currently work at a really small shop, so no offense)

However, all of that being said, if someone were to buy and send me a AD2USB as well as its protocol, I guess I could look in to creating the plug-in after I get this one done.[/quote]

I would also agree that a basic RS232 based plugin gives folk more flexibility in terms of connectivity. Using the AD2USB might cut out the use for an extra device (like serial adapter or WIZnet etc); however its very restrictive in terms of wire length, and may also need hacks similar to the Chronos plugin to get Vera to recognize it.

No hacks are needed for Vera to recognize the AD2USB. It uses an FTDI serial chip and the communication protocol is ascii (cr/lf endings). The AD2USB can also be configured to communicate over plain RS232 with some slight mods documented on NuTech’s forums. So if you really want serial you can have it with the AD2USB.

An Ethernet add-on module is also planned for the most recent hardware revision. The thing to keep in mind as far as wire-length goes - you wire the AD2USB to the panel like a keypad. So you can run some basic 4-conductor wire from your panel to wherever your Vera is, and then connect the AD2USB there.

I stand corrected, good points! :slight_smile: