蓝牙 Mesh 是什么

普通蓝牙是一对一的,手机连一个设备就占一条链路;蓝牙 Mesh 则让设备之间互相中继转发消息,一盏灯的命令能通过邻居设备传到几十米外的另一盏灯,天生适合灯、开关、传感器这种低功耗、数量多的智能家居场景。

它工作在广播机制上:消息以泛洪方式在节点间转发,不用建复杂的路由表,节点加入、离开网络都简单,坏了几个节点网络还能继续工作,容错性很强。

本文核心知识点
  • 泛洪转发设备互相中继消息。
  • 配网Provision 把设备加进网络。
  • 消息模型发布订阅、组播控制。
  • 多协议网关蓝牙 Mesh 转 MQTT。

对比一下:Zigbee 也是 Mesh,但需要专用协调器建网;蓝牙 Mesh 的设备用手机就能配网,手机本身就是临时网关,对没有集中网关的家庭更友好。

蓝牙 Mesh 配图:深蓝渐变背景上多个发光节点组成的网络拓扑,连接灯泡、摄像头、芯片与门锁图标的扁平科技插画
一盏灯的消息,邻居帮它传。

节点角色与配网

蓝牙 Mesh 的节点有几种角色,理解角色才能排布网络:

  • 中继节点:转发消息,扩大覆盖,要常供电(插座设备适合当)。
  • 低功耗节点:电池供电,大部分时间休眠,靠 Friend 节点代收消息。
  • Friend 节点:帮低功耗节点缓存消息,一般也是常供电设备。
  • 代理节点:让不支持 Mesh 的普通 BLE 设备(如手机)通过 GATT 接入。

配网(Provisioning)流程:设备进入广播配网状态,配网器(手机 App 或网关)完成认证、分配网络密钥和单播地址,设备才算正式入网。配网后还要用 App 把设备加入组,才能收到组播指令。

消息模型与场景

蓝牙 Mesh 控制设备靠的是模型(Model):比如 Generic OnOff 模型管开关、Light Lightness 模型管亮度。设备"订阅"某个组地址,控制端向这个组"发布"消息,所有订阅者同时响应。

// 概念:组播控制
// 开关节点:发布到组 0xC001
// 客厅灯节点:订阅 0xC001,收到 OnOff 消息就开关
// 走廊灯节点:订阅 0xC001,同样响应
//
// 一条命令,一组设备
publish(group 0xC001, ON);
// 所有订阅 0xC001 的灯同时点亮

这套发布订阅机制非常适合场景联动:一个开关控制一组灯、一个传感器触发一组动作,都在组地址层面完成,不需要网关逐台下发指令,响应快、不依赖云。

多协议网关设计

家里不会只有蓝牙 Mesh:灯可能是 Zigbee、插座可能是 WiFi、窗帘可能是射频。多协议网关就是把各路协议统一到一条消息总线上,典型实现是 ESP32 跑 ESP-Mesh 或 MQTT 桥接。

// 多协议网关数据流示意
// 蓝牙Mesh节点 --BLE--> ESP32(蓝牙Mesh+WiFi) --MQTT--> Home Assistant
// Zigbee节点 --Zigbee--> 协调器 --串口/网络--> 网关 --MQTT--> 平台
// WiFi设备 --WiFi--> 网关 --MQTT--> 平台
//
// 统一模型:设备 entity_id 为唯一标识,状态走 MQTT topic
// topic: ha/devices/<device_id>/state
// 命令:  ha/devices/<device_id>/cmd  payload: {"on":true}

网关设计的三个要点:一是状态同步,协议侧状态变化要实时上报到总线;二是有序,命令按设备串行化,防止并发冲突;三是离线处理,网络断了本地还能联动(蓝牙 Mesh 本身局域网可用)。