The Companion App turns your phone into the ultimate smart home remote. Push notifications with camera snapshots, location tracking for presence automations, home screen widgets, phone sensors feeding data into HA, and Apple Watch or Wear OS controls. It is the single most useful thing you can set up after installing Home Assistant. Here is everything you need to know.
Jump to a section
Both apps are excellent, but they have slightly different feature sets. Here is an honest comparison so you know what to expect.
Bottom line: Android gives you more sensors and a Bluetooth proxy. iOS gives you a polished Apple Watch experience and Siri Shortcuts. Both are excellent for daily use. You really cannot go wrong either way.
Getting connected is straightforward. Here is the step-by-step for both platforms.
iOS: Search "Home Assistant" in the App Store. Look for the blue house icon by Nabu Casa, Inc.
Android: Get it from the Google Play Store or download the APK directly from the GitHub releases page if you prefer sideloading.
Make sure your phone is on the same Wi-Fi network as your Home Assistant. Open the app and it will auto-discover your instance. Tap to connect, then log in with your HA credentials.
If auto-discovery does not work, manually enter your URL: http://homeassistant.local:8123
For access outside your home, configure both an internal and external URL in the app settings. The app switches between them automatically based on your network.
Options: Nabu Casa, Cloudflare Tunnel, Tailscale, or WireGuard. Nabu Casa ($6.50/month) is the easiest. Cloudflare Tunnel is free but takes more setup.
This is the most important step people skip. Your phone will kill the app in the background unless you tell it not to.
Android: Settings, Apps, Home Assistant, Battery, Unrestricted.
iOS: Settings, General, Background App Refresh, On. Location: Always.
This is the hidden gem most people overlook. Your phone sends dozens of data points back to Home Assistant, and you can use all of them in automations.
Enable sensors manually: Most sensors are disabled by default. In the app, go to Settings, Companion App, Manage Sensors, and toggle on the ones you want. Each sensor you enable creates entities in Home Assistant that you can use in automations, dashboards, and conditions.
The Companion App gives you push notifications from Home Assistant directly on your phone. You get images, actionable buttons, persistent alerts, and more beyond basic text. For the full breakdown, check our complete notifications guide. Here are the highlights.
Attach a live camera image to any notification. Perfect for doorbell alerts: "Someone is at the front door" with a photo of who it is. Works with any HA camera entity.
Add buttons right in the notification. "Garage door is open. Close it?" with a "Close" button that triggers an automation. No need to open the app at all.
Some alerts should not be swipeable. Water leak detected? Persistent notification stays until you actively dismiss it. Critical alerts can even bypass Do Not Disturb.
Group related notifications together so your phone does not explode. All motion alerts in one group, all climate alerts in another. Keep your notification shade organized.
automation:
- alias: "Doorbell notification with photo"
trigger:
- platform: state
entity_id: binary_sensor.doorbell_press
to: "on"
action:
- service: notify.mobile_app_your_phone
data:
title: "Someone at the door"
message: "Doorbell pressed at {{ now().strftime('%H:%M') }}"
data:
image: /api/camera_proxy/camera.front_door
actions:
- action: "UNLOCK_DOOR"
title: "Unlock Door"
- action: "IGNORE"
title: "Ignore"The Companion App creates a device_tracker entity for each phone. Combined with Home Assistant zones, this gives you reliable presence detection: know when people arrive home, leave work, or enter any custom zone you define.
The app uses a mix of GPS, Wi-Fi, and cell tower triangulation. On iOS, it also uses Apple's significant location change API, which is very battery efficient. On Android, it uses geofencing APIs from Google Play Services.
Updates happen when you cross a zone boundary, connect to/disconnect from Wi-Fi, or at a configurable minimum interval.
Go to Settings, Areas and Zones, Zones in Home Assistant. The "Home" zone is created automatically. Add zones for work, school, gym, or anywhere else you want to track arrivals and departures.
Tip: Make your home zone radius at least 100 meters. Too small and GPS drift will cause false departures. 150 to 200 meters works well for most locations.
Location tracking uses about 1 to 3% extra battery per day in most setups. The app is designed to be battery friendly, using geofencing events rather than constant GPS polling.
If you want even better accuracy without more battery drain, combine the app with your Wi-Fi router's device tracking. See our presence detection guide for a multi-sensor approach.
Widgets let you control your smart home without opening any app. Toggle lights, check sensor values, or trigger scripts directly from your home screen.
Add any HA entity to your home screen. Toggle a light switch, see the current temperature, check if the garage door is open. Each widget shows live state and can be tapped to toggle or open details.
Call any HA service with one tap. Create a "Goodnight" button that locks doors, turns off lights, arms the alarm, and sets the thermostat. Or a "Movie Mode" button that dims the lights and turns on the TV.
Apple Watch: Add complications showing entity states on your watch face. Tap to toggle. Full watch app for browsing entities and triggering actions.
Wear OS: Complications plus a tile for quick entity control. Works even when your phone is not nearby (if the watch has Wi-Fi).
Android Auto: Control HA entities from your car dashboard. Toggle scenes, check sensor states, or trigger "arriving home" scripts while driving.
CarPlay: Currently in beta. Open a dashboard in your car for quick controls.
These automations use the phone sensors and location data from the Companion App. Copy the YAML and adjust entity names to match your setup.
When your phone enters the Home zone and it is after sunset, turn on the porch light and hallway light. Only triggers if the lights are actually off (no re-triggering if you step outside briefly).
automation:
- alias: "Welcome home lights"
trigger:
- platform: zone
entity_id: device_tracker.phone_ruud
zone: zone.home
event: enter
condition:
- condition: sun
after: sunset
- condition: state
entity_id: light.hallway
state: "off"
action:
- service: light.turn_on
target:
entity_id:
- light.porch
- light.hallway
data:
brightness_pct: 80At 10 PM, if your phone battery is below 30% and it is not charging, send a notification reminding you to plug in. Never wake up to a dead phone again.
automation:
- alias: "Low battery bedtime reminder"
trigger:
- platform: time
at: "22:00:00"
condition:
- condition: numeric_state
entity_id: sensor.phone_ruud_battery_level
below: 30
- condition: state
entity_id: sensor.phone_ruud_battery_state
state: "discharging"
action:
- service: notify.mobile_app_phone_ruud
data:
title: "Charge your phone"
message: "Battery at {{ states('sensor.phone_ruud_battery_level') }}%. Plug in before bed."
data:
tag: "battery-reminder"When the last person leaves the house (all tracked phones are away), wait 5 minutes (in case someone forgot something), then arm the alarm and turn off non-essential devices.
automation:
- alias: "Arm alarm when everyone leaves"
trigger:
- platform: state
entity_id: group.family_devices
to: "not_home"
for: "00:05:00"
action:
- service: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.home_alarm
- service: climate.set_preset_mode
target:
entity_id: climate.thermostat
data:
preset_mode: "away"
- service: notify.family_phones
data:
title: "House secured"
message: "Alarm armed and thermostat set to away mode."When your phone leaves the "Work" zone, start heating the house so it is warm when you arrive. Only runs on weekdays during winter months.
automation:
- alias: "Pre-heat when leaving work"
trigger:
- platform: zone
entity_id: device_tracker.phone_ruud
zone: zone.work
event: leave
condition:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: template
value_template: "{{ now().month in [1,2,3,10,11,12] }}"
action:
- service: climate.set_temperature
target:
entity_id: climate.thermostat
data:
temperature: 21
- service: notify.mobile_app_phone_ruud
data:
title: "Heating up"
message: "Thermostat set to 21C. Should be warm when you get home."Android only. Reads your next alarm time from the phone sensor and starts a gentle wake-up routine 15 minutes before: slowly ramp bedroom lights, start the coffee maker, adjust thermostat.
automation:
- alias: "Wake-up routine from phone alarm"
trigger:
- platform: template
value_template: >
{{ as_timestamp(states('sensor.phone_ruud_next_alarm'))
- as_timestamp(now()) < 900
and as_timestamp(states('sensor.phone_ruud_next_alarm'))
- as_timestamp(now()) > 840 }}
action:
- service: light.turn_on
target:
entity_id: light.bedroom
data:
brightness_pct: 10
color_temp_kelvin: 2700
- delay: "00:05:00"
- service: light.turn_on
target:
entity_id: light.bedroom
data:
brightness_pct: 40
color_temp_kelvin: 3500
transition: 300
- service: switch.turn_on
target:
entity_id: switch.coffee_maker
- service: climate.set_temperature
target:
entity_id: climate.thermostat
data:
temperature: 21Add a tag to notifications that update. A "currently playing" notification can update in place instead of stacking. A weather alert can replace the old one when conditions change.
Tasker can call HA webhooks, and HA can send commands back to Tasker through notifications. Use this for things HA cannot do natively: change phone volume, toggle airplane mode, or open specific apps.
Create Siri Shortcuts that call HA services. "Hey Siri, I'm going to bed" can trigger your entire goodnight routine. Add them to the Shortcuts widget for one-tap access without voice.
The app supports connecting to multiple Home Assistant instances. Useful if you have a test server, or if you manage smart homes for family members. Switch between servers from the app settings.
Turn a cheap tablet into a wall dashboard. Enable "Always On" display, set the default dashboard, and use the kiosk-mode HACS plugin to hide the sidebar and header. A Fire HD 10 on sale makes a perfect panel.
For more reliable home detection: combine the app's GPS with Wi-Fi SSID detection (the sensor reports which network you are on). Create a Bayesian sensor that considers both for near-perfect accuracy.
Here is a realistic plan to get the most out of the app without burning out.
Before you set up the Companion App, make sure your smart home devices are compatible. Our free scan checks your setup and tells you exactly what works, what needs adapters, and what to replace.
Run the Free ScanThe Android app is completely free. The iOS app is also free to download and use, with an optional in-app purchase to support development. All features work without paying. The app itself costs nothing, but you may need Nabu Casa ($6.50/month) or a VPN/tunnel for remote access outside your home network.
The most common cause is battery optimization. Both Android and iOS aggressively kill background apps. On Android: Settings, Apps, Home Assistant, Battery, Unrestricted. On iOS: enable Background App Refresh and set Location to Always. Also check that sensors are enabled in the app under Settings, Companion App, Manage Sensors.
Yes. Each device registers separately in Home Assistant with its own entities, sensors, and notification target. This is actually great for household presence detection, since you can track who is home based on which phones are connected.
In typical use, the app uses 1 to 3% extra battery per day. It uses efficient geofencing APIs rather than constant GPS polling. If you see higher drain, check if you have too many sensors set to update at a very short interval. The default settings are well optimized.
Yes to both. The app works on iPads and Android tablets (great as wall dashboards). The iOS version includes an Apple Watch app with complications and entity controls. Wear OS has a separate companion with tiles and complications. Tablets are especially useful with Fully Kiosk Browser for dedicated wall panels.
You need remote access. The easiest option is Nabu Casa ($6.50/month), which handles everything automatically. Free alternatives include Cloudflare Tunnel, Tailscale, or WireGuard VPN. Check our remote access guide for step-by-step setup of each option.