Is ESPresense the successor to ESP32-mqtt-room we've been waiting for?

Disclosure: This post contains affiliate links. If you click through and make a purchase, I will earn a commission, at no additional cost to you. Read my full disclosure here.

A minimalist styled room with a black leather sofa adorned with two neutral-toned cushions, positioned next to a potted green plant. A vintage white dresser stands to the right of the sofa, topped with a vase of dried wheat stalks and a small framed picture. A sleek, modern floor lamp with an adjustable neck casts light towards the dresser, creating a cosy ambiance. The room has light grey walls and a white tiled floor, reflecting a clean and serene atmosphere.

The dream of every Home Assistant tinkerer is to be able to use low-cost Bluetooth/BLE capable ESP32 boards to track presence on a room by room basis. Just imagine if you could turn a ~US$3 board in to a node that tracks your smartwatch's or phone's location within a couple of meters and adjusts the environment accordingly. We now have a new project striving to achieve this goal: ESPresense. But can it fulfil its promise?

Every presence sensor has its issues

Besides using BLE and Bluetooth, there are many ways of detecting presence on a room level, but just about every option has its limitations:

An isolated image of the Aqara Motion Sensor P1 with Zigbee 3.0.

What's new in ESPresense?

In the title, I called ESPresense the successor to ESP32-mqtt-room. As a writer, I sometimes take liberties, and this was one of those occasions. As far as I know, ESP32-mqtt-room is still alive and (kind of) well, but it has been lacking updates in more recent times. The last feature update was released over a year ago, when it added support for the HTU21D sensor.

So, what is ESPresense? I would call it the spiritual successor to ESP32-mqtt-room, but in fact, it is a fork/rewrite of it. It adds some desperately needed features for those hoping to use ESP32 boards to track presence:

What is needed to get started with ESPresense

You will only need two components to start tracking presence on a room level with ESPresense: A sender or beacon and a receiver. The receiver is always going to be an ESP32 board, which you can pick up for ~US$3 from AliExpress.

If you want something fancier, ESPresense can be installed on M5Sticks , which will show devices that are nearby on their screen. Another advantage the M5Stick has is that you don't need to 3D-print a case for it.

The second component you almost certainly already have on you. A beacon or sender is anything that will broadcast via BLE. Your iOS or Android device will fulfil that purpose, but you could also use a tracker such as those from Tile or Chipolo.

If you are seeking a cheap option, BLE trackers can also be bought from AliExpress, a quick search for iBeacon or Eddystone will present you with many options. Some, but not all, fitness trackers will also function in this way. The ESPresense website confirms that the Mi Band 2 does work, however, from personal experience, I can confirm that Garmin watches will not.

How to install ESPresense

ESPresense uses the ESP Web Tools to install itself on to an ESP32 board. All you need to install the firmware is a compatible browser (Chrome) and a USB cable. Once you have connected the ESP32 to your computer, open the installation page and press the installation button.

Tracking Android and iOS devices with ESPresense

The easiest way of tracking Android devices is by using the Home Assistant companion app. In the app's settings, under sensors, you can enable the BLE transmitter, which allows ESPresense to track it. Keep in mind that this option will consume some of your battery. ESPresense tracks iPhones and Apple Watches using their fingerprint.

The ESPresense details how to configure Home Assistant. As I currently don't have any spare ESP32 devices, I haven't been able to set it up myself and will refer you to that guide.

A screenshot of the Home Assistant Companion app for Android

Limitations of BLE tracking with ESPresense

Unfortunately, and just like every other presence sensor, ESPresense isn't perfect. However, most of the limitations aren't its fault. For example, many Android vendors have very aggressive background limitations, which could stop your smartphone from broadcasting. The worst offenders are Samsung and OnePlus. As an owner of a OnePlus 6, I can confirm this behaviour.

The second limitation is one I already mentioned. Not all devices that use BLE will also broadcast. I have my Garmin sports watch on my wrist almost every day and night. It would be the best device for presence detection on a room level. Unfortunately, Garmin won't allow me to do this.

A portrait photo oif Liam Alexander Colman, the author, creator, and owner of Home Assistant Guide wearing a suit.

About Liam Alexander Colman

is an experienced Home Assistant user who has been utilizing the platform for a variety of projects over an extended period. His journey began with a Raspberry Pi, which quickly grew to three Raspberry Pis and eventually a full-fledged server. Liam's current operating system of choice is Unraid, with Home Assistant comfortably running in a Docker container.
With a deep understanding of the intricacies of Home Assistant, Liam has an impressive setup, consisting of various Zigbee devices, and seamless integrations with existing products such as his Android TV box. For those interested in learning more about Liam's experience with Home Assistant, he shares his insights on how he first started using the platform and his subsequent journey.


  1. hi, thanks for sharing your insights. Just to let you know i can use my garmin FR935 with ESP32-mqtt-room. In order for it to work I’ve configured a bixby routine on my phone to turn off BT while home. Not ideal but no big deal not having BT while home.

    • That’s actually quite an interesting solution. Turns out Bixby is good for something 😃 (I’ve never actually used it). I guess the same is doable with Tasker. Unfortunately, this wouldn’t work for me, as the watch is my notification machine and I always have the phone on silent.


Leave a comment

Share to...