2. Mesh网络基础概念:节点、中继、代理、朋友、低功耗节点角色解析
上一章我们聊了蓝牙Mesh的总体架构,说白了就是一张「人人传话」的大网。但网里的每个设备,扮演的角色其实不一样。
我刚开始接触Mesh时,以为所有节点都一样——能收能发就行。结果被朋友节点和中继节点的区别绕晕了好几天。后来在项目里踩了几个坑,才真正搞明白这五种角色的分工。
今天咱们就把这五个角色掰开揉碎,一个一个讲清楚。
2.1 节点(Node)—— 入网才算自己人
一个设备没加入Mesh网络之前,叫「未配网设备」。它只是个孤零零的蓝牙广播器,谁都不认识。一旦通过Provisioning流程成功加入网络,它就变成了一个「节点」。
节点是Mesh网络的最小单元。你可以把它理解成群里的一个成员——能发消息、能收消息、能转发消息。
核心特征:
- 拥有唯一的单播地址(Unicast Address)
- 拥有至少一组网络密钥(NetKey)
- 能参与消息的发送和接收
每个节点可以同时具备多个角色。比如一个节点既可以是中继,也可以是朋友。角色不是互斥的,而是叠加的。
2.2 中继节点(Relay Node)—— 网络的传声筒
中继节点是Mesh网络的基石。没有它,消息就只能在一对一之间传递,根本组不了网。
中继节点做的事情很简单:收到一条消息,检查是不是发给自己的。如果不是,就重新广播出去。这样一跳接一跳,消息就能覆盖整个网络。
我在做智能照明项目时,遇到过一个问题:灯装在走廊两头,中间隔了好几堵墙。直接通信根本连不上。后来把走廊中间的几盏灯配置成中继节点,消息就能从A传到B了。
避坑指南:中继节点会消耗更多电量,因为它要不停地监听和转发。电池供电的设备,我一般不建议开启中继功能。我曾经有个项目,客户把门磁传感器也开了中继,结果电池两周就耗光了。
中继节点有几个关键参数:
| 参数 | 说明 | 我的建议 |
|---|---|---|
| TTL(生存时间) | 消息最多能跳多少跳 | 默认127,室内场景设到10-20就够了 |
| 中继重传次数 | 一条消息重复广播几次 | 2-3次,太多会拥塞 |
| 中继重传间隔 | 两次重传之间的等待时间 | 10-50毫秒,看网络规模 |
2.3 代理节点(Proxy Node)—— 连接两个世界
代理节点解决了一个实际问题:手机怎么跟Mesh网络通信?
手机通常只支持传统的GATT协议(就是咱们平时连蓝牙耳机用的那个),它不认识Mesh的广播包。代理节点就是那个「翻译官」——它一边用GATT跟手机通信,一边用Mesh广播跟网络里的其他节点通信。
说白了,代理节点就是个协议转换器。
我个人习惯在网关设备上开启代理功能。比如智能家居的智能音箱,它既要跟手机App通信,又要控制Mesh网络里的灯和开关,代理节点这个角色再合适不过了。
注意:一个Mesh网络里至少需要有一个代理节点,否则手机App连不上网络。但也不宜太多,2-3个就够了。太多代理节点会增加网络开销。
2.4 朋友节点(Friend Node)—— 低功耗设备的守护者
朋友节点是专门为低功耗节点服务的。它俩是一对一绑定的关系。
低功耗节点(后面会讲)大部分时间都在睡觉。朋友节点负责帮它收消息,等它醒了再一次性转交给它。
你可以把朋友节点想象成低功耗节点的「秘书」——老板(低功耗节点)睡觉时,秘书(朋友节点)帮忙接电话。老板醒了,秘书把电话内容汇报一遍。
朋友节点需要满足几个条件:
- 不能是低功耗节点(废话)
- 有足够的存储空间缓存消息
- 通常建议用市电供电的设备
我在做智能门锁项目时,门锁是电池供电的,需要低功耗。我就让旁边的智能灯(一直通电)当朋友节点。门锁每隔几秒醒来一次,从朋友节点那里拿消息。这样门锁的电池能用一年多。
2.5 低功耗节点(Low Power Node, LPN)—— 能省则省
低功耗节点是Mesh网络里的「节能标兵」。它大部分时间处于休眠状态,只在需要时才醒来。
低功耗节点的工作模式很有意思:
- 休眠:关闭射频,几乎不耗电
- 醒来:打开射频,检查朋友节点有没有消息
- 处理:如果有消息就接收,没有就继续睡
低功耗节点有几个关键参数:
| 参数 | 说明 | 典型值 |
|---|---|---|
| 轮询间隔 | 多久醒来一次检查消息 | 100ms - 10s |
| 好友列表大小 | 最多能绑定几个朋友节点 | 1-3个 |
| 接收窗口 | 醒来后等待消息的时间 | 10-100ms |
经验之谈:轮询间隔设得太短(比如100ms),省电效果不明显。设得太长(比如10秒),消息延迟会很大。我一般建议传感器类设备设1-2秒,门锁类设3-5秒。
2.6 五种角色的关系图
下面这张图展示了五种角色在Mesh网络中的位置和关系。我特意把朋友节点和低功耗节点的绑定关系画了出来,这是最容易搞混的地方。
2.7 角色组合的常见场景
实际项目中,一个设备往往身兼多职。我整理了几种常见的组合:
| 设备类型 | 角色组合 | 原因 |
|---|---|---|
| 智能灯泡(市电) | 节点 + 中继 + 朋友 | 一直通电,适合转发和缓存 |
| 智能开关(电池) | 节点 + 低功耗 | 需要省电,不参与转发 |
| 智能音箱(网关) | 节点 + 代理 + 中继 | 需要连接手机,也要转发消息 |
| 门磁传感器(电池) | 节点 + 低功耗 | 偶尔上报状态,大部分时间休眠 |
重要提醒:低功耗节点不能同时是中继节点。你想想看,中继需要一直监听广播,低功耗要睡觉,这两个角色是冲突的。我在项目评审时经常看到新人犯这个错误。
2.8 小结
五种角色各有各的使命。中继负责传话,代理负责翻译,朋友负责代收,低功耗负责省电,普通节点负责入网。理解这些角色,是读懂Mesh组网原理的第一步。
嗯,这里要注意:角色不是固定的。同一个设备,在不同场景下可以切换角色。比如一个灯泡白天当中继,晚上进入低功耗模式。这种灵活性,正是蓝牙Mesh强大的地方。