Skip to content

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.

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.

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.

Each button automatically adapts based on the entity type:

DomainTapDouble-Tap Presets
LightsToggle25%, 50%, 75%, 100% brightness — and color-temp presets when the bulb supports it
Switches / Input BooleansToggle
LocksHold-to-confirm lock/unlock
Covers (blinds, garage)Open/closeClosed, 50%, Open, Stop
ValvesOpen/closeClosed, 50%, Open, Stop
FansToggleLow (25%), Med (50%), High (75%), Max (100%)
ClimateToggle on/off±1°/±2° temperature, plus a second row of HVAC modes (Heat / Cool / Auto / Off)
Media PlayersPlay/pausePrev, Play/Pause, Next
VacuumsStart/stop based on stateStart, Pause, Dock, Find
Alarm PanelsTap for presetsHome, Night, Away, Disarm
Scenes / Scripts / ButtonsActivate / Press (hold-to-confirm available)
Input ButtonsPress

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.

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.

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.

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.

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.

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.

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

Send notifications from Home Assistant automations with entity actions:

service: notify.mobile_app_your_watch
data:
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:

OptionDescription
entity_idThe Home Assistant entity to control (required)
stateCurrent entity state for display (required)
friendly_nameDisplay name on the button
iconSF Symbol name for the button icon
labelCustom button label
confirmRequire hold-to-confirm (true/false)
attributesEntity 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 token for 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.

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