Hi all,
I wanted to share a project I’ve been working on: reading an old Ademco 4120 alarm panel into Home Assistant, natively, over its keypad bus — no addressable-bus board, no cloud, no subscription. Just an ESP32 running ESPHome and a couple of optocouplers.
These older panels (4110/4120, Vista-10 and relatives) use a non-addressable keypad bus — the kind that drives fixed-word keypads at “Address 31.” Existing tools like AlarmDecoder/VistaECP target the addressable ECP bus, so they don’t help here. This project fills that gap.
What it does:
- Armed / disarmed / alarm state
- Zone reporting (which zone is open / which tripped the alarm), with named zones
- Chime, ready, bypass, low-battery flags
- Mains-loss (blackout) detection — the panel signals it on the bus and the firmware decodes it, with hysteresis
- A custom mobile-friendly Lovelace keypad card that mirrors the physical keypad
- Sends keys back to the panel (arm/disarm) over the bus
How: the whole thing is a custom ESPHome component that decodes the 2400-baud keybus. The tricky part was reverse-engineering the fixed-word keypad’s frame format — the README documents the protocol in detail (state matrix, zone mapping, blackout frame, etc.), so it doubles as reference material if you want to adapt it to a different panel/keypad.
Hardware: an ESP32, two 4N35 optocouplers, a handful of resistors, a diode. Roughly €10 in parts. Full schematic and wiring in the repo.
Tested on: Ademco 4120 with a 4127 fixed-word keypad. Other fixed-word keypads (4137, 5137, 6128, 6150) are likely compatible but untested — if you have one, bus logs are very welcome to help build a universal map.
Credit to gregrenda’s earlier work on these panels, which gave me cross-checks for the bus timing and several state bits; this project maps a different keypad model (4127) and ports everything to ESP32/ESPHome with native HA integration.
Repo (code, wiring, protocol docs): GitHub - Stef86fal/esphome-ademco31: ESPHome component for non-addressable Ademco/Honeywell alarm panels (keypad Address 31) — read arming, alarm, zones & more in Home Assistant. An AlarmDecoder alternative for older Vista/4100-series panels with fixed-word keypads. · GitHub
Happy to answer questions, and PRs / logs from other panels are welcome. Hope it’s useful to someone else with a 30-year-old panel they’d rather integrate than replace.
