A Python Bluetooth to MQTT gateway that connects various Bluetooth devices to MQTT brokers for home automation.
bt-mqtt-gateway is a Python script that acts as a bridge between Bluetooth devices and MQTT brokers. It collects data from various Bluetooth sensors and publishes it to MQTT topics, enabling integration with home automation platforms like Home Assistant. The project solves the problem of connecting Bluetooth devices that lack native MQTT support to modern smart home ecosystems.
Home automation enthusiasts, IoT developers, and Raspberry Pi users who need to integrate Bluetooth sensors (like Xiaomi Mi Flora, RuuviTag, or thermostats) into MQTT-based systems.
Developers choose bt-mqtt-gateway for its extensibility via custom workers, broad device support, and simple deployment options including Docker. It provides a lightweight, self-hosted alternative to proprietary Bluetooth gateways.
A simple Python script which provides a Bluetooth to MQTT gateway, easily extensible via custom workers. See https://github.com/zewelor/bt-mqtt-gateway/wiki for more information.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows custom Python workers to add new Bluetooth devices, as demonstrated in the custom worker development section with examples like TimeWorker.
Supports configurable topics, payloads, and MQTT authentication, enabling seamless connection to various brokers for home automation.
Includes Docker images and systemd service files, tested on Raspberry Pi Zero W for reliable, production-ready setups.
Update intervals can be adjusted on-the-fly via MQTT messages, providing operational flexibility without restarting the gateway.
Requires manual Bluetooth scanning with hcitool, MQTT server configuration, and Python environment setup, which can be error-prone and time-consuming.
The README explicitly recommends using ESPHome's Bluetooth proxy instead, suggesting the project may be outdated or less actively maintained.
Lacks a built-in GUI or web interface, relying solely on command-line tools and configuration files for management and troubleshooting.