Actionable Notifications
Wrist Assistant turns Home Assistant notifications into interactive control panels on your Apple Watch and iPhone. Instead of just reading a message, you get up to 8 action buttons that can toggle lights, lock doors, adjust thermostats, and more — right from the notification.
How It Works
Section titled “How It Works”When Home Assistant sends a notification with entity actions, Wrist Assistant renders custom buttons. The same interactive UI appears on both the watch and the iPhone (on iPhone you’ll also see a Done button to dismiss). Each button knows what kind of entity it is and adapts its behavior automatically.
The first time you receive one, open Wrist Assistant once so the buttons can be provisioned — until then the notification shows a “open Wrist Assistant to enable buttons” notice.
Delivery
Section titled “Delivery”Choose how notifications reach your watch in Settings → Notifications → Delivery:
- Fast (default) — Notifications are pushed to your iPhone, which mirrors them to your wrist in about a second. This is the quickest path, but it needs your iPhone nearby — a watch that’s away from its phone won’t receive Fast notifications.
- Reliable — Notifications are pushed straight to the watch’s own token, so they arrive even when your iPhone isn’t around. The trade-off is an Apple quirk: when your iPhone is nearby, watchOS coordination can delay delivery by up to ~15 seconds.
Fast mode requires full notification permission for the iPhone app — if notifications are only provisionally allowed, mirroring won’t work. The connection status in Settings → Home Assistant shows a Notifications row that reports the current delivery state (including a “Fast not ready” warning if Home Assistant doesn’t yet have your iPhone’s push token).
Tap a light button — it toggles. Tap again — presets appear (25%, 50%, 75%, 100% brightness).
Hold a lock button — a progress bar fills as you hold. Release when it’s full to confirm. This prevents accidental unlocks.
Tap a media player button — play/pause. Tap again for previous track, play/pause, and next track presets.
After an action succeeds, the button updates to show the new state. If auto_dismiss is set, the notification disappears automatically.
Domain-Specific Actions
Section titled “Domain-Specific Actions”Each button automatically adapts based on the entity type:
| Domain | Tap | Double-Tap Presets |
|---|---|---|
| Lights | Toggle | 25%, 50%, 75%, 100% brightness — and color-temp presets when the bulb supports it |
| Switches / Input Booleans | Toggle | — |
| Locks | Hold-to-confirm lock/unlock | — |
| Covers (blinds, garage) | Open/close | Closed, 50%, Open, Stop |
| Valves | Open/close | Closed, 50%, Open, Stop |
| Fans | Toggle | Low (25%), Med (50%), High (75%), Max (100%) |
| Climate | Toggle on/off | ±1°/±2° temperature, plus a second row of HVAC modes (Heat / Cool / Auto / Off) |
| Media Players | Play/pause | Prev, Play/Pause, Next |
| Vacuums | Start/stop based on state | Start, Pause, Dock, Find |
| Alarm Panels | Tap for presets | Home, Night, Away, Disarm |
| Scenes / Scripts / Buttons | Activate / Press (hold-to-confirm available) | — |
| Input Buttons | Press | — |
Hold-to-Confirm
Section titled “Hold-to-Confirm”Locks use hold-to-confirm by default: a button requires a sustained press (~0.5 seconds), with a progress bar filling left to right and haptic ticks along the way. This prevents accidental activations from wrist bumps.
For any other button — including alarm panels — enable the same behavior by adding confirm: true to the action payload.
Camera Snapshots
Section titled “Camera Snapshots”Notifications can include a camera snapshot image — captured the moment the notification fires. You can frame each camera independently for notifications and pick which stream the tap opens — see Camera Snapshot Framing.
iPhone: live the moment you expand it
Section titled “iPhone: live the moment you expand it”Expand a camera notification on iPhone and the static snapshot automatically upgrades to a live ~3fps view — no tap required. The live view is framed to the same per-camera crop you set in Camera Snapshot Framing: Home Assistant applies the crop server-side, so the stream stays zoomed to the same region as the snapshot instead of reverting to the full frame. A red LIVE badge appears once frames start flowing. If the live view can’t start (camera offline, server unreachable, no remote access), it falls back silently to the captured snapshot — you still see the frame from the moment the event fired.
When it’s not streaming, tap the snapshot to refresh it with a freshly re-captured frame. (Tap-to-refresh is only the fallback now — once live frames are flowing, the LIVE view supersedes it and the manual refresh goes away.)
The iPhone inline stream is not paywalled — every tier gets it.
Watch: tap to open the stream
Section titled “Watch: tap to open the stream”On the watch, the notification shows the captured snapshot — tap it to open that camera’s full-screen live stream in the app. Live streaming on the watch is a Pro feature (Camera Live Streaming); the iPhone’s inline auto-stream is not affected by this gate.
Live stream toggle
Section titled “Live stream toggle”The notification blueprint’s Live stream on iPhone toggle (under Camera Snapshot & Live Stream) is on by default. Turn it off to keep the still captured at event time instead of upgrading to live frames — recommended for battery or cloud cameras, where the live view keeps polling the camera while the notification stays open, or whenever the captured moment is the whole point (who rang the doorbell). The watch is unaffected: tapping the snapshot there always opens the live stream.
Tapping a Notification on iPhone
Section titled “Tapping a Notification on iPhone”You have two ways to open a notification on iPhone, and they land in different places:
- Long-press (or expand) the banner and the interactive UI — action buttons, snapshot, live stream — stays right there in the notification shade. The app never opens.
- Plain tap the banner and iOS opens Wrist Assistant. Instead of dropping you on whatever tab was last open, the app re-presents the same notification as a sheet: the same action buttons, the same camera snapshot and live stream, and a Done button.
iOS always opens the app on a plain tap — there’s no way to turn that off — so the sheet exists to land you somewhere useful rather than on an unrelated screen.
The sheet sizes itself to its content: compact for a title-and-buttons push, taller when it carries a camera stream, and it scrolls if the content runs past the screen. Tap Done to close it — or, if you fire an action with auto_dismiss set, the sheet closes on its own once the action succeeds.
Styling
Section titled “Styling”Customize the notification appearance in Settings → Notifications:
- Background — Black or glass
- Button fill — Tinted, solid, outlined, or glass
- Button size — Small, medium, or large
- Corner style — Rounded, sharp, or square
- Accent color — 11 named colors, follow app theme, or iOS default
- Entity tint — Color each button by its domain type (yellow for lights, orange for locks, green for switches)
- Tap animation — Pulse, flash, bounce, or none
- State badges — Show entity state inside or below each button
- Sound and haptics — Configurable feedback for taps, confirmations, success, and cancel
Notification Payload
Section titled “Notification Payload”Send notifications from Home Assistant automations with entity actions:
service: notify.mobile_app_your_watchdata: message: "Front door unlocked" data: auto_dismiss: true actions: - entity_id: lock.front_door state: "unlocked" friendly_name: "Front Door" icon: "lock.open.fill" - entity_id: light.porch state: "off" friendly_name: "Porch Light"Per-action options:
| Option | Description |
|---|---|
entity_id | The Home Assistant entity to control (required) |
state | Current entity state for display (required) |
friendly_name | Display name on the button |
icon | SF Symbol name for the button icon |
label | Custom button label |
confirm | Require hold-to-confirm (true/false) |
attributes | Entity attributes (brightness, position, temperature, etc.) |
Set auto_dismiss: true at the notification level to dismiss after any successful action.
If Home Assistant shows
No registered push tokenfor a watch notification or blueprint run, the watch hasn’t registered yet — open Wrist Assistant on the watch and let it sync once (pull to refresh or force-close and reopen if needed), then try again. On Fast delivery the relevant token is your iPhone’s: if the Notifications row reads Fast not ready, open the iPhone app and make sure notifications are fully allowed so Home Assistant can register the phone.
Visual Feedback
Section titled “Visual Feedback”Buttons show real-time feedback:
- Progress bars on lights (brightness), covers (position), and fans (speed)
- Left edge strip — a thin colored line when the entity is active
- State badges — formatted per domain (“On · 75%” for lights, temperature for climate)
- Optimistic state — the badge updates to the new value immediately on tap, then reconciles with the actual state once the action completes
- Failure haptic — if the action fails or the entity is unavailable
- Use notifications for security alerts — “Motion detected at front door” with buttons to lock up, turn on lights, and view the camera
- Use notifications for routine reminders — “Bedtime” with buttons to run your Good Night scene, lock all doors, and turn off all lights
- Send a test notification from Settings → Notifications to preview your styling
- Keep it to 3–4 buttons for quick glanceability — you can go up to 8, but fewer is faster