Cynical Honey Plugin
This plugin allows Indigo to manage various types of Honeywell/Ademco Vista security systems. You can arm and disarm the system, read and control keypads, and examine the state of each zone. Even better, Cynical Honey can turn every one of your zones - door and window sensors, motion sensors, etc. - into an Indigo device that can in turn trigger events. A well designed security system can "see" the entire periphery of your house and much of the inside. Now Indigo can, too.
- Create a System device for your entire system. You will usually only have one of those.
- Create a Partition device for each security partition you have. Most of you will have only one of these, too.
- Create a Zone device for each sensor zone you want to observe.
- Optionally, create Keypad devices to act as virtual keypads to your system.
- Optionally, create Monitor devices to group zones into meaningful collections.
A Word On Terminology
Security systems have their own language, and Cynical Honey tries to be consistent with this. So let's review what some words mean around security panels:
- The box containing the electronic brain of your security system, often hidden in some closet somewhere. That's where the installer goes when something goes wrong. You hardly ever have to touch the thing.
- This is what you arm and disarm, and what goes screech in the night when the intruders come. Most panels only have a single active partition, but Honeywell panels support up to eight partitions that can be armed and disarmed separately.
- A set of sensors of some kind (door, window, motion, glass break - it doesn't matter) being observed together. Ideally each sensor has its own zone, so that you can observe it separately. If multiple sensors are wired together in one zone, you can't tell them apart from the computer. When a sensor in a zone activates, the zone is said to be tripping.
- This is the thing on your wall that you type into. You may have multiple ones, but each keypad acts for a particular partition - it displays its status and lets you change it.
Cynical Honey can monitor the state of your security system without any special authorization - the fact that it has a serial connection to the panel is sufficient. This is enough to use zone sensors for observation, and lets you change your house's behavior depending on the system's arming status. (Of course, if you always turn a light on when your system disarms, intrepid burglars may figure that out.)
In order to change the arming status of your system, you must provide an authorized security code (and user). You can store this directly in the arming actions you create, or put them into an Indigo variable and use a plugin formula in each action. Keep in mind that by storing an authorized code in Indigo, you are allowing Indigo to control your security system. Obviously this means that if someone hacks your computer, they can disarm your system. Less obviously, it allows you to program your Indigo system to arm and disarm your system without specifying a security code. Think about this carefully. You could program a handheld remote to disarm your system with a single button press from outside your house - but if that's an X-10 remote, someone else just has to turn a dial to have the same ability. The security of your house will depend on the security of your Indigo installation.
If you give Indigo control over your security system, consider creating a distinct security code and user with just enough privileges to achieve your purpose. Consult your security system's documentation for details (look for "creating users").
Cynical Honey requires a Honeywell security panel with a serial port. Some panels (like the Vista 128 series) have built-in serial ports. Others require an attached 4100SM module to provide this port. These interfaces are fairly consistent, and the plugin should work for most of them. Of course, I have only tested it on mine, a Vista 128.
To talk to a panel that is connected to a network serial adapater, enter the address and port (separated by a colon) of the interface device. You need to configure the serial parameters on that network device.
The system device's state tracks the receiver's general state.
If you ever change the configuration of your security system - adding or removing sensors, moving zones between partitions, etc. - be sure to restart the plugin when you are done.
A Partition device represents a set of zones that are armed and disarmed together. Honeywell systems can have up to eight partitions, though most systems only have one.
The arming status of a partition is exposed as part of its state state:
An Zone is the smallest set of independently controlled sensors in your system. Ideally, each sensor is a separate zone, though sometimes multiple sensors are wired together to save money. In that case, all such sensors are treated as a single one, and any one can trip the zone.
The status of a zone is exposed as part of its state state:
A zone normally switches between the open and ready states. That's obvious for door and window sensors. A motion sensor is open while it detects motion; it goes back to ready when motion stops. A glass break sensor would read open when it detects glass breakage, and so forth.
A zone is bypassed to keep it from causing alarms. This happens automatically to interior sensor in stay mode, or can be done manually to arm a partition with windows open.
A state of trouble indicates that there's something wrong with the zone. For example, a wireless sensor will be in this state if it is low on battery or has lost contact altogether.
a Monitor device groups any number of zones together and summarizes their status. Event triggers can fire when any zone in a Monitor group opens or otherwise changes state in interesting ways. Monitors also have a state that directly provides a readable list of all zones that are currently in interesting states, for display in control pages and such.
The active_list device state is a comma-separated list of the names of selected zones. If no zones are selected, this state is the empty string.
A Keypad device is a virtual keypad to the security system. It is configured for a particular partition. A keypad has a display text and a set of three LED lights, and you can press buttons on it.
The system does not automatically update the display text. You need to execute the Update Keypad action to ensure that the keypad state is up to date.
Arms a (single) partition so that tripping any of its zones will cause an alarm. This is the same as arming on a keypad associated with this partition.
Most panels ignore the User setting and figure out the user number from the Code entered. The setting exists in case your panel cares for some reason.
Disarms a (single) partition so that tripping its zones does not cause an alarm.
Arm Multiple Action
Simultaneously arms a set of partitions (of a single security system).
The security code must be authorized to manage all the partitions selected. If it is not, unauthorized partitions will be ignored.
Disarm Multiple Action
Simultaneously disarms a set of partitions.
Update Keypad Action
Updates the state of a virtual keypad device so it shows its current state.
Type into Keypad Action
Sends a string of keystrokes to a security panel. This is the same as walking up to a physical keypad for this partition and (quickly) pressing the buttons specified. After pressing all the virtual buttons, the status of the keypad automatically updates (once).
In most situations, it is safer and more efficient to use Indigo actions to change the state of the security system. Device state updates regardless of how a change is made. Note that partial input (say, a security code without a following action) will display on a physical keypad but will time out after a few seconds, just like real keypresses.
Send Low-Level Command Action
This is the expert option. It lets you send any low-level command to the security panel. The plugin will still process responses normally, so you could send an Arm command "in the raw" and status will still update correctly. You will need documentation for your particular security panel to make sense of this command.