Skip to content
MCU Atlas
ESP32ESP32

ESPresense: room-level presence detection with ESP32 nodes

Cheap ESP32 nodes that track phones, watches and beacons over Bluetooth and report which room they're in to Home Assistant via MQTT.

Difficulty:BeginnerSource available

Key Facts

  • Chip: ESP32
  • Tracks: phones, watches, BLE beacons (Apple IRK supported)
  • Output: MQTT with Home Assistant discovery
  • Modes: one node per room, or 5-8 per floor for X,Y

About This Project

ESPresense turns ESP32 boards into Bluetooth presence nodes. Each node listens for phones, watches and beacons, estimates distance and publishes it over MQTT, with Home Assistant MQTT discovery. It identifies devices by fingerprint rather than MAC address, and supports IRK-based enrollment so Apple devices with private random addresses can still be located. Distances are smoothed with a median pre-filter and a 1Euro filter to cut jitter. There are two ways to use it: one node per room with Home Assistant's mqtt_room for simple room automations, or dense coverage (the docs suggest 5 to 8 nodes per floor) with ESPresense-companion for X,Y positions on a floor plan. You need the nodes, something to track and an MQTT server.

Source & Attribution

Source: GitHub
License: AGPL-3.0
Last verified: 10/18/2026
ESPresense: room-level presence detection with ESP32 nodes

Illustration

Bill of Materials

Parts list

3 parts · 3 linked

Heads up: some Buy links are affiliate links. If you buy through one, MCU Atlas may earn a small commission at no extra cost to you. It never changes which parts we list. How this works

Not included: 3D-printed case, wire, solder, USB cable

Download CSV

Related Projects

Watchy: open-source ESP32 e-ink smartwatch
Illustration
ESP32
An open-source smartwatch with a 1.54in e-paper screen and ESP32, hackable watch faces in Arduino.
Beginner·Code
2 parts listed
Low-power ESP32 e-paper weather display (7.5in)
Illustration
ESP32
A wall-mounted 7.5in e-paper weather display on an ESP32 that runs for months on one battery charge.
Intermediate·Code
5 parts listed
OpenEPaperLink: reuse e-ink shelf labels with an ESP32 access point
Illustration
ESP32ESP32-S3
Turns cheap second-hand electronic shelf labels into a Wi-Fi-managed e-ink display fleet via an ESP32 access point.
Advanced·Code
6 parts listed