[APP][Pro][TEST] Dashboard Alarm Keypad – a code-protected keypad for any alarm

Hi all,

I’d like to share a new app: Dashboard Alarm Keypad. It puts a proper alarm keypad on your Homey dashboard: one tap to arm, a code to disarm. It works with any alarm system you can control from a flow.

Why I built it: our alarm is an Aqara M3 hub, controlled through Apple Home. When we go away, our cat sitter looks after Monté (our cat). She needed a way to switch the alarm off from the wall-mounted iPad dashboard. A plain on/off button wasn’t safe, because anyone standing at the iPad could press it. I wanted a real keypad with a code, and I couldn’t find one, so I built it.


What it does

  • Arm with one tap, no code needed, so you can arm it on your way out.
  • Disarm with a 4–8 digit code. Everyone gets their own code (e.g. family, cleaner, cat sitter), and the flow tells you who disarmed it.
  • Live status ring around a photo of your choice: Disarmed, Home, Night, Arming…, Armed or Alarm!
  • When the alarm is going off, Disarm turns into a red “Stop alarm” button.
  • Lockout after too many wrong codes, with flow triggers so you can get a notification.
  • Codes are stored hashed, never in plain text, and are checked on Homey, not on the tablet.
  • Light and dark mode. English, Dutch, German, French, Spanish and Italian.

Flow cards

Type Card
Trigger Arm was pressed
Trigger Correct code entered to disarm (tag: User)
Trigger A wrong code was entered (tag: Attempts left)
Trigger Keypad locked after too many wrong codes (tag: Locked for (seconds))
Action Set keypad status to Disarmed / Home / Night / Arming / Armed (away) / Alarm going off
Condition Keypad status is / is not …

The idea is simple:

  1. Keypad → alarm: use the triggers to arm and disarm your alarm.
  2. Alarm → keypad: use Set keypad status so the widget always shows what your alarm is really doing, including changes made somewhere else (geofencing, another app, a siren going off).

When the status is set to Arming, the keypad switches itself to Armed after the exit delay set in the app settings, so you don’t need a delay card for that.

Setup

  1. Install the app and open its settings:
    • Add a code for each person.
    • Optional: upload a photo for the widget (it’s cropped automatically).
    • Set the exit delay to match your alarm, and choose whether the status after disarming is Disarmed or Home.
  2. Add the Alarm Keypad widget to a dashboard.
  3. Build the flows for your alarm (see the Aqara example below, and the notes for other systems after that).

Example: Aqara M3 hub (alarm in the Aqara / Apple Home ecosystem)

The Aqara alert system can’t be controlled from Homey directly: it isn’t exposed over Matter. But the M3 has a feature called Advanced Matter Bridging that solves this in both directions:

  • Scenes you create in the Aqara app appear in Homey as plugs. Turning the plug on runs the scene.
  • Signals (conditions you define in the Aqara app) appear in Homey as occupancy sensors.

So: scenes let Homey control the alarm, and Signals let Homey see what the alarm is doing.

Step 1: Delays in the Aqara app

Alert system → Away mode:

  • Entry delay: 60 seconds, time to get from the door to the dashboard and enter your code. The hub beeps during the countdown.
  • Arming (exit) delay: 30 seconds, time to get out of the door.

Leave Home and Night mode without delays.

Step 2: Scenes, so Homey can control the alarm

Create these scenes in the Aqara app (Scenes → +), with the action Alert system:

Scene Actions
Alarm Away Arm automatically → Away
Alarm Arrive Disarm automatically → Away, delay 3 seconds, Arm automatically → Home
Alarm Silence Turn off alarm (stops the siren but keeps the current mode)

Tip: avoid the “switch arming/disarming” (toggle) action. If Homey and the hub ever disagree about the state, a toggle does the opposite of what you meant.

Then share them with Homey: Profile → Connect to Ecosystems → Matter → Scenes, add all three, and choose the M3 as the bridge (the one already paired to Homey). They appear in Homey as plugs. The plugs turn themselves off after running, so they behave like buttons.

Tip: you can edit a scene in the Aqara app at any time (e.g. change the delay), and Homey doesn’t need to know. But if you delete and re-create a scene, you get a new plug and have to update your flows.

Step 3: Signals, so the keypad knows the real alarm status

Profile → Connect to Ecosystems → Matter → Signals → +

Under If, tap Add → Alert system, choose the mode (Home / Away / Night), then the event (Arm, Disarm or When the alarm sounds). Create these five Signals:

Signal If… Notes
Alarm Home Home mode → Arm
Alarm Away Away mode → Arm
Alarm Night Night mode → Arm
Alarm Disarmed Home → Disarm, Away → Disarm, Night → Disarm Add all three with Add, then set Any condition is met
Alarm Triggered Home → Alarm sounds, Away → Alarm sounds, Night → Alarm sounds Same: three conditions, Any

Make sure “Any condition is met” is selected for the last two. With “All”, it would wait for all three, which can never happen.

The Signals appear in Homey as occupancy sensors. I put them all in their own “Alarm” zone to keep things tidy.

Step 4: The flows

[Upload: docs/flow-keypad.png]

Alarm keypad → controls alarm

When Then
Arm was pressed Alarm Away plug → Turn on
Correct code entered to disarm Alarm Silence → Turn on, 1 second delay, Alarm Arrive → Turn on. Plus a push notification: “Alarm disarmed by [User]”
A wrong code was entered Push notification: “Wrong code entered on the alarm keypad – [Attempts left] tries left”
Keypad locked after too many wrong codes Push notification: “Alarm keypad locked for [Locked for (seconds)] seconds”

Disarm runs Silence first and then Arrive. That way, one code entry stops a sounding siren in any mode and takes the alarm out of Away. With Silence alone, the alarm stays in Away and the next movement sets it off again.

Alarm status → keypad widget

When (sensor: “The motion alarm turned on”) Then
Alarm Home Set keypad status to Home
Alarm Away Set keypad status to Arming (the app switches to Armed after the exit delay)
Alarm Night Set keypad status to Night
Alarm Disarmed Set keypad status to Disarmed
Alarm Triggered Set keypad status to Alarm going off

In the app settings I set Status after disarm to Home, to match the Alarm Arrive scene.

When you disarm with Alarm Arrive, you’ll briefly see Disarmed and then Home. That’s just the scene’s two steps coming back through the Signals.

You can use the same scene plugs in your other flows too. For example, I use Alarm Arrive when someone’s phone arrives home, and Alarm Away when everyone has left.


Using it with other alarm systems

The app doesn’t talk to any alarm itself. It’s purely a keypad with flow cards. If your alarm can be controlled from a flow and can report its state to a flow, it’ll work. The pattern is always the same:

1. Keypad → alarm

  • Arm was pressed → your alarm’s “arm” action
  • Correct code entered to disarm → your alarm’s “disarm” action

2. Alarm → keypad

  • Your alarm’s “armed / disarmed / alarm triggered” triggers → Set keypad status to …

Some examples:

  • An alarm that shows up as a device in Homey (via its own app, Z-Wave, Zigbee or Matter) with a security/alarm mode: use its set mode action for arming and disarming, and its mode changed / alarm triggered triggers to set the keypad status.
  • A Homey-based security app (e.g. a virtual alarm system built from your sensors): arm and disarm it with its action cards, and use its state triggers to set the keypad status.
  • An alarm only reachable through another ecosystem (Apple Home, Google Home, SmartThings…): use virtual switches or Matter-bridged scenes, as in the Aqara example above. Homey flips a switch, and the other ecosystem’s automation arms or disarms the alarm.
  • No real alarm at all? You can still use it as a code-protected button, e.g. to disable a “nobody home” mode, unlock a feature, or log who came home.

If your alarm can’t report its state, you can still use the keypad. Add Set keypad status next to the arm and disarm actions in the same flows. The widget then shows what the keypad last did, rather than the alarm’s real state.


Good to know

  • This is a keypad for an alarm you already have, not a certified alarm system.
  • Arming doesn’t need a code on purpose, as on most alarm panels. Disarming always does.
  • The lockout applies to the whole app, so it covers every dashboard with the widget on it.
  • Requires Homey Pro (dashboard widgets aren’t available on Homey Cloud).

App Store: https://homey.app/a/com.simon.dashboardalarmkeypad

Feedback and ideas very welcome, especially if you connect it to a different alarm system. Let me know how you wired it, and I’ll add it to this post!