This write-up is part of a larger “Home Automation” series – be sure to check out the other writeups and videos for some larger context for Home Automation, and how your home alarm can factor into home automation.
In the Home Automation series, when I need certain baseline data to assist in automation, I’m often pulling data from the home alarm system: What doors opened? What rooms had motion? What’s the state of the smoke or carbon monoxide detectors?
These modern alarm systems offer rich features and robust functionality inexpensively. They are reliable and make the perfect subsystem to build in for home automation.
We can easily interface the system to Home Assistant (and a lot of other things) to automate lights, plugs, appliances and even defense against fire, flood, appliance malfunction and more.
To get started, you need a home alarm system. This writeup is about the Non-Neo DSC home alarms. Often these are installed by Vivint, ADT or your local installer but generally the components are all from the same vendor.
You want to avoid “DSC Neo” because DSC does not allow third party integrations with them. The keypad bus is encrypted. It’s an anti-consumer product, in all.
DSC has some good reference material online. The manual is written for alarm installers, but once you’ve got the hang of it, it is very easy to follow.
For this write-up, I’m going to give you a sort of “cheat sheet” but you really do want to read over the reference PDF above, and document your setup in case you ever need to program a new system from scratch.
The programming manual has a kind of worksheet you go through toward the end of the book that walks you through all of the parameters. If you skip right there it’s kind of overwhelming; it’ll make more sense if you look at the cheatsheet first.
Out of the box Programming
There are two codes for these types of panels. The installer code and the master code
The master code is meant to be given to the home owner. The installer code is rarely, if ever, given to the home owner by the installer. Often an installer uses the same installer code for all homes! Not the best in terms of security.
ADT often uses 6321 as their install code. DSC default is 5555
The default master code is usually 1234
The installer code is used to set all the options. The master code is used for arming and disarming and often, though not always, can be used to program more arm/disarm codes for the alarm.
“Zones” in this system refers a single sensor (in the case of wireless sensors) or a single wiring loop (which could have one or more wired sensors). On smaller systems, usually just one or two wired sensors per zone makes sense.
Zones can be varying types – there are some built-in types and the types sort of determine how the alarm panel responds to a zone. Door zones might optionally “chime” if they are breached whereas you wouldn’t want that in motion zones (usually). Smoke alarm zones are usually monitored 24/7 for an alarm state and don’t depend on the panel being armed.
“Partitions” are something else – a “Partition” is a group of one or more sensors, and ideally, keypads. A sensor can belong to more than one partition. there is a built-in partition called “System” that all sensors belong to.
You should be asking “Wait, how does the system handle when a sensor is in a zone that is part of two partitions and only one of them is armed??” A lot of other guides get this part wrong online; it’s actually very clever:
The sensor will only trip the alarm if the zones to which it belongs are all tripped.
Why would that be useful? You can set up the area around your house where packages are delivered to be a zone that exists in multiple partitions. That “delivery zone” is never armed but you can activate a door chime function if there is motion in that area or if your mailbox is opened. If your alarm is armed, a package delivery person would not set off your alarm. Cool stuff.
Extending the Alarm
The alarm, by itself, is useful. But the functionality of an alarm by itself is not useful for automation. We will use the alarm sensors to automate things like turning the lights on when you come home, or detecting when there is a leak in the bathroom. If a smoke alarm goes off, but no one is home to hear it, does it dial your celphone? It could…
DSC 1864 panel (Not Neo!!!)
Spool of 4-pin alarm wire (cat5e/cat6 will do), but small alarm wire is much easier to fish).
RFK5500 Button Panel
Note: There are many software/firmware versions of the RFK5500/5501. Try to get one with firmware 4.x or newer. It’s got a lot of usability improvements and nice features. The RFK panel has a built-in wireless reciever and the PK5500 is just a keypad without the wireless component.
See youtube video TODO
Do you need End of Line resistors?
EoL resistors are cool. You can tell the Installer Pros from Noobs because if your panel has a bunch of resistors in it, the installer didn’t understand the reason for having the resistors.
The panel CAN be programmed not to need resistors, but you want them. These sensors are either normally open, or normally closed. A resistor puts the zone in an in-between state. If a bad guy cuts the wire, it’ll go “more open” than it was, or it’ll go to a dead short. Either way, the alarm panel knows something happened with a hard-wired zone and it will trip.
Putting the resistor at the panel is not necessarily effective depending on how the rest of the sensors are wired in. The sensor should be located at the last sensor in the chain of sensors for that zone. (This is covered in more detail in the above installer PDF, but it doesn’t explain why very well. This is a better explanation. ) Fire zones often have “double EoL resistors” so the panel knows that the zone is a fire zone.
Enter Installer Programming
Press *8 on the keypad followed by the installer code (5555 or 6321 on ADT systems, typically, unless your installer has reset your panel.
Exiting Programming or moving back one level
Generally pressing # will move you back one level or pressing repeatedly will “log out” of installer mode.
There are 8 hard-wired zones that are in the panel by default. If you get a hard-wired zone expander, 9-16 will also show up as hard-wired zones. I recommend using zones 17-64 for wireless zones for that reason.
If I could give you an orientation for programming these, it is what I imagine programming old mainframes of the 1970s would have been like. You need a good mental picture of what’s happening to really master these things. Not that I have.
I recommend you do the physical installation for hard-wired zones first, and keep track of which zone is which space by labeling the wires.
The first step is setting the zone type for each of the first 8 (or 16) zones.
That’s programming location 001 and 002. How do you get there?
*8 (installer code) 001
Now the thing wants you to enter 8 two-digit codes. What are the two-digit codes?
This pic from the manual is telling you that 001 to 004 let you specify what type of zone it is. There is actually up through code 88, see the manual for a full list.
If you don’t have all 8 zones hard wired in, you can set them to 00 when it comes time to key them in.
So if I had a panel setup for:
Zone 1 : Entry Door
Zone 2 : Entry Hall Motion
Zone 3 : Motion Sensor
Zone 4 : Far Outside Door Sensor
Zone 5: Garage Door Sensor
Zone 6: Smoke Detector
Zone 7: Glass Break Sensor
Zone 8: Crawl Space Door Sensor
I might want to trigger the alarm immediately if any zone other than 1 is violated. I only come in via the entry door. See motion without entry door? Alarm. See other doors opened when armed? Alarm.
You get the idea?
So I might enter
- 8 (Installer code) 001
This “section”  sets the zone type of the first 16 zones (regardless of if you have the hard-wired zone expander, or not). This entry sequence tells it the zone types for the first 8 hard-wired zones and then the next 8 zones are null. After the 16th “00” entry, it’ll take you back to enter another section and continue programming.
There is also this idea of Armed Stay. The idea here is you arm your alarm because you are home, but if someone sneaks into your house, you know. In this case you should think about what you want to do. You might want an immediate alarm on the entry door, crawl space door, etc. But motion would be okay because that’s you, in your house. I’ve also seen some people only allow motion on the 2nd floor with an alarm keypad on the 2nd floor such that if any motion is detected on the first floor, it will set off the alarm.
The pre-set zone definitions for away/stay are labeled this way to give you something to work with for that kind of use case.
 – Allows you to set the installer code
 – Allows you to set the master code
Don’t read the manual and assume that you need to fiddle with everything. The panel defaults are mostly sane and you shouldn’t much with the settings. Any setting you change you should fill out on the programming worksheet as that’s what I’m going to ask you for if you have trouble and want help.
TODO: You have a lot more work to do to get a usable system – tweaking a few options, setting up the RFK leypad.
Recommendations for GREAT security improvements.
You can prevent someone from resetting your panel’s programming, even with physical access to your panel. If you forget your codes, it mostly means you have to replace the entire control board.
Change the # digits in the codes to 6 or 8. By default it is 4 digits. C’mon, what is this, 1982?
Help, I don’t know my code!?
OK, so as a best practice earlier I recommended setting some codes and DISABLING the ability to reset the panel. See? DSC does take security seriously! If your panel has NOT been set to disallow resets, here is how you reset it:
- Unplug everything.
- Unwire all the zones and PGM outputs (if re-doing an existing panel, keep track of what goes where so you can put it back!)
- Jump a wire between Zone1 and PGM 1
- Plug the panel back in. Wait 30 seconds.
- Unplug the panel, and remove PGM1/Zone1 wire.
- Plug the panel back in and try one of the keypads with one of the default installer codes (5555 or 6321)