Security & Alarm¶
System Architecture: Full Ring ecosystem + ring-mqtt for HA automations¶
Ring is the alarm brain; Home Assistant is the automation layer. The Ring Alarm system is a self-contained, professionally-monitored alarm — the existing wired zones join it natively via the Ring Retrofit Alarm Kit — that keeps working and dispatches with correct per-zone info even if the HA server is down. HA taps the whole system with ring-mqtt to use every sensor for automations and dashboards.
Wired zones ─► Retrofit Kit ─┐
Ring keypad ─────────────────┤
Ring contact + motion ───────┼─► Ring Alarm base ─► Ring Protect Pro ─► dispatch (native, per-zone)
ZCOMBO-G smoke (Z-Wave) ──────┤ │
Schlage lock (Z-Wave) ───────┘ ring-mqtt ─► Home Assistant (automations only)
Full build steps
The complete step-by-step is the Alarm — Implementation Manual.
Arm modes, delays, monitoring, and per-zone names are configured in the Ring app. HA observes alarm_control_panel.blairmont_alarm and reacts (lights, notifications, TTS), and — as a convenience — arms it to Home at Good Night and disarms it at Good Morning. Ring still owns dispatch, the keypad, and the app. Alarmo and Konnected are not used in this design.
For manual arm/disarm from a wall tablet or phone, the Command dashboard → Security tab has a Ring Alarm card (top of the tab) with Arm Home / Arm Away / Disarm — no code required. It shows the live state (disarmed / armed home / armed away / triggered). The Ring keypad and app still work exactly as before; this is just an extra control surface.
Whole-house alarm audio¶
On top of Ring's native siren and keypad chirps, HA gives the alarm spoken feedback on all 7 house Echoes (kitchen, family room, front room, garage, master bathroom, master bedroom, office) for its full lifecycle — not just when it goes off. See Notifications → Whole-House Alarm Audio for the exact wording and timing of each announcement.
Lifecycle announcements¶
| Event | Speakers | Default volume | Behavior |
|---|---|---|---|
| Triggered | All 7 Echoes | 0.80 | Repeats every ~12s (tunable) while triggered |
| Exit delay | Front room Echo | 0.60 | Announces once when arming starts, plus a "Ten seconds" warning near the end |
| Entry delay | All 7 Echoes | 0.80 | Announces once when a door opens while armed |
| Armed | Master bedroom + office Echo | 0.30 | Confirms home/away once arming finishes |
| Disarmed | Master bedroom + office Echo | 0.30 | Confirms disarm; also resets all 7 Echoes to the reset volume (default 0.40) |
| Failed to arm | Master bedroom + office Echo | 0.60 | Best-effort — fires when the exit-delay countdown aborts back to disarmed instead of reaching armed |
The repeating trigger announcement is the house-wide version of the old single kitchen-Echo announce — it now speaks on all 7 Echoes and keeps repeating (default every 12 seconds) for as long as the alarm stays triggered, so it's audible no matter where in the house you are.
Alarm Audio dashboard¶
A dedicated Alarm Audio sidebar dashboard (alarm-audio) is the tuning surface for this whole system — separate from the Command dashboard. It has one card per event with:
- An enable toggle for that event (plus a master on/off for the whole system)
- A volume slider (0–1) for that event
- A test button that previews the announcement on that event's speakers at its current volume — bypassing the enable toggles, so you can dial in a volume without setting off the real alarm
There's also a reset volume slider (what all 7 Echoes are set to on disarm) and a trigger repeat interval slider (seconds between repeats of the triggered announcement, default 12s). None of these settings reset on a config deploy — they persist across restarts, so tune them once and leave them.
Speaker assignment isn't dashboard-tunable
Which room(s) speak for a given event is fixed in the automations, not the dashboard — the dashboard only tunes enable/volume/interval. Changing which Echo announces an event is a config change.
Alarm System — components¶
Status: in progress¶
| Component | Status | Notes |
|---|---|---|
| Ring Alarm base station | Added | The brain + Z-Wave hub + monitored dispatcher |
| Ring Keypad | Added | Native arm/disarm |
| Ring contact + motion sensors | Added | Personnel-door contact + motion (native) |
| Ring Retrofit Alarm Kit | Sourced (Amazon) | Brings the existing wired zones into Ring (up to 8 zones) |
| ZCOMBO-G smoke/CO | Not yet ordered | Pairs natively to the Ring base (the one triggering third-party Z-Wave sensor) |
| Schlage BE469ZP lock | Not yet ordered | Pairs natively to the Ring base (Z-Wave) |
| ring-mqtt (add-on) | Not yet installed | Taps the Ring system into HA for automations |
| Konnected Alarm Panel Pro | Freed up | No longer used for the alarm — return/repurpose |
| GE Concord Express 60-806 | Retired | Retrofit Kit reads the zone wiring directly |
Existing Wired Zones (GE Concord 60-806)¶
4 zones are wired and will be reused by Konnected:
| Zone | Location | Sensor type |
|---|---|---|
| Zone 1 | TBD | Door/window contact |
| Zone 2 | TBD | Door/window contact |
| Zone 3 | TBD | Motion |
| Zone 4 | TBD | TBD |
Install Sequence¶
Full detail: Alarm — Implementation Manual.
- Ring app: confirm base/keypad/sensors; set up monitoring + modes + entry/exit delays
- Retrofit Kit: wire the existing zones to its inputs, pair to the Ring base, name each zone
- Native Z-Wave: pair ZCOMBO-G smoke and the Schlage lock to the Ring base
- Install the ring-mqtt add-on; auth with a secondary Ring account → HA gets the alarm panel + all sensors
make snapshotto register the new entities (Tier-3 test gate)- HA automations: lights/presence/notifications/TTS from the Ring sensors + alarm state; retire the §12 mocks
Leak Detection¶
13 active leak sensors (ZHA — Third Reality). They're all the same model, and each has a built-in siren (enabled) that sounds locally the moment it touches water:
| Location | Entity |
|---|---|
| Kitchen sink | binary_sensor.kitchen_sink_leak_detector |
| Butler's kitchen | binary_sensor.butlers_kitchen_sink |
| Laundry room | binary_sensor.laundry_room_leak_sensor |
| Master bathroom left sink | binary_sensor.master_bathroom_left_sink_leak_detector |
| Master bathroom right sink | binary_sensor.master_bathroom_right_sink_leak_detector |
| Powder room | binary_sensor.powder_room_leak_sensor |
| 2nd floor hall bathroom left sink | binary_sensor.second_floor_hall_bathroom_left_sink |
| 2nd floor hall bathroom right sink | binary_sensor.second_floor_hall_bathroom_right_sink_leak_detector |
| Office sink | binary_sensor.office_sink_leak_detector |
| Bedroom 3 sink | binary_sensor.bedroom_3_sink_leak_detector |
| 3rd floor furnace | binary_sensor.3rd_floor_furnace_leak_detector |
| Attic air handler | binary_sensor.attic_air_handler_leak_detector |
| Crawl space furnace | binary_sensor.crawl_space_furnace_leak_detector |
Critical alerts
Leak notifications bypass DND on both iPhones. No cooldown — every detection alerts.
Smoke Detectors¶
Status: Not yet ordered¶
- 9 locations confirmed (all 3-wire interconnect)
- Recommended: First Alert Z-Wave ZCOMBO-G (~$45–55 each, ~$405–495 total)
- Policy: Order when ready to install same week — don't leave them sitting uninstalled
- Pairs natively to the Ring base — ZCOMBO-G is the one third-party Z-Wave sensor Ring accepts as a triggering alarm sensor; it dispatches fire natively and also surfaces to HA via ring-mqtt
Smart Locks¶
Status: Not yet ordered — waiting for hardware backlog to clear¶
- Front door first: Schlage BE469ZP (Z-Wave, ~$160)
- Pairs natively to the Ring base (Ring supports Z-Wave deadbolts); manage codes in the Ring app; surfaces to HA as
lock.*via ring-mqtt - Ring Bond: auto-lock when armed away; HA can notify if armed while unlocked
- Expansion: Decide additional doors after front door workflow is validated
Garage Doors¶
Controlled via ESPHome (custom firmware on door openers):
| Door | Entity |
|---|---|
| Left | cover.left_garage_door_opener_garage_door |
| Right | cover.right_garage_door_opener_garage_door |
Garage automations (Section 2 + 8): - Notifications on open/close - Alert if either door is open when both people are away - Alert + actionable button if open for 30+ minutes
Presence Detection¶
Uses zone.home person count — not individual person entities.
| Entity | Description |
|---|---|
zone.home | Number of people in the Home zone |
person.louis | Louis's location |
person.lindsay | Lindsay's location |
"Away" = zone.home == 0 (everyone left). "Home" = zone.home >= 1 (anyone arrived).