ESP32‑BLE2MQTT:一个运行在 ESP32 上的 BLE↔MQTT 双向桥

 

ESP32‑BLE2MQTT 是一个运行在 ESP32 上的 BLE↔MQTT 双向桥。它把蓝牙低功耗(BLE)设备的 GATT 特性直接映射成 MQTT 主题,既能把蓝牙传感器的数据推送到 MQTT 服务器,也能通过 MQTT → BLE 的方式远程控制蓝牙设备。换句话说,原本只能用手机 APP 交互的蓝牙设备,现在可以直接接入 Home Assistant、Node‑RED、ThingsBoard 等平台,变身为真正的物联网节点。


它解决了哪些痛点?

痛点

传统做法

ESP32‑BLE2MQTT 的解决方案

蓝牙设备只能本地控制

只能用手机或专属 APP,局域网外不可达

通过 MQTT 把数据发布到云端,随时随地读取

多设备管理繁琐

每个设备都要单独配对、编写代码

自动发现并映射特性,统一用主题管理,结构清晰

缺少统一监控

需要自行开发监控脚本或 UI

内置状态、连接、Uptime 等系统主题,直接订阅即可

固件升级困难

只能 OTA via App,受限于手机网络

支持 ESP‑IDF OTA,统一在 MQTT 上推送固件和配置

跨平台兼容性差

不同厂商蓝牙协议各异

通过自定义 Service/Characteristic 定义,可兼容 iBeacon、Eddystone、MiBeacon 等多种广播协议


安装&使用一步到位

  1. 1. 准备开发环境

  • • 按官方文档装好 ESP‑IDF v5.2.1(别用别的版本,可能编译不通过)。

  • • git clone --recursive https://github.com/shmuelzon/esp32-ble2mqtt 把源码拉下来。

  • 2. 配置

    • • 打开 data/config.json,填入 Wi‑Fi 或 以太网 信息、MQTT Broker 地址、主题前缀等。

    • • 如需过滤特定蓝牙设备,可在 ble.whitelist / ble.blacklist 中写入 MAC(支持 ? 通配符)。

  • 3. 编译刷入

    idf.py build flash
    • • 期间会自动生成 sdkconfig.defaults,覆盖常见开发板(如 Olimex ESP32‑POE)。

  • 4. 运行 & 监控

    • • ESP32 启动后会在 MQTT 上发布 <MAC>/Connected、<MAC>/Owner、BLE2MQTT-XXX/Uptime 等系统主题。

    • • 例如电池服务:a0:e6:f8:50:72:53/BatteryService/BatteryLevel 会实时推送电量百分比。

    • • 想读取一次值,只需向 …/BatteryLevel/Get 发送任意负载;想写值,向 …/RelayState/Set 发送对应的字符串。

  • 5. 远程日志(可选)

    • • 在 log 节点配置 UDP 地址,idf.py remote-monitor 即可实时抓取设备日志,省去串口调试。


    优点 & 缺点一目了然

    优点

    说明

    全平台兼容

    支持 Wi‑Fi、以太网,适配多数 ESP32 开发板

    自动特性映射

    直接使用蓝牙官方 UUID,无需手写解析代码

    灵活主题配置

    可自定义前缀、Get/Set 后缀,完美融入现有 MQTT 结构

    丰富系统信息

    连接状态、所有者、版本、Uptime 等主题一键监控

    OTA 支持

    固件+配置文件统一升级,省时省力

    缺点

    说明

    只能跑在 ESP32

    受硬件限制,其他 MCU 需要自行移植

    对 BLE 规范依赖

    某些厂商自定义特性可能需要手动补充 characteristics.definitions

    资源占用

    同时连接多个蓝牙设备时,ESP32 的 RAM/CPU 可能紧张(建议控制在 5‑10 台)

    需要 ESP‑IDF 基础

    初次上手的伙伴需要花时间熟悉 ESP‑IDF 环境


    小结:为什么要把它装进你的 IoT 项目?
    如果你已经在玩 MQTT、Home Assistant 或者 Node‑RED,却苦于蓝牙设备只能本地控制,那 ESP32‑BLE2MQTT 就是你缺的那块“桥”。它把蓝牙世界搬上了 MQTT 的“大舞台”,让设备数据统一、控制统一、监控统一。上手成本不高,配置灵活,社区活跃,几乎可以把市面上所有支持 BLE 的传感器、开关、灯具统一收编。把它装到你的网关上,整个智能家居系统瞬间升级为 真正的全屋互联!


    项目地址:https://github.com/shmuelzon/esp32-ble2mqtt

     

    发表评论