Just yesterday, I reported on the teaser the Home Assistant developers posted on their socials. One of the speculative ideas I had for what could be announced, was presence tracking on a room level using ESPHome and the ESP32's Bluetooth capabilities. A pull request, that was merged with the development branch of ESPHome just ten days ago, might give this speculation some further credibility: ESPHome will soon track iBeacon devices.
Could this be a hint as to what will be announced next week, or am I getting ahead of myself? Either way, support for tracking iBeacon devices is a very welcome addition to ESPHome. With it, the dream of having reliable room level tracking that is easy to set up is one step closer to becoming a reality.
What is an iBeacon device?
Bluetooth Low Energy (BLE) beacons, such as iBeacon devices, are devices that broadcast their identifier to other, nearby BLE capable devices. To put it simply, it is a way of one device saying “hello, I'm here” to another device when they are in proximity. Without any obstruction, the range of such a beacon can theoretically be up to 30 meters, though interference from other BLE devices, such as smartwatches, and obstructions can diminish the range.
Apple develops the iBeacon protocol and has done so since it was introduced at the Apple Worldwide Developers Conference (WWDC) in 2013. It is based on Bluetooth Low Energy proximity sensing and functions by transmitting a universally unique identifier.
So, what do these beacons look like? You most likely have one either in your pocket, hand, or on your desk presently: any modern smartphone can be set up as an iBeacon device. In fact, the Home Assistant companion app for Android has built-in functionality to turn your phone in to one. The other type of iBeacon you will frequently come across is the tag: a small, button cell powered tracker. These can be bought for ~US$5-10 on AliExpress and are also found on Amazon thanks to cheap chips such as the nRF51822.
Why iBeacon tracking in ESPHome matters
The upcoming ability to track iBeacon devices with ESPHome is, in my opinion, a major development. Yes, there are other ways of tracking your smartphone and tags, such as room-assistant and ESPresense, but they generally do only one thing. With ESPresense, your ESP32 board will only be tracking iBeacon and other BLE devices, there is no way of adding additional sensors or lights, as it is possible to do with ESPHome. When using room-assistant with Raspberry Pis, you could install other applications, such as AdGuard Home, but managing multiple devices can get a bit convoluted.
When using ESPHome to track iBeacon devices, you could turn every multisensor or LED strip controller in to a tracker. Management would be greatly aided by being able to view and edit all nodes from a single dashboard. As many ESP32 boards are customizable, you will also be able to add external antennas to increase its BLE range.
Not to be confused with the ESP32 Bluetooth Low Energy Beacon
ESPHome does already have an ESP32 Bluetooth Low Energy Beacon component; however, this does the reverse of what has been described in this article. It won't track your smartphone or BLE tag, but will allow your phone to track the ESP32. It essentially turns the EPS32 in to an iBeacon device.
While this component could be used for room level tracking, it would be more complicated as it requires your phone to send data to Home Assistant, and it doesn't support BLE tags.