An Espressif ESP32-Powered "Virtual Keypad" Adds Home Assistant Support to a DSC Neo Alarm System
Wired into an otherwise-unsupported control panel, this clever add-on provides full Home Assistant integration.
Pseudonymous maker "Valdez" has integrated an otherwise-unsupported DSC Neo alarm system into Home Assistant — by creating an Espressif ESP32-based "virtual keypad" which can physically interact with the alarm panel.
"In late 2023, Chamberlain started blocking the MyQ garage door integration from Home Assistant," Valdez explains of his experience with unsupported smart home devices. "I learned from the MyQ blockade that if you can interact with a device physically, i.e. by reading a simple LCD screen and pushing some buttons, no matter how strong the encryption is between that device and its mothership, the information to and from your eyes and fingers must be in an unencrypted form that can then be intercepted or injected remotely."
That's the key behind Valdez' method of integrating devices into Home Assistant without official support from the manufacturer. Taking the DSC Neo alarm panel apart, Valdez began tracing the connectors to the display before analyzing the signals with "a $20 logic analyzer" — good enough for the job at hand, delivering the information the maker needed to capture the data on the way to the display and decode it into text.
That handled reading the alarm, but Valdez still needed to control it. By probing each of the alarm panel's 25 buttons and connecting the logic analyzer, Valdez was able to ascertain that the panel's controller was rapidly scanning the keypad matrix. "The nature of the scanning matrix meant I couldn't just pull the X/Y coordinates high/low with the ESP32," Valdez notes, "I would have to connect the two coordinates of the matrix together so the scanning signal would reach the other coordinate line for the button I wanted to push. However it could still be done with only 10 GPIOs [General Purpose Input/Output pins] by creating a matrix of switches."
A proof-of-concept built around a matrix of ten 5V relays demonstrated that control was possible, but the build wasn't elegant. "The relay modules and wires were ridiculously cumbersome, large, and required a separate 5V power supply," Valdez explains. "although I did enjoy the audible clicks of the relays like an early computer clicking away." The solution was a custom PCB with ten Sharp PC817 optocouplers playing host to an Espressif ESP32 dev board.
With some clever code — including a binary sensor which can detect when particular zones have triggered — Valdez' project was complete, adding a virtual keypad into Home Assistant which provides full remote control over the alarm system and live status reports on each of its zones. "They are very responsive to when the zone faults," Valdez claims of the Home Assistant dashboard readings. "Much more responsive than alarm.com is."
The full project write-up is available on Hackaday.io, with more information in the Home Assistant forum.