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.

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

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
Related Projects





