Along with providing location services, the companion app also adds several additional sensors to Home Assistant. If you don't want the
device_tracker entity but still want sensors to update then just disable the entity in the entity registry to stop location updates and keep sensor updates.
The sensors provided by the companion app are:
and Sensor List
On iOS, sensors update in limited situations: when your location changes, periodically when the app is running in the foreground, when you pull-to-refresh the web view, in the background at a rate determined by iOS, and when performing an "Update Sensors" or via "Send Location" shortcut or push notification.
On macOS, sensors update in the same situations as above as well as immediately when some sensors change.
|None||The current battery level of the device.|
|The current charging state (either |
|None||The MAC address of the wireless access point your phone is connected to. When off Wi-Fi, this sensor will report |
|The current data connection being used by the device. On macOS, this requires app version 2021.2 or later.|
|See Below||Calculated address based on GPS data.|
|None||The cause of the last update of location and sensor data from the device to Home Assistant|
|None||The human-readable name of the Wi-Fi network the device is currently connected to. When off Wi-Fi, this sensor will report |
|See Below||The amount of total and available storage on your device.|
|The current activity type as computed by iOS. Requires motion permissions to be enabled.|
|None||The averaged pace calculated by iOS from pedometer data. Units: meters per second, m/s|
|None||The estimated distance walked by the user since midnight local time. Units: meters, m|
|None||The approximate number of floors ascended by walking since midnight local time.|
|None||The approximate number of floors descended by walking. Since|
|See Below||Name of your cellular provider.|
|See Below||Name of your cellular provider.|
|None||The number of steps taken by the user.|
|See Below||Whether the device is actively being used.|
|The name of the active camera, or |
|The name of the active microphone, or |
|See Below||Requires app version 2021.2 or later. The name of the current frontmost app.|
|None||Whether a camera on the system is currently in use.|
|None||Whether a microphone on the system is currently in use.|
|Requires app version 2021.2 or later. Number of displays connected to the device.|
|None||Requires app version 2021.2 or later. ID of the current primary display, which is the display with the menu bar. In the form of a UUID, for example |
|None||Requires app version 2021.2 or later. Name of the current primary display, which is the display with the menu bar.|
Attributes such as
Cellular Technology can be accessed with a template such as:
Android Sensor List
Each sensor below can be enabled by navigating to the
App Configuration page then selecting
Manage Sensors. By default, most are disabled with the exception of the battery sensors and any that were given permission during onboarding. Once enabled the sensor will begin to send data to your Home Assistant server, if you chose to disable it later on the sensor will stop updating. Upon enabling a sensor the app will request for permissions, if required. If you do not see a sensor listed below then your device does not support it. Some of the sensors below offer custom settings for each of their own needs, read about each one to see what it offers. These settings can be found in the same location where you enable the sensor.
All sensors update during a periodic 15-minute interval and they will also update if other certain conditions are met. Read about each sensor below to understand how often to expect updates. During the 15-minute update interval a low priority foreground notification is temporarily created to prevent the Android system from halting the worker. This notification does not make a sound unless the user has installed a third-party app that intercepts notifications and decides to make a sound. If you are on Android 8.0+ you are free to minimize and/or turn off the notification channel for the
|See Below||Whether or not the device is in doze mode.|
|None||Whether or not the device is in an interactive state.|
|None||Whether or not the device is in power saving mode.|
|Activity Sensors||See Below||The current activity type, sleep confidence and sleep segment as computed by Google. Requires activity recognition permissions on supported devices.|
|App Data Sensors||None||Sensors that show how much data was sent or received by the app.|
|App Importance Sensor||None||The current importance of the app to determine if its in the foreground or cached.|
|See Below||Information about the memory that is available for the app.|
|App Usage Sensors||None||Sensors that represent how the app is treated based on its usage.|
|Audio Sensors||None||Several different sensors around different types of audio detection from the device.|
|Battery Sensors||None||Several different sensors around the state of the devices battery.|
|See Below||The state of the sensor will reflect the total number of connected bluetooth devices.|
|See Below||The current time zone the device is in.|
|None||The current installed version of the application.|
|None||The state of do not disturb on the device.|
|See Below||Calculated address based on GPS data.|
|Keyguard Sensors||None||Sensors that represent various states about the device being locked or secured.|
|Mobile Data Sensors||None||Several different sensors around the state of mobile data.|
|Notification Sensors||See Below||Details about the notifications on the device.|
|See Below||The timestamp of the device's last reboot.|
|None||The state will reflect the intent that caused the last update to get sent.|
|None||The current level of illuminance the device detects.|
|None||The only tracked states are |
|None||The pressure reading from the device.|
|None||The current proximity reading from the device, certain devices will only show boolean value of |
|None||The public IP address of the device as generated by ipify API.|
|See Below||Date of the next scheduled alarm.|
|See Below||Name of your cellular provider.|
|See Below||Name of your cellular provider.|
|None||The number of steps taken from the user since the last device reboot. Requires activity recognition permissions on supported devies.|
|Storage Sensors||See Below||The amount of total and available internal & external storage on your Android device.|
|Traffic Stats Sensor||None||Amount of data transmitted and received from mobile and total device usage since last reboot.|
|WiFi Sensors||None||Several different sensors around the state of WiFi.|
sensor.active provides whether the device is currently being used, based on a few different inputs which are provided as attributes to be informative.
This sensor has a setting to decide the duration that is considered 'idle'.
sensor.activity provides the current motion activity as calculated by iOS along with the confidence of the calculations. Activities known by iOS and given by
If iOS is unable to calculate an activity from motion data,
Unknown will be given.
It is possible for multiple activities to be returned, such as
Stationary (if you are cycling but at a stop light), the state of the sensor is simply the first of these return by iOS (not necessarily the most likely). A complete list of calculated activities is given by the
types attribute. See this post by @Mattt over at nshipster for a description of how different scenarios yield multiple activities.
confidence attribute corresponds how accurate iOS believes the report of the current activity is. Possible values are:
This sensor is only available on the full flavor of the Android app that is found in the Google Play Store, it is not available for the minimal flavor. For android the user will have a different set of states to go by:
The Sleep Confidence and Sleep Segment sensors utilize the new Sleep API from Google services. Sleep Segment updates about once a day and Sleep Confidence will update about every 10 minutes. All data is provided by Google.
These sensors will represent how much data was transmitted and received by the Home Assistant Android app, since the last device reboot. These sensors make use of the Traffic Stats API.
This sensor will represent the state of the app to reflect if its in the
service or any other state it can be. This sensor will update any time any other sensor has an update. See all of the Importance variables in ActivityManager to see what they mean.
Possible states are:
This sensor will represent how much memory is being used by the application. The attributes will include how much memory is free and available for the application. This sensor makes use of the Runtime API.
These sensors will represent how the Android system is treating the app based on its usage. There is one binary sensor
app_inactive which will report whether or not the system currently considers the app to be inactive. The other sensor
app_standby_bucket will reflect the current standby bucket that the Android system considers for the app. Standby buckets determine how much an app will be restricted from running background tasks such as jobs and alarms. Both of these sensors make use of the UsageStatsManager API.
Possible states for
app_standby_bucket sensor (please refer to the API linked above for their definitions):
These sensors use the AudioManager so the state will represent the ringer mode on the device, possible values are
silent. The sensor will update any time the ringer mode on the device has changed. There are also additional attributes that trigger updates as mentioned below:
|The current audio mode of the device can be either: |
|Boolean value if headsets or headphones are plugged in, will update if device detects them.|
|Boolean value if the microphone is currently muted, Android 6.0+ will update as this value changes.|
|Boolean value if the device is actively playing music.|
|Boolean value if the device speakerphone is enabled, Android 6.0+ will update as this value changes.|
|The ringer mode on the device, possible values are |
|The current device volume level for the given volume attributes: |
The Battery State sensor (
sensor.battery_state) provides information on the current status of the devices battery. The three possible values are
Not Charging, or
Full when the device is 100 % charged. The Battery Level sensor (
sensor.battery_level) reports the current battery level of the device from 0–100 %. The charge level is reflected in the sensor icon. Additionally there is a "Low Power Mode" attribute that reports
false depending on whether your iOS device is in Low Power Mode or not.
The battery sensors listed below describe the state of the battery for a few different data points. The sensor's icon reflects the charging status, and type of charging being used. The
is_charging sensor will be updated when the device has a charger connected or disconnected. The
battery_temperature sensors will be updated any time any of the other sensors get an update as well as when the device reports low battery or when it has recovered from the low battery alert. All of these sensors make use of BatteryManager.
|The health of the battery|
|The percentage of battery remaining|
|The state of charging on the device|
|The current battery temperature|
|The type of charger being used on the device|
|Whether or not the device is actively charging|
This Bluetooth Connection state will be the total number of connected bluetooth devices. The sensor will update as soon as the bluetooth state of the device changes. This sensor makes use of Android's Bluetooth package.
|The list of paired devices that are currently connected.|
|The list of devices that are connected but not paired.|
|The list of devices that are paired.|
There will also be a binary sensor for the
bluetooth_state that will represent whether or not bluetooth is turned on for the device. This sensor will update anytime the state of bluetooth changes.
A BLE Transmitter sensor allows your device to transmit a BLE iBeacon. This is useful in conjunction with projects like roomassistant and esp32-mqtt-room to allow room level tracking. The current transmitting ID (UUID-Major-Minor) is reported as an attribute that can be copied for use with these systems.
This sensor can impact battery life, particularly if used wih Transmit Power set to High. The iBeacon is transmitted every second (low latency to save battery, but sufficient for room presence).
Settings are available to change the UUID, Major and Minor masks. These can be used to change the overall identifier, as well as to allow groups, e.g. family phone devices can have particular Major value which can be whitelisted in apps like roomassistant. These settings are validated: UUID should be the standard format, Major and Minor need to be within 0 and 65535. There are also settings to change the Transmit power (between Ultra Low, Low, Medium and High) as well as as toggle to allow this sensor to be turned on when the Enable all sensors toggle is activated. This is set to false, to prevent this sensor draining battery unnecessarily.
A Transmit setting toggle will start or stop the BLE transmissions - this setting is also toggled via the notification command that can turn the services on and off.
The cellular provider sensor displays information about the user’s cellular service provider, such as its unique identifier and whether it allows VoIP calls on its network.
sensor.sim_1 corresponds to the physical SIM card installed and
sensor.sim_2 corresponds to the eSIM (this is only shown if the eSIM is enabled).
|The name of the user’s home cellular service provider.|
|The ISO country code for the user’s cellular service provider.|
|The mobile country code (MCC) for the user’s cellular service provider.|
|The mobile network code for the user’s cellular service provider.|
|Indicates if the carrier allows making VoIP calls on its network.|
|An opportunistic subscription connects to a network that is limited in functionality and / or coverage.|
|Is data roaming enabled for the device.|
The following connection types are known by the companion app:
A more specific description of the data connection can be found in the
Cellular Technology attribute of the sensor (which only appears when on cellular). Possible values for this attribute are:
If the connection type is not recognized, either
Unknown Technology will be returned.
For Android several different types of connection sensors are available and they will update when a network state change has been detected:
|The name of the current connected network|
|The mac address of the current connected network|
|The frequency band of the connected network|
|The current IP address of the device on the network|
|The current link speed of the device to the connected network|
|The signal strength of the device to the WiFi network|
|Whether or not WiFi is turned on for the device|
bssid sensor offers settings to let you rename the current mac address to help avoid the need for templates and secret usage in automations and the front end. This is generally useful if you have multiple access points and want an easy way to differentiate between them. These settings are turned off by default. These sensors require either Background Location or Fine Location permissions, depending on what version of Android you run.
This sensor will represent the current time zone the device is in. There are also a few attributes to help describe this time zone. Data is provided by the TimeZone API.
|If the time zone is currently observing daylight time.|
|The display name of the time zone.|
|The short name of the time zone.|
|If the current time zone observes daylight time.|
This sensor will represent the current installed version of the Android app.
This sensor will represent the state of Do Not Disturb (DND) on the device. The functionality of DND depends on the version of Android. Possible state values are
unknown. Not all states will show up on all versions of Android, for example a Pixel 4 XL will only show
priority_only. If you never used DND you may see
unavailable until you change the setting on your device. This sensor will update as soon as the state of DND changes. This sensor uses a Global variable that is not officially documented but has been available since Android 5.0.
This sensor is only available on devices running Android 6.0+. The state will reflect whether or not the device is in doze mode. The state will update immediately upon a state change and data is provided by PowerManager. There is one attribute
ignoring_battery_optimizations which will show
false if the Companion app is ignoring battery optimizations. If you are curious about how the state actually changes you may test it by following these outlined steps.
This sensor updates immediately when the frontmost app changes.
|The bundle identifier of the app. For example, |
|Whether the application is hidden.|
|The date (in ISO 8601, RFC 3339 format) the app was launched. For example, |
|Whether the application "owns" the menu bar. For example, a menu-bar-only app will not change the contents of the menu bar, even when it is frontmost it is not necessarily as primary.|
The geocoded location sensor provides a user-friendly description of a users current location coordinates, often containing the name of the place, its address, and other relevant information. This sensor reports many detailed attributes allowing you to create useful template sensors.
|The latitude and longitude coordinates of the placemark.|
|The name of the placemark. iOS only, for Android check the state of the sensor.|
|The name of the country associated with the placemark.|
|The abbreviated country name.|
|The time zone associated with the placemark. iOS only|
|The state or province associated with the placemark.|
|Additional administrative area information for the placemark.|
|The postal code associated with the placemark.|
|The city associated with the placemark.|
|Additional city-level information for the placemark.|
|The street address associated with the placemark.|
|Additional street-level information for the placemark.|
|The relevant areas of interest associated with the placemark. iOS only|
|The name of the ocean associated with the placemark. iOS only|
|The name of the inland water body associated with the placemark. iOS only|
Android users will have a sensor setting for the minimum required accuracy, that defaults to 200m. Users may adjust this to fit their own needs if they find inaccurate reports or not enough reports. This sensor requires either Background Location or Fine Location permissions, depending on what version of Android you run.
and users will have a sensor setting for whether to use the name of an active Zone if present instead of the geocoded state, defaulting to not using it.
This sensors state will reflect if the device is in an interactive state. This is typically when the screen comes on and off but may vary from device to device. This sensor will update as soon state changes are detected, data is provided by PowerManager.
Using the History Stats Integration, it is possible to monitor both the daily screen time
type: time as well as the amount of times the screen has been turned on that day
These sensors will reflect various states from the Keyguard Manager. You will be able to determine if the device is actively locked, has a password setup or even if the device requires a password to unlock. These sensors will update with the periodic sensor interval.
This sensor will reflect the last notification posted on the device. This sensor requires a special permission that the app will take the user to so they can grant access to notifications. This sensors state will default to the text of the notification or if not available the posting package name. This sensor offers a setting to enable an Allow List to let the user select which packages they wish to get notification data from, notifications sent by Home Assistant are always ignored. We recommend that users make use of this setting as by default all notifications including invisible ones get sent and might cause unintentional battery drain if the setting is left untouched. This can be very useful to integrate any app that sends a notification but does not offer direct integration (ex: food delivery apps or 2FA SMS codes). There are several attributes a user can expect to see, although not all attributes will contain data. This sensor makes use of the NotificationListenerService API. More details on each attribute can be found in the Notification Extras.
This sensor is similar to Last Notification except that it will update when a notification has been removed from the device, either by the user or an application. You can expect to see similar attributes for this sensor, some of which are outlined below. This sensor requires the same permission as mentioned up above. This sensor also has an allow list that functions similar to Last Notification.
This sensor will reflect the total active notifications on the device. This count will include notifications that are persistent and/or silent. At times it may even include the Sensor Worker notification. This sensor will update whenever any of the other sensors have an update. This sensor requires the same permissions as mentioned in Last Notification. There is no allow list for this sensor.
Below you can find some details that can be given with some notifications.
|App Info that contains the package name.|
|Text that is informative to the notification.|
|The large icon of the notification.|
|The progress of the notification, if it has a progress bar.|
|Whether or not the progress can be determined.|
|The max position of the progress (ex: 100 for 100%).|
|If images on the notification were reduced.|
|The most recent input for the notification.|
|If the chronometer is shown.|
|If the notification should be shown at a specific time.|
|The subtitle of the notification.|
|The text of the notification.|
|The title of the notification.|
|If the notification can be cleared.|
|If the notification is persistent on the device.|
|The package that posted the notification.|
|The time the notification was posted on the device.|
This sensor requires notification permissions in order to be enabled and send data. The state will be the playback state of the primary media session. If no media sessions are active then the state will be
unavailable. Attributes will include a total count of active sessions and media data from all active sessions separated by package name. This sensor will update during the normal sensor update interval. To get the most out of this sensor we recommend using Last Notification to hook into your media apps to send faster updates. This sensor uses the MediaController and MediaSessionManager APIs to get the data.
This sensors state will be the date and time of the last reboot from the device in UTC format. The sensor will update during the normal sensor update interval. The state will be
unavailable if the timestamp cannot be determined. This sensor uses the SystemClock and current System time to calculate the timestamp. This sensor offers a deadband setting, that defaults to 1 minute, to account for time calculation issues seen over certain carriers.
|The date and time of the last reboot in local time.|
|The time date and time of the last reboot in milliseconds.|
For android this sensors state will reflect the intent of the most recent update sent. Additionally the sensor offers settings to allow the user to receive app events from other Android apps that broadcast an intent. Users can register for as many intents as they like, an event will be sent to Home Assistant once the intent has been received. Once you save an intent be sure to restart the application to register for the intent.
This sensor displays exactly what caused the last update of location and sensor data from the device to Home Assistant.
|Manual||A manual update is triggered when the user pulls to refresh.|
|Launch||Sensors are updated upon initial app launch.|
|Periodic||Updates periodically according to your settings in App Configuration -> Sensors.|
|Significant Location Change||Triggers when there has been a significant change in the device’s location, such as 500 meters or more. See location for additional details.|
|Geographic Region Entered||Triggered when entering any user-specified Home Assistant zone (also known as geofencing).|
|Geographic Region Exited||Triggered when exiting any user-specified Home Assistant zone (also known as geofencing).|
|Push Notification||Requesting location updates via push notification.|
|Background Fetch||When the app refreshes sensor information in the background.|
|Siri||Location updates triggered via the Siri Shortcuts "Send Location" shortcut.|
|iBeacon Region Entered||Triggered when an iBeacon is seen that corresponds to a known zone.|
|Registration||Triggered once when the app is first connected to your Home Assistant instance.|
|Signaled||Triggered when the app detects a change, such as battery state changes, while running.|
This sensor will reflect the current level of illuminance the device detects. The sensor updates during the normal sensor update interval or with the other sensor updates and makes use of Environment Sensors.
|Whether or not mobile data is turned on for the device.|
|Whether or not mobile data roaming is turned on for the device.|
This sensors state will be the date and time of the next alarm in UTC format. The sensor will update as soon as the next alarm is scheduled. The state will be
unavailable when there is no next alarm. This sensor makes use of AlarmManager to get the next scheduled alarm which can be set by any app at any time. This sensor has settings that will let you create an allow list by selecting the packages you want to get alarm events from, just keep in mind the API is only able to get the next scheduled alarm. This setting is turned off by default.
|The date and time of the next alarm in local time.|
|The package that scheduled the next alarm.|
|The time date and time of the next alarm in milliseconds.|
The pedometer sensors provide step-counting data from the devices built-in motion processor. They keep a tally of your daily on-foot activity, and reset at midnight. These sensors require motion permissions to be enabled.
|The number of steps taken by the user.|
|The estimated distance (in meters) traveled by the user.|
|The average pace of the user, measured in seconds per meter.|
|The approximate number of floors ascended by walking.|
|The approximate number of floors descended by walking.|
Android users will only have a
sensor.steps entity which will represent the total number of steps taken since the last device reboot. A recommended approach to getting your daily step count is to use the Utility Meter integration with
cycle: daily. This sensor will update during the normal sensor update interval and makes use of the Motion Sensor. This sensor requires the Activity Recognition permission.
This sensor will only show up if a user explicitly grants the
Phone permission for the app in your devices
App Info screen. The only data tracked for this sensor are the following states:
offhook. This sensor will update anytime a phone state change is detected and makes use of TelephonyManager. This sensor requires the Read Phone State permission.
This sensor will show the state of power save mode on the device. Depending on the device this is usually a user configurable option to indicate when the device should enter a special power saving mode. The state will update as soon as a state change is detected and the sensor makes use of PowerManager.
This sensor will show the current pressure reading from the device. This sensor will update during the normal sensor update interval and makes use of Environment Sensors.
This sensor will show the current proximity reading from the device. This sensor will update during the normal sensor update interval. Not all devices report an actual reading so those devices will show either
far depending if the sensors maximum range is
5. This sensor makes use of Position Sensors.
This sensor uses the ipify API in order to determine the devices public IP address. This sensor will update during the normal sensor update interval.
This sensor displays information on the device storage. The file sizes reported are in Base-10.
|The amount of available storage remaining on your device.|
|The volume’s available capacity in bytes for storing important resources.|
|The volume’s available capacity in bytes for storing nonessential resources.|
|The total storage capacity of your device.|
For Android the behavior is slightly different due to the differences in the 2 operating systems. The state will be the same as iOS where we show the percentage of free space, the attributes will not be identical. These sensors will update during the normal sensor update interval, calculations are done with the help of StatFs.
|The amount of free internal storage space remaining on your device.|
|The total internal storage capacity of your device.|
|The amount of free external storage remaining on your SD card, for devices without a SD card it will reflect |
|The total external storage of your SD card, for devices without a SD card it will reflect |
These sensors will show the total data transmitted and received by the device. There are both total and mobile sensors to use and the statistics reset on device reboot. These sensors use the Traffic Stats API.