1. 协议设计背景与核心需求
在智能照明领域,蓝牙BLE技术因其低功耗、低成本的特点成为灯控系统的理想选择。然而,标准SIG Mesh协议栈的复杂性常常让中小型项目望而却步——它需要至少256KB Flash和64KB RAM的资源占用,这对于大批量部署的灯控节点来说成本过高。我们设计的轻量化协议正是为了解决这个痛点。
这个协议最核心的设计目标是:在保持蓝牙4.2/5.0兼容性的前提下,用20%的资源实现80%的灯控核心功能。实测表明,协议栈仅需32KB Flash和8KB RAM即可稳定运行,这使得采用5元级蓝牙芯片(如nRF52810)的大规模部署成为可能。
关键设计决策:放弃通用性换取极致轻量。我们砍掉了Mesh标准中的Provisioning、Friendship等复杂特性,专注于灯控场景真正需要的组网、控制和状态反馈功能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 协议架构深度解析
2.1 网络隔离机制
双层隔离设计是本协议的安全基石:
- NetID网络层隔离:相当于小区的物理围墙,不同NetID的设备完全不可见。我们采用2字节设计(而非常见的4字节),既保证65535个独立网络够用,又节省了帧长度。
- ProtocolAccount用户层隔离:相当于住户的门禁卡系统。同一物理网络下(如商业综合体),不同商户的灯控系统通过4字节账户完全隔离。这里采用32位是考虑到需要支持百万级用户ID。
实际部署中,网关会维护两个哈希表:
- NetID路由表:用于快速判断是否处理入站数据包
- ProtocolAccount-节点映射表:用于精确查找目标设备
2.2 地址分配策略
固定网关地址(0x0002)的设计看似简单,实则经过深思熟虑:
- 消除动态网关发现的协议开销
- 简化节点逻辑:永远向0x0002发送注册/心跳
- 预留0x0000-0x0001为未来多网关扩展
节点地址池(0x0003-0xFFFE)采用动态分配+LRU回收策略:
- 新节点注册时,网关从空闲池分配最小可用地址
- 节点离线超时(10分钟)后,地址回到空闲池尾部
- 地址耗尽时,自动回收最久未使用的地址
2.3 传输可靠性保障
包序号(SeqNum)与MIC校验的组合拳解决了无线传输三大难题:
乱序问题:
c复制// 接收
