Cynical Honey

Cynical Honey #

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.

Overview #

  • 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. You don’t have to list a zone if you don’t need it in Indigo.
  • Optionally, create Keypad devices to act as virtual keypads to your system.
  • Optionally, create Monitor devices to group zones into meaningful collections.

Then you’re ready to use actions to control the arming status of your partition(s), and triggers on state changes of your zones and monitors.

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:

Term Meaning
Panel 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.
Partition 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.
Zone 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 panel. When a sensor in a zone activates, the zone is said to be tripping. When a partition has been told to ignore a zone and arm anyway, the zone is said to be bypassed.
Keypad This is the thing on your wall that you type into. You may have multiple ones, but each keypad works on a particular partition at a time - it displays its status and lets you change it.

Security Considerations #

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 entering 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 on theirs 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”).

Please, don’t be stupid. Convenience is great, but think it through.

Supported Devices #

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.

Devices #

System Device #

This device represents an entire security system - panel, partitions, zones, and keypads. That’s what your Indigo installation actually talks to, through a serial communications channel of some sort.

Configuration Settings #

Setting Value Description
Address IP address or serial port Network name or address of serial interface; or full path to a local serial port.
Keep Alive checkbox Talk to the device every so often to make sure it hasn’t disappeared.

To talk to a panel connected to a local serial port (via a USB adapter), enter the full path to the serial device (starting with a slash). The plugin will configure the serial port appropriately. 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.

Device States #

The system device’s state tracks the receiver’s general state.

State Meaning
preparing The device is trying to initialize the network port.
connecting The device is trying to establish a connection.
exploring The device has connected to the security system and is now examining it.
ready The device is ready to use.
unavailable Something has gone wrong and the device cannot be used right now. Check the Indigo log for details.

It usually takes a few seconds for the exploring phase to conclude. This is where the plugin interrogates the panel to find all its partitions and zones and determine how they’re configured.

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.

Partition Device #

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

Device States #

The arming status of a partition is exposed as part of its state state:

State Meaning
preparing The partition is trying to initialize.
ready The partition is unarmed and ready to be armed.
unready The partition is unarmed and cannot be armed become some of its zones are open.
stay The partition is armed in stay mode.
away The partition is armed in away mode.
unavailable Something has gone wrong and the partition cannot be used right now. Check the Indigo log for details.

In away mode, the partition is fully armed. In stay mode, only the perimeter is armed and the interior is bypassed. What constitutes perimeter and interior zones was determined by your system installer. For more information on how arming works, consult the manual for your security system.

Zone Device #

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

Device States #

The status of a zone is exposed as part of its state state:

State Meaning
preparing The zone is trying to initialize.
ready The zone is normal (closed).
open The zone is open (moving, tripped).
trouble The zone is in trouble.
alarm The zone has alarmed.
bypassed The zone has been bypassed
unavailable Something has gone wrong and the zone cannot be used right now. Check the Indigo log for details.

In addition, a zone acts as a standard sensor device.

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.

Monitor Device #

This device groups any number of zones together and summarizes their status. Event triggers can fire when any zone in a Device 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.

Configuration Settings #

Setting Value Description
System menu The security system device.
Zones list List of zones watched by the Monitor.
Open checkbox Zones are selected when they are open.
Bypassed checkbox Zones are selected when they are bypassed.
Trouble checkbox Zones are selected when they are in trouble.
Alarm checkbox Zones are selected when they have triggered an alarm.

At any moment, a Device Monitor selects all zones that are chosen in its Zones list and that are in one of the states whose checkbox is checked. If any zones are selected, the Monitor’s state is alert; if none are selected, the state is ready.

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.

Keypad Device #

This device creates 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.

Actions #

Arm Action #

Arms a (single) partition so that tripping any of its zones will cause an alarm. This is the same as manually arming the partition through a keypad associated with it.

Configuration Settings #

Setting Value Description
Type menu The kind of arming desired. See your manual for details.
User number The number of the user performing the arming. On many panels this doesn’t matter.
Code number The user’s security code. This definitely does matter.

You must enter an authorized security code and user number to arm the system. If you create multiple arming and disarming actions, it may be best to store these values in Indigo variables and use a plugin formula in the actions.

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.

Disarm Action #

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.

Notes #

Release Notes #

Notable releases:

Release Notes
1.2.0 Released under Apache 2.0 license.
1.1.2 Support for Indigo 7.
1.0.2 Miscellaneous bug fixes.
0.9.0 First beta test release.