BTHome is an open standard for broadcasting sensor data and button presses over Bluetooth LE
BTHome is an energy efficient but flexible BLE format for devices to broadcast their sensor data and button presses. Devices can run over a year on a single battery. It allows data encryption and is supported by popular home automation platforms, like Home Assistant, out of the box.
BTHome is part of the Open Home and aims to create smart homes that offer privacy, choice and durability. Learn more about the Open Home.
Projects using BTHome
Home Assistant (V1 and V2)
Open source home automation with a focus on local control and privacy. Automatically discovers BTHome devices and allows users to add them to their home with a single click. BTHome V2 support is scheduled for the 2022.12 release.
Shelly BLU Button1 (V2)
The Shelly BLU Button1 is a button device that is broadcasting in the BTHome v2 format. It sends button events, like single, double, tripple or even long click, which allows you to run different automations in your Home Automation software with a single button.
ATC MiThermometer (V1)
Custom firmware for several Bluetooth thermometer & hygrometer devices that can broadcast temperature and humidity via BTHome.
Use their TelinkMiFlasher.html tool to upgrade your device directly from your browser. Once installed, change the advertising type to "BTHome" and click "Send Config".
b-parasite is an open source soil moisture and ambient temperature/humidity/light sensor that supports BTHome.
BTHomeV2 ESP32 (V2)
BTHomeV2 ESP32 is an example of using an ESP32 to send BLE advertisement packets in the BTHome V2 format in such way that you have a very lightweight, energy efficient sensor. Between the broadcasting of BLE advertisements, the ESP32 will in a sleeping state, making it more suitable for battery powered sensors.
BTHome-weather-station is an example of using the Espressif IoT Development Framework (ESP-IDF) to read sensor data and send BLE advertisement packets in the BTHome format. It includes reading data, encoding to BTHome format, deep sleep and utilization of multiple cores for speed. The aim is to be easily extensible for adding your own sensors using I2C.
BTHome Electricity Meter (V2)
BTHome Electricity Meter is an example of reading total energy usage and live power consumption from an electricity meter with an impulse light, using a Puck.js beacon.
BTHome Inertial Sensor in CircuitPython (V2)
An example of sending BLE advertisements in the unencrypted BTHome v2 format using CircuitPython. The example code detects motion of the Seeed XIAO nRF52840 Sense board and sends BTHome advertisements with the state of its own movements.
The problem we're solving
Most Bluetooth devices are designed to be used with a smartphone app. They broadcast their data in a proprietary format that is not standardized. To be able to use these devices in your smart home, your home automation platform needs to support each proprietary format. This makes it difficult to use devices from different manufacturers in the same system.
BTHome is an open standard that allows devices to broadcast their sensor data and button presses in a standardized format. Home automation systems now need to only adopt a single standard and BTHome devices will work out of the box.
Scope & Constraints
The goal of the BTHome standard is to share sensor data and button presses efficiently via Bluetooth LE discovery packets. It is not the goal to offer a way for devices to share control.
The BTHome 16 bit UUID has been sponsored by Allterco, who purchased the UUID for us at the Bluetooth SIG organisation. Allterco is more familiar to most of you as Shelly. Alltreco has made a license available for everyone to use the format for free, as long as you follow the (V2) format that is defined on this website. If you want to develop devices with BTHome, and you want to asure that it is really free, you can download the license.