AlarmDecoder Help (AD2PI)


I’m in need of some assistance as I’m not sure what I’m doing wrong. Here’s what I’ve done so far.

[1] I’ve mated my Ad2pi (Raspberry Pi 2b) with a Honeywell Ademco Vista 20p (w/ 2 Zone expanders; 6162 Keypad). All zones are wired.

[2] I installed the Alarm Decoder binding via PaperUI.

[3] Configured the services file (/etc/openhab2/services/alarmdecoder.cfg

# use this line to reach an IP-enabled alarmdecoder (ad2pi) via tcp:

# for serial port access use a line like this:
# or this to override the default speed:

# time (in milliseconds) between attempts to reconnect to the alarmdecoder
# in case the connection goes down

# set this to true if you want to send commands to the alarm panel as well

[4] From the openHab system, I can telnet into the ip:port successful and observe the stream.

[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER

I’ve read through the binding wiki and there a lot of references to RFX, EXP, REL and KPM but nothing regarding AUI which I can read about here

I see absolutely nothing when I view the logs in Karaf (perhaps I’m not running debug?). Any assistance or guidance would be great. What am I doing wrong or what haven’t I done (aside from items and sitemap).

Many thanks,

And here’s the how-to tutorial (hope this helps someone):
Vista20p_AD2Pi.pdf (27.3 KB)

1 Like

AUI is not supported. Everything that you need to know about states, can be accessed through the RFX, EXP, REL and KPM, or even the LRR that I actually coded in the binding.

For AlarmDecoder binding to work, you need to configure a Number or a Contact Item then configure them to use the channel. How are your items defined?

ALso, you wont see anything in logs unless you have an item defined that changes state, or if you configure the correct log level. Set log to TRACE

Add this item:

Number alarmPanelStatusRaw "panel status: [%d]" {alarmdecoder="KPM:00#status"}

If that item state changes with your alarm, then your AD binding is working.

Huge thanks @luckymallari I appreciate the clarity. I just wasn’t sure if I was working down the correct path as it didn’t appear that the communication was actually occurring. Hence why I didn’t add items etc. I’m still very new to OH and I wasn’t sure if PaperUI would create the Things or if I had to add them via a file structure. You cleared all that up for me. I added an item file and the log data is appearing. I should be good to go, if not I’ll post back. Thanks again for all your help here.

14:00:01.308 [INFO ] [del.core.internal.ModelRepositoryImpl] - Refreshing model 'ad2pi.items'
14:00:01.364 [INFO ] [smarthome.event.ItemStateChangedEvent] - alarmPanelStatusRaw changed from NULL to 256

And with trace enabled:

19:04:23.316 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: [00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
19:04:27.178 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: !AUI:120600000000626c02456cf5ec0101010000
19:04:27.381 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: !AUI:1606000000006363024543f531fb456cf5ec01020106
19:04:27.562 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: [00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
19:04:27.565 [TRACE] [mdecoder.internal.AlarmDecoderBinding] - updating item: PanelZone to state 2
19:04:27.570 [TRACE] [mdecoder.internal.AlarmDecoderBinding] - updating item: PanelDisplay to state "FAULT 02 FRONT  ENTRY DOOR      "
19:04:27.574 [INFO ] [smarthome.event.ItemStateChangedEvent] - PanelZone changed from 24 to 2
19:04:27.577 [INFO ] [smarthome.event.ItemStateChangedEvent] - PanelDisplay changed from "FAULT 24 CABINETTAMPER          " to "FAULT 02 FRONT  ENTRY DOOR      "
19:04:31.004 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: [00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
19:04:31.006 [TRACE] [mdecoder.internal.AlarmDecoderBinding] - updating item: PanelZone to state 24
19:04:31.009 [TRACE] [mdecoder.internal.AlarmDecoderBinding] - updating item: PanelDisplay to state "FAULT 24 CABINETTAMPER          "
19:04:31.014 [INFO ] [smarthome.event.ItemStateChangedEvent] - PanelZone changed from 2 to 24
19:04:31.020 [INFO ] [smarthome.event.ItemStateChangedEvent] - PanelDisplay changed from "FAULT 02 FRONT  ENTRY DOOR      " to "FAULT 24 CABINETTAMPER          "
19:04:35.008 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: [00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
19:04:35.014 [TRACE] [mdecoder.internal.AlarmDecoderBinding] - updating item: PanelZone to state 2
19:04:35.018 [TRACE] [mdecoder.internal.AlarmDecoderBinding] - updating item: PanelDisplay to state "FAULT 02 FRONT  ENTRY DOOR      "
19:04:35.021 [INFO ] [smarthome.event.ItemStateChangedEvent] - PanelZone changed from 24 to 2
19:04:35.023 [INFO ] [smarthome.event.ItemStateChangedEvent] - PanelDisplay changed from "FAULT 24 CABINETTAMPER          " to "FAULT 02 FRONT  ENTRY DOOR      "

And my config:


And version:



It seems as if I’m still only observing AUI message (see log above) rather than, for instance !REL (relay, channel and state). Is there a config somewhere that can enable this, well - as least I’m hoping there is :wink:

This will be quite the struggle to define the contacts. I posted my config bits above in hopes you see something I’m simply not familiar with.

Many thanks,

What sensors do you have? Wired? 5800 series?
As I mentioned, AUI messages are sent by AlarmDecoder device (AD2USB, AD2PI, etc), but these are NOT parsed by the AlarmDecoder OH Binding.

Can you telnet/connect direct to raw stream of the AD… … and try to open a door. And paste the output here. You should see !EXP messages

So sorry for being a pain…

All my sensors are wired including my 2 zone expanders. AD (WebUI) can see all my zones including all the programmed zones. Here is a session taken just now directly from openHab’s system to the AD.

root@openHab:/etc/openhab2/services# telnet
telnet> open 10000
Connected to
Escape character is '^]'.
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "


I secured the tamper sensor on the cabinet door in the event it may have been causing an issue (fault). I do see an expansion board message (!EXP:08,08,00) now but faulting the front door still results in !AUI

[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[00000001000000000A--],024,[f70200ff10240000080200000010f0],"FAULT 24 CABINETTAMPER          "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[00000001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
[10000001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "

you can disable AUI for now, as I have mentioned, the AD Binding basically ignores it.


So this basically shows your EXP (expander) messages are working. Above says your example 8, channel 8, has value 00 (restored). You should see an 01 value in logs somewhere (when it was faulted). Also try arming your system. Arming the system ‘resets’ the binding, by knowing that when armed, contacts should be closed.

If you do not see !EXP messages while connected directly to AD, then OH won’t be able to parse them. I would take a look at your AD configuration. Are you using ser2sock? Can you try connecting through the serial (usb) directly and see if !EXP are there?

How would I go about disabling AUI? I can only imagine AUI is enabled due to the type of keypad I’m using (graphical). I’ve armed and disarmed my system and just after disarming I faulted the front door.

[01010401000000003A--],008,[f70200ff1008040c0c020000000000],"ARMED ***AWAY***You may exit now"
[00110001000000003A--],008,[f70200ff1008008c08020000000000],"ARMED ***STAY***                "
[10010101000000003A--],008,[f70200ff1008011c08020000000000],"****DISARMED****  Ready to Arm  "
[10010001000000003A--],008,[f70200ff1008001c08020000000000],"****DISARMED****  Ready to Arm  "
[00010001000000003A--],008,[f70200ff1008000c08020000000000],"****DISARMED****Hit * for faults"
[00010001000000000A--],002,[f70200ff1002000008020000000000],"FAULT 02 FRONT  ENTRY DOOR      "

I believe I am using Ser2Sock as the image was direct from AD. Here’s the config taken from the Pi

daemonize = 1
device = /dev/serial0
baudrate = 115200
port = 10000
raw_device_mode = 1
preserve_connections = 1
bind_ip =
send_terminal_init = 0
device_open_delay = 5000
encrypted = 0
ca_certificate =
ssl_certificate =
ssl_key =
ssl_crl = /etc/ser2sock/ser2sock.crl

I realize it’s late so I can always reach out to AD and ask how to disable AUI. Lucky, again - thanks for your patience and help as it’s truly appreciated… Hopefully I can figure out how this AUI was enabled and how to disable it so others can also work through this issue if it happens again.


Well I wasn’t able to make any progress today other than trying to understand more of what’s occurring and why. It seems zones 1-8 on my Vista20p may not be reporting per this thread: openhab1-addon

“Although not mentioned in the quickstart guide, and only documented on an odd thread, configuring the virtual relay boards is absolutely necessary on panels like the Honeywell Vista 20p and similar, or else all of the eight on-board zones will not be visible! The process sounds intimidating, and it does require bypassing the installer code (see panel documentation about that), but it is not all that hard.”

Which then leads me to this discussion thread: Ademco Emulator.

The !AUI is used by AlarmDecoder for their WebUI, I presume for the zone discovery and such. This explains why we’re able to see the !EXP messages because 2/3 of my house is wired to 4219 zone expanders. As seen below when opening the garage.

17:16:31.018 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: !EXP:08,03,01
17:16:31.140 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: !AUI:120600000000666c02456cf5ec0101010000
17:16:31.382 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: !AUI:1606000000006763024543f531fb456cf5ec01020106
17:16:31.624 [DEBUG] [mdecoder.internal.AlarmDecoderBinding] - got msg: [00000001000000000A--],019,[f70200ff1019000008020000000000],"FAULT 19 GARAGE DOOR OPEN       "

Once I have a solution (e.g. Virtual Relay) I’ll post the exact methods…

– Mon

You can configure the AD via prompts by simply sending ! (you need to connect directly, via telnet or Serial). As I said before, AUI is just another protocol from AD, and is NOT needed by the OH binding, that’s why I suggested you just ignore it or disable it completely.

Seems to be this is an issue with how your configuration/setup is set, and not with the OH Binding itself. You can post a question on the AD forum itself, and I will also assist you there.

Hi Lucky,

Yes, I totally understand regarding OH not supporting AUI and I’d love to ignore it. I’m only referencing it as that’s all I’m able to see on zones 1-8 with an Ad2pi (bummer). I posted on the AD forum this morning and the response was that it’s easier to just move my 8 zones to another Zone Expander than it is to program Virtual Relays to see Z1-8 messages as !REL. So my options are to spend $80 on another zone expander and move 1-8 off the main board (amongst other things) or figure out how to program these Virtual Relays. I’m bummed right now.

Here’s my post on AD Forum.


I believe I’m on the right track now after digging through a lot of material all over the web and compiling it into a how-to. At this point I have the following messages:

2018-03-28 10:04:05.601 [DEBUG] [decoder.internal.AlarmDecoderBinding] - got msg: !REL:12,02,01
2018-03-28 10:04:05.722 [DEBUG] [decoder.internal.AlarmDecoderBinding] - got msg: !AUI:120600000000626c02456cf5ec0101010000
2018-03-28 10:04:05.965 [DEBUG] [decoder.internal.AlarmDecoderBinding] - got msg: !AUI:1606000000006363024543f531fb456cf5ec03020106
2018-03-28 10:04:06.207 [DEBUG] [decoder.internal.AlarmDecoderBinding] - got msg: [00000301100000000A--],002,[f70200ff1002030028020000000000],"FAULT 02 FRONT  ENTRY DOOR      "
2018-03-28 10:04:06.208 [TRACE] [decoder.internal.AlarmDecoderBinding] - updating item: alarmPanelStatusRaw to state 3456
2018-03-28 10:04:06.209 [TRACE] [decoder.internal.AlarmDecoderBinding] - updating item: StatusReady to state 0
2018-03-28 10:04:06.210 [TRACE] [decoder.internal.AlarmDecoderBinding] - updating item: ContactReady to state CLOSED
2018-03-28 10:04:06.211 [TRACE] [decoder.internal.AlarmDecoderBinding] - updating item: PanelBeeps to state 3
2018-03-28 10:04:06.212 [TRACE] [decoder.internal.AlarmDecoderBinding] - updating item: PanelZone to state 2
2018-03-28 10:04:06.214 [TRACE] [decoder.internal.AlarmDecoderBinding] - updating item: PanelDisplay to state "FAULT 02 FRONT  ENTRY DOOR      "
2018-03-28 10:04:08.158 [DEBUG] [decoder.internal.AlarmDecoderBinding] - got msg: !REL:12,02,00
2018-03-28 10:04:09.587 [DEBUG] [decoder.internal.AlarmDecoderBinding] - got msg: [00000001100000003A--],008,[f70200ff1008000c28020000000000]," DISARMED CHIME Hit * for faults"

Just a few more configs at the panel tonight and this should be fully working. Right now I have zones 01-08 setup as relays on address 12+13. The temporary output action for these zones are set to ‘1’ (open then close 2 seconds later). I just need to set this to ‘2’ (stay closed) and program the zones to restore.

I was spoiled with the Envisalink 4 as it never required me to have to use relays to see my on-board zones. I’m also feeling like I must be the only one who has ever ran into this problem as there are very few tutorials on how to configure an AD2pi for on-board zones (Vista20p).

If all works out tonight I’ll post a detailed how-to in hopes that others can benefit … @luckymallari, if it weren’t for your AD widget, I’d probably have given up on this 5 minutes into the problem.


I also have EVL-3 but that came afterwards… (after AD). If you have EVL4/3 you don’t even need the AD. EyezOn has a full documented API also. After I had my AD, I only purchase the EVL to integrate with their monitoring service. I can actually get rid of the AD now but I still use it as a “gateway.” With the AD, you can get sensor messages/transmission even if you don’t program it in the alarm panel (Vista 20P). It just won’t trigger the alarm but it’s still perfect for automation (PIR sensor, contacts, etc).

My previous EVL4 was sold with my house. New house and all new equipment which is why I explored OH as my HA solution. Like anything, this will take time to adapt. I’d definitely install another EVL for monitoring as well as remote arm/disarm - although that’s what HA is for right …

Just a quick update, everything is working great now…

I can help you with remote arm/disarm. You can do this with AD also.

And take a look with my AD/OH keypad :slight_smile: It has:

  1. Fingerprint sensor
  2. Bluetooth Integration
  3. PIR Sensor
  4. NFC/RFID reader
  5. Local LAN web UI :slight_smile:
  6. Shows exactly what is shown on an actual keypad
  7. When I disarm, it will also unlock the Garage door (you can see from the video)


Other things I did you might consider:

  • When I arm the house, it will turn OFF all lights during the day. During the night, it will turn on my Human Simulator (randomly turns on lights, tv, radio).
  • WHen alarm is triggered, I also have ESP8266-based Sirens all over the house (4 indoor, 3 outdoor) and let me tell you, THEY ARE LOUD :slight_smile:
  • Use virtual relays on AD and connect it to my Smoke/CO2 sensors. If these sensors are triggered, it will raise an alarm through EyezOn monitoring. They can dispatch the Fire Department if I don’t answer their call.
  • Enable LRR as I posted here and here to get more events.
  • Send text message to my phone on certain scenarios (sensor triggered)
  • Arm house based on presence detection, as well time-based
  • Using virtual relays, add more DIY sensors. I even use some of my security cameras as ‘virtual sensors’ and when motion sensor is triggered while alarm is armed, it will trigger a specific zone, and thus alert the monitoring company.
  • Use your alarm sensors are generic sensors. For example, when my garage main door is opening, my HABPanel says “Garage door is opening” and if garage has been opened for more than 10 minutes, I get a text message: “Warning Garage has been opened for more than 10 minutes…” The same for my gun safe. If my gun safe was opened, I get a text message immediately.

The LRR will also tell you additional events/messages, such as who (based on USER ID) actually armed/disarmed the system.

Check out my AD Keypad Widget

Sensor (alarm) dashboard

Also, I’m in the process of decoding the 345MHZ transmission of a Honeywell wireless keypad itself. This will potentially replace my AD.

This is greatness, you’ve done an amazing job on securing your home. I’ll definitely need your help on the remote arm/disarm (thank you so much). WOW, just WOW ! It’s going to take me some time to analyze the alarm widgets but this is what makes this fun…


So for the remote arm/disarm, my first question is, how do you access your OH remotely? myOpenHab? MQTT? My assistance to help you configuring your arm/disarm remotely will depend on your answer.

Also, enable this on your AD config:

send_commands_and_compromise_security	= true

Do not set to TRUE if you’re OH is insecure.

How do you want to arm/disarm, by sending your PIN, or through a remote keyfob? I have done both. Initially, I was sending the PIN (hardcoded) in a item/rule to AD. This is ‘ok’ in a sense, as long as NO one else has access to your OH configuration files since your PIN will be there.

What I did is I purchased a keyfob from amazon (here). With an ESP8266, I simply trigger the keyfob buttons. The keyfob will then securely send the arm/disarm/panic commands to Vista20P as if you actually physically pressed the keyfob buttons.

If you want to arm/disarm through code, add an item like this:

Number alarmPanelCommandMacroAway   	"" (gAlarmPanel)   {alarmdecoder="SEND#1=POUND2", autoupdate="false"}
Number alarmPanelCommandMacroStay   	"" (gAlarmPanel)   {alarmdecoder="SEND#1=POUND3", autoupdate="false"}
Number alarmPanelCommandMacroOff   		"" (gAlarmPanel)   {alarmdecoder="SEND#1=<YOURPIN>1", autoupdate="false"}

For Vista panels, Arm Away is by doing this on a keypad: # 2
Arm Stay is # 3

So what the items will do is, you are basically mapping the input to a keystroke.


Number alarmPanelCommandMacroStay   	"" (gAlarmPanel)   {alarmdecoder="SEND#1=POUND3", autoupdate="false"}

Notice SEND#1=POUND3
Which maps 1 to #3
so if you want to ARM Stay your alarm, in your code, just do:


Disarming example:
Example, your PIN code is 6789. For Vista20P, you disarm the system by PIN then 1 like this: 67891

So to disarm your system, create a new item or just keep adding mapping:

Number alarmPanelCommands  	"" (gAlarmPanel)   {alarmdecoder="SEND#1=POUND3,2=POUND2,3=67891", autoupdate="false"}

As you can see above, I have defined 3 Numbers mapped differently.
So, they will:

alarmPanelCommands.sendCommand(1) // will send #3 .. arm stay
alarmPanelCommands.sendCommand(2) // will send #2 .. arm away
alarmPanelCommands.sendCommand(3) // will send 67891 .. disarm

I also forgot in the previous post… I wrote an example use case for LRR:


Currently, I’m accessing OH remotely via a VPN connection from my office. The network was recently installed and consists of active-active firewall appliances and VLANS. Nothing gets in (or out) unless I allow it so we should be pretty solid. I don’t (currently) have Openhab (?Cloud Connector?) or Cloud MQTT configured as I haven’t had an opportunity to familiarize myself these methods. I do have Mosquitto running on a NAS system for my zoned AC systems so I’m very familiar with MQTT.

ATM, I don’t have (send_command_and_compromise_security) enabled but it sounds like it’s pretty safe for me to make that change (will do tonight).

I’m thinking that the security system can self-arm via the z-wave sensors throughout the entire house (presence). I’m still familiarizing myself with the OH Z-wave binding (testing for stability) so until I’m happy with the performance this will have to wait. I have z-wave locks on all entry doors so I’d like it if my daughter and I can enter our access code and that will disable the system (and notify me she’s home). I should be able to interrogate the lock for the user code (not PIN) and disable through a rule. Remote arming is tricky, not sure there … Too many options, just need the most secure one and easy enough for me to implement :slight_smile:

My daughter and I both have wall mounted iPad’s and I’m excited to not only display the camera’s around the property but also the widgets you developed (awesome!) for the security system and presence.

SUPER HUGE thanks for sharing with me all these amazing details. I’ll give this a closer read in the morning and see what I can implement. I’m curious, what is the ‘autoupdate=false’ ?