The room-assistant app takes presence detection to the next level. It not only tracks whether you, or more precisely your phone, watch, and/or Bluetooth tag, are home, but in which room you are currently in. It does this using a distributed network of Bluetooth-enabled computers, usually the power-efficient Raspberry Pi Zero W or other single-board devices, and makes use of the fact that most smartphones, smartwatches, and sport watches have Bluetooth enabled at all times.
Tracking the presence of inhabitants in Home Assistant has always been one of the most debated subjects. Most trackers come in the form of router and access point integrations, which keep a look-out for certain Wi-Fi enabled devices. These can only track whether you are home or not home, i.e. whether you are connected to the network, or not. These trackers are useful for automations and scripts that cover your whole smart home, for example the heating. Then there are the more advanced presence trackers, such as the Home Assistant Companion apps, that can track you outside your home. These apps send GPS coordinates to Home Assistant, which can in turn be used for zones. Using the Home Assistant Companion app you could, for example, set up a notification to check the shopping list, whenever you enter a shop.
The downside of using network-based presence trackers is that they can take some time to react. Your smartphone might first check how strong the signal is, or it might even turn the Wi-Fi radios off when it has been idle for a certain amount of time. The Home Assistant app and other GPS-based trackers are great at tracking your approximate location outside the home, but won’t be able to tell in which room you are currently in when at home.
Another downside is that both the network-based and GPS trackers options rely solely on your smartphone, so if it is turned off or out of battery, you will be earmarked as being out of the home.
Table of Contents
- How room-assistant works
- What is the best tracking devices for room-assistant?
- Where other room-level presence detectors fail
- Where room-assistant falls shorts
- Tracking devices and pets, and not humans, with room-assistant
- How does room-assistant interact with Home Assistant?
How room-assistant works
Instead of relying on your phone’s network and GPS coordinates, or changes to the environment, as a motion sensor would do, room-assistant can track what you carry on your person. As long as it uses Bluetooth. This could be your phone, watch, an iBeacon, or even headphones. Though, there are some limitations due to how these various devices work.
While room-assistant can run on several devices, and even in a Docker container, I am going to use the Raspberry Pi for examples in this article. Installing room-assistant on a Raspberry Pi is easy enough, thanks to the available documentation. I will be detailing how I set up room-assistant in a series of follow-up articles.
If you have spent any time configuring Home Assistant, you will feel right at home with room-assistant, as it also uses YAML for its configuration file. In that file, you have to set up just three global settings, and it is also where you will be adding the addresses of devices you want tracked. In its default setting, room-assistant won’t report every device it finds to Home Assistant, only those you have allowed.
There is also a room-assistant add-on available for Home Assistant. So if you are already running Home Assistant OS on a Raspberry Pi, you might as well make use of its available radios.
Clusters are room-assistant’s secret weapon, for it is them that allow the application to track on a room by room basis. They allow you to run multiple room-assistant instanced on the same network, and have them come together as a cluster. When the individual instances work together, they can triangulate your position based on the signal strengths, and in return tell Home Assistant where exactly you are.
Should I Bluetooth or Bluetooth Low Energy for room-assistant?
Good question, and one that is easily answered: Bluetooth Low Energy (BLE) all the way. The problem with Bluetooth (or Bluetooth Classic, as it is referred to in the documentation), is that it uses the 2.4 GHz band. That’s the same band that Wi-Fi and Zigbee use. While there are ways of lessening the interference between Wi-Fi and Zigbee, bringing a third player in to the game would unnecessarily complicate things. With BLE, you will also experience faster response times and more stability, partially due to the decreased interference.
Until recently, this left iPhone users in a bit of a conundrum. Because Apple opts to randomize the BLE address for privacy reasons, there was no easy way of tracking iPhones and iPads out of the box. Luckily though, this issue was troubling the developer too, and there now is a small companion app that allows you to track your iOS and iPadOS devices in room-assistant using BLE.
With Android, you will need to use an app to simulate an iBeacon for a smooth integration. Android does not advertise its BLE data as, for example, a pair of Bluetooth headphones or an iBeacon would. Luckily though, there is a BLE transmitter function built right in to the Home Assistant Companion App for Android. To save on battery life, I would suggest you use an automation to turn off the transmitter whenever you leave the house.
room-assistant isn’t limited to Bluetooth and BLE
If tracking Bluetooth devices isn’t enough for you, room-assistant can integrate with some interesting sensors. The Omron D6T series and Grid-EYE are so-called thermopile sensors, which can analyse the temperature readings for localized peaks. Thermopile sensors do not rely on motion and thus will detect the presence of humans, even when they are completely motionless on the couch.
The Grid-EYE does this in an 8×8 grid, and the Omron D6T series in an 1×1 up to 32×32 grid. Though the highest-resolution sensor, the Omron D6T-32L-01A will cost you around €130 once it goes on sale, and I can’t image anyone needing such a high resolution for what I would call an average-sized room.
My suggestion is to go with either the Grid-EYE or the Omron D6T-44L-06. The Grid-EYE has a higher resolution than the D6T-44L-06, 8×8 compared to 4×4, but the D6T-44L-06 refreshes four times as frequent, at 250ms.
What is the best tracking devices for room-assistant?
The answer to this question depends on what you want from room-assistant and what devices you use in daily life. If you have your smartphone on you 24/7 (except when charging, obviously), then the room-assistant companion app for iOS and iPadOS devices or the BLE transmitter built in to the Home Assistant Companion App for Android is what you want to determine your location.
The best all-round solution would be to use a small (and usually cheap) iBeacon or Bluetooth tag. The only requirement is that they have to send out a constant Bluetooth Low Energy ID. Popular tags are the RadBeacon and those using the NRF51822 chip, many of which can be found on marketplaces such as AliExpress. There is also a new crop of Bluetooth 5.0 iBeacons starting to hit the (virtual) shelves. The main advantage Bluetooth 5.0 has over its predecessor is how far the signal can reach. These Bluetooth tags can typically be powered of a coin-cell battery for a matter of weeks or even months.
As of today, AirTags are not supported by room-assistant, and it is unlikely that they ever will. While AirTags do use Bluetooth, it appears that Apple want to keep them in their ecosystem and not let any application besides Find My interact with them.
Other commercially available tracker, such as the Tile and Nut, have been confirmed to be working with room-assistant. If you already own one of these, you are in luck. These have the added bonus of not just acting as iBeacons, but also as key finders. Before buying a similar device, I suggest you do a quick search in your favourite search engine to find out whether someone else has tried to use the tracker you want with room-assistant.
Where other room-level presence detectors fail
There are many ways of detecting presence on a room-level. However, none of them are perfect. PIR motion sensors rely on rather large movements and when sitting at your desk or lying on the couch for longer periods, they might not be able to pick up any movement. Humidity sensors are great for tracking a person in the shower or bath, but apart from that scenario, they aren’t effective. If you still want to use room-assistant and PIR motion sensors, you are in luck, as you can hook up one to the Raspberry Pi room-assistant is running on.
One alternative to room-assistant is monitor. For monitor to work, you will need to pair your phone with every machine running it, making the setup rather complicated. And while the project hasn’t been archived, the last release was over two years ago. With monitor being the successor to the vastly inferior presence, that application shouldn’t be considered any more.
ESP32 boards are great little devices thanks to their low cost, low-power requirements, and the fact that they support both Bluetooth and Wi-Fi. Both ESP32-mqtt-room and ESPHome have the option to use the Bluetooth radios to detect presence on a room by room bases. However, they aren’t as versatile as room-assistant and lack the Bluetooth Classic option.
Where room-assistant falls shorts
With all that said, room-assistant isn’t perfect. Or, to put it differently, the devices you want to interact with room-assistant aren’t perfect. Take, for example, my Garmin watch: Whenever it makes a connection to my phone, it will turn off its BLE transmitter. Except sometimes it doesn’t. Either way, it’s not reliable enough to be used in production.
The Apple Watch is another pain-point for room-assistant users. As a watch, it is almost certainly the device you have on your person most frequently. Despite using BLE, Apple won’t allow apps such as room-assistant to track them. The only option is to use Bluetooth Classic if you absolutely insist on tracking your Apple Watch. Though even then, the setup isn’t as straight-forward as with other devices.
It is also advised that you don’t use Bluetooth Classic and Bluetooth Low Energy on the same device, as it can degrade the performance. If you do want to use both simultaneously, you should purchase a Bluetooth USB adapter. Just make sure it supports Linux.
Tracking devices and pets, and not humans, with room-assistant
It seems logical, but it took me until I had installed room-assistant myself, that you can track things besides phones and watches. For example, most headphones use Bluetooth, and coincidentally, I own a pair I frequently lose down the back sofa. If I were to fully equip my home with room-assistant, I’d know their location instantly. They can obviously only be tracked them when turned on, but it does allow you to see their last location in your home.
In the same way you can track yourself, you can also track your pets. Find yourself a small enough iBeacon to fit on a cat’s or dog’s collar, and you will be able to know where in your home the creature is hiding.
How does room-assistant interact with Home Assistant?
With the last paragraph, I want to bring it back to Home Assistant, and how it integrates with room-assistant. There is no direct integration and instead MQTT is used. Luckily, room-assistant does support Discovery and devices you add to the allow list will automatically appear in Home Assistant without any further configuration needed.