As you can see from previous posts, I’ve started automating my house. There was an ADT alarm system installed. I was given a user code, but that was it. I opted not to pay ADT’s ridiculous monthly fee since reasonable monitoring can be had for $10/month.
Looking at the panel, I have a Safewatch Pro 3000, which the internets tells me is close to a honeywell/ademco vista20p without a couple features like zone doubling.
I have a simple touchpad, not an alpha display, probably similar to the 6150, so it’s terrible to program with.
The wireless receiver is in the 5881 series, still don’t know for sure the specific model, but I suspect its the 5881enh.
Looking at the OpenHAB wiki, there’s only a couple options for alarm integration, and alarmdecoder seems to be the thing to use for honeywell/ademco panels
Looking at the alarmdecoder supported panels FAQ page, the Safewatch Pro 3000 is specifically listed! Score!
So I bought an alarmddecoder AD2USB to interface with the alarm. I have to say their shipping is pretty reasonable. I had it within a week.
The quickstart guide that comes with it is helpful enough to get it connected
The Getting Started wiki page is also really helpful
The installation video really helps to clear up any questions about installing it
Of course life happens and it was almost another week before I had time to try connecting it.
I’m going to pick another service for monitoring later, so the ADT communications programming isn’t useful to me. If you’re still using ADT for monitoring, definitely put your account in test mode before monkeying with anything,
According to the Safewatch Pro 3000 manual, you can get into programming without the installer code by pressing both the * and # keys within 50 seconds of startup.
I pulled the battery connection from my alarm, tripped the GFCI outlet the transformer was plugged into, then powered back up, and pressed both buttons. Instantly in programming mode!
First order of business, setting a new installer code. This will allow me to get back into programming mode without cutting power.
The installer code field is *20. Assuming I want to use the code 1234 as my installer code, the sequence is *201234
If you don’t want to change the installer code, but just read out the installer code, read field is #20.
The whole point of this was to enable another touchpad on address 18. That’s data field *191, I only have one partition configured, and I don’t want it to suppress the beeps. The key sequence is *19110
Done programming, *99 is the command to exit (without locking out programming mode)
Following the quick start guide, I powered down the panel, disconnected the battery, and connected the alarmdecoder
Powering back up, I connected the battery and reconnected the transformer. On my windows laptop, I used the alarmdecoder keypad program. The keypad program is excellent for testing (and further programming if you’re like me and don’t have an alpha keypad)
Before long, I started getting FC error / Comm Error
These links were pretty helpful for disabling the dialer for now
*41*, *42* and *94* and *92 0 0
A few other bits copied from the manual I found really helpful
Set new master code
[installer code] + 8 + 02 + [new master code]
Add a user code:
[Master Code] +  + user # + [New user code]
Delete a user code:
[Master Code] +  + user # + [#] 
I had some issues with the openhab binding for the alarmdecoder connecting directly to the serial device. It kept setting the baud rate wrong. Instead of correcting the issue and submitting a patch, I set up the ser2sock TCP/IP port proxy for it. It makes configuring the panel from my laptop easier anyway.
One thing to remember if you have all hardwired zones, the keypad can’t see those messages so you’ll have to use the relay emulation feature of the alarmdecoder and tie your hardwired zones to a relay output
The sample config in the alarmdecoder binding page in the openhab wiki is probably enough to get you rolling. For specific configuration of your zones, you’ll want to skim the alarmdecoder protocol to get a handle on the bit masking so you can properly address your zone devices.
One final annoyance, usb serial devices can move around between reboots, so tweaking some udev rules to create symlinks to specific hardware keeps things from breaking
This page really helped me understand the syntax of udev rules