ESPresense
An ESP32 based presence detection node for use with the Home Assistant mqtt_room component or ESPresense-companion for indoor positioning
Documentation: https://espresense.com/
Building: building.
Release Notes: changelog.
ESPresense is a free, open source internet of things (iot) project written in C and released under AGPL-3.0. It has 1,500 GitHub stars, 190 forks and 121 open issues, and was last pushed 15 hours ago. On this registry it ranks #63 of 99 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available. It gained 22 stars over the last 30 tracked days.
ESPresense is an AGPL-3.0 licensed ESP32 firmware project that turns low-cost ESP32 boards into indoor positioning nodes which report presence data over MQTT to Home Assistant or to the ESPresense-companion application.
ESPresense is an open-source firmware and companion toolchain for the ESP32 microcontroller platform, written in C and distributed under the AGPL-3.0 licence. Each node runs on an ESP32 board, gathers indoor positioning information, and transmits that data to an MQTT broker so that other software can determine where tracked devices are located within a building. The project sits inside the Home Assistant and broader home-automation ecosystem, where MQTT acts as the common message bus between sensors and consumers.
The concrete problem it solves is room-level presence awareness for automation. Home Assistant exposes a mqtt_room component for this purpose, and ESPresense provides the hardware-side implementation that feeds it. Without a node like this, a Home Assistant installation knows only that a device exists on the network, not which room it occupies. ESPresense fills that gap by placing inexpensive ESP32 hardware around a home or building and publishing position estimates that automations can consume directly. For users who want more than the stock mqtt_room integration, the separate ESPresense-companion project consumes the same node output to provide fuller indoor positioning.
mqtt_room component.BUILDING.md and tracks changes in CHANGELOG.md, so contributors can compile firmware from source.mqtt_room sensor component over an existing MQTT broker.BUILDING.md to compile and flash firmware rather than relying on prebuilt binaries.Build the firmware from source following the instructions in BUILDING.md, then flash it to a supported ESP32 board, including the M5Stack variants named in the project topics. Full documentation is hosted at espresense.com, and changes between versions are listed in CHANGELOG.md.
Within the tools named in the project's own documentation, ESPresense is the node-side firmware, while Home Assistant's mqtt_room component is the consumer and ESPresense-companion is the richer positioning front end that reads the same node output. It therefore complements rather than competes with those projects: the component and companion are useless for indoor positioning without hardware publishing to MQTT, and ESPresense is that hardware layer.
A self-hoster must run an MQTT broker and, for the fuller positioning experience, the separate ESPresense-companion service, plus the hardware and flashing workflow needed to build and deploy firmware to each node. Anyone unwilling to operate a broker, compile firmware, or maintain multiple physical boards should look elsewhere. The README itself is thin, offering badges, a documentation link, and pointers to BUILDING.md and CHANGELOG.md rather than step-by-step setup, and the repository carries 121 open issues, so expect to rely on the external documentation site when problems arise.
An ESP32 based presence detection node for use with the Home Assistant mqtt_room component or ESPresense-companion for indoor positioning
Documentation: https://espresense.com/
Building: building.
Release Notes: changelog.
ESPresense is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.
An ESP32 based node for gathering indoor positioning and transmitting to mqtt
ESPresense is primarily written in C. Its source is publicly available at https://github.com/ESPresense/ESPresense, and it has 1,500 GitHub stars.