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网络里的「节能标兵」。它大部分时间处于休眠状态,只在需要时才醒来。

低功耗节点的工作模式很有意思:

  1. 休眠:关闭射频,几乎不耗电
  2. 醒来:打开射频,检查朋友节点有没有消息
  3. 处理:如果有消息就接收,没有就继续睡

低功耗节点有几个关键参数:

参数 说明 典型值
轮询间隔 多久醒来一次检查消息 100ms - 10s
好友列表大小 最多能绑定几个朋友节点 1-3个
接收窗口 醒来后等待消息的时间 10-100ms

经验之谈:轮询间隔设得太短(比如100ms),省电效果不明显。设得太长(比如10秒),消息延迟会很大。我一般建议传感器类设备设1-2秒,门锁类设3-5秒。

2.6 五种角色的关系图

下面这张图展示了五种角色在Mesh网络中的位置和关系。我特意把朋友节点和低功耗节点的绑定关系画了出来,这是最容易搞混的地方。

蓝牙Mesh五种节点角色关系图 中继节点 Relay Node 代理节点 Proxy Node 朋友节点 Friend Node 低功耗节点 Low Power Node 普通节点 Node 手机App GATT连接 绑定关系 GATT代理 说明: • 一个节点可以同时具备多个角色(如中继+朋友) • 低功耗节点必须与朋友节点绑定才能正常工作 • 手机App通过代理节点(GATT)接入Mesh网络

2.7 角色组合的常见场景

实际项目中,一个设备往往身兼多职。我整理了几种常见的组合:

设备类型 角色组合 原因
智能灯泡(市电) 节点 + 中继 + 朋友 一直通电,适合转发和缓存
智能开关(电池) 节点 + 低功耗 需要省电,不参与转发
智能音箱(网关) 节点 + 代理 + 中继 需要连接手机,也要转发消息
门磁传感器(电池) 节点 + 低功耗 偶尔上报状态,大部分时间休眠

重要提醒:低功耗节点不能同时是中继节点。你想想看,中继需要一直监听广播,低功耗要睡觉,这两个角色是冲突的。我在项目评审时经常看到新人犯这个错误。

2.8 小结

五种角色各有各的使命。中继负责传话,代理负责翻译,朋友负责代收,低功耗负责省电,普通节点负责入网。理解这些角色,是读懂Mesh组网原理的第一步。

嗯,这里要注意:角色不是固定的。同一个设备,在不同场景下可以切换角色。比如一个灯泡白天当中继,晚上进入低功耗模式。这种灵活性,正是蓝牙Mesh强大的地方。