A BLE to MQTT bridge running on an ESP32

esp32-ble2mqtt

比赛/竞技, ESP32 ⭐⭐☆☆☆ (2/5) 已发布
shmuelzon 771 Stars MIT BOM 完整度: /5 教程完整度: /5

项目简介

ESP32上运行的BLE到MQTT桥接器。


ESP32-BLE2MQTT 是一个专为 ESP32 芯片设计的 BLE 到 MQTT 协议转换桥接工具,基于 ESP-IDF v5.2.1 开发。它的核心功能是将蓝牙低功耗(BLE)设备的 GATT 特征值映射为 MQTT 主题,实现双向通信。例如,一个带有电池服务的 BLE 设备,其电量值会自动发布到类似 `a0:e6:f8:50:72:53/BatteryService/BatteryLevel` 的 MQTT 主题上,数值以字符串形式呈现(如 "100" 表示 100% 电量)。项目支持通知自动订阅、主动读取(通过向主题发送任意值并加 `/Get` 后缀)以及写入操作(通过 `/Set` 后缀),极大简化了 BLE 设备与 MQTT 生态的集成。

标签

项目特点

零代码配置:通过 Web 界面或配置文件即可完成所有设置,无需编写固件
自动发现 BLE 设备:支持扫描并识别多种常见蓝牙传感器广播格式
数据直接推送到 MQTT:每个设备的数据独立推送,支持自定义主题前缀
低功耗设计:利用 ESP32 的深度睡眠模式,可电池供电运行
支持 OTA 更新:可通过网络远程升级固件,无需拆机刷写
兼容 Home Assistant:输出标准 MQTT 格式,可无缝集成到智能家居系统

技术规格

主控芯片
无线协议
支持的 BLE 设备
MQTT 协议版本
配置方式
固件更新方式
供电方式
典型功耗

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
ESP32 开发板(如 ESP32-DevKitC) 1 推荐 4MB Flash 版本
Micro USB 数据线 1 用于供电和首次刷写
5V USB 电源适配器 1 或 3.7V 锂电池(需降压模块)
杜邦线(可选) 若干 如需外接传感器或按钮
USB 转 TTL 串口模块(可选) 1 仅当开发板无内置串口时使用

所需工具

工具用途是否必需
PlatformIO 或 Arduino IDE 编译和上传固件 ✅ 是
Python 3 + esptool.py 通过串口刷写固件 ▢ 推荐
MQTT 客户端(如 Mosquitto) 测试 MQTT 消息接收 ▢ 推荐
串口监视器(如 PuTTY) 调试日志输出 ▢ 推荐
Web 浏览器 访问 ESP32 配置页面 ▢ 推荐

能力画像

**记忆与知识检索**:2/5 — 项目本身不涉及知识库或记忆功能,但需要查阅 BLE 和 MQTT 协议文档
**动手与操作**:3/5 — 需要焊接或连接硬件,但整体组装简单,适合入门级动手
**编程与算法**:2/5 — 无需编写代码,但需要理解配置文件格式和 MQTT 主题结构
**设计与建模**:1/5 — 不涉及电路设计或 3D 建模,硬件为现成开发板
**实验与调试**:4/5 — 需要调试 BLE 扫描范围、MQTT 连接稳定性,以及不同传感器的数据解析
**协作与分享**:3/5 — 可通过 GitHub Issue 和 PR 参与改进,配置方案可分享给社区
**学习与研究**:4/5 — 适合学习 BLE 广播协议、MQTT 通信、ESP32 低功耗模式
**系统集成**:5/5 — 核心价值在于将 BLE 设备无缝集成到 MQTT 生态(如 Home Assistant)

所需技能

基础电子知识(了解 ESP32 开发板引脚和供电) 熟悉 Wi-Fi 网络配置(SSID、密码) 了解 MQTT 协议基本概念(主题、发布/订阅) 能够使用命令行工具(如 esptool.py 刷写固件) 会阅读 JSON 配置文件 具备基本故障排查能力(查看串口日志)

适用场景

将小米蓝牙温湿度计数据接入 Home Assistant 或 Node-RED
监控蓝牙信标(如 iBeacon)的 RSSI 信号强度,用于室内定位
把自定义 BLE 传感器(如心率、气压)的数据上传到云端 MQTT 服务器
在工业环境中桥接 BLE 设备到有线 MQTT 网络
作为低成本的 BLE 网关,用于智能家居数据采集
教学演示:展示 BLE 与 MQTT 两种物联网协议的互转