2. LoRaWAN协议栈与云平台接入接口

LoRaWAN并不是单一协议,而是一套分层协议体系。终端节点到云平台之间,数据要依次穿过物理层、MAC层、LoRaWAN应用层,再经网关汇聚后通过北向接口进入网络服务器与应用服务器。理解这条链路的分层职责,是后续做入网配置、Class选型和云平台对接的前提。

物理层:LoRa调制与信道参数

物理层由LoRa调制技术承担,核心参数是扩频因子SF、带宽BW、编码率CR和载波频率。SF越大,扩频后每个符号携带的码片越多,接收灵敏度越高、传输距离越远,但相同数据量占用的空中时间越长。以中国区常用参数为例:CN470频段、BW=125kHz、CR=4/5,SF7时速率约5.5kbps,SF12时约250bps,两者相差约20倍。这意味着同一包数据在SF12下的空中时间可能是SF7的数十倍,直接影响网关容量和终端功耗。

物理层还规定了信道划分。CN470采用上行470.3~489.3MHz、下行500.3~509.3MHz的频分双工结构,共96个上行信道,每信道200kHz间隔。终端不能随意占用全部信道,必须按LoRaWAN规定的信道计划跳频发送,以规避干扰并满足占空比限制。

MAC层:帧结构与入网流程

MAC层定义帧格式、入网方式、确认重传和自适应速率。LoRaWAN帧由前导、PHY头、PHY载荷和CRC组成,PHY载荷内再封装MAC头、帧端口、帧载荷和MIC。MIC是4字节消息完整性码,用NwkSKey和AppSKey分别校验网络层与应用层,防止伪造和篡改。

入网分两种方式。OTAA(空中激活)由终端发送Join-Request,携带DevEUI、AppEUI和DevNonce;网络服务器校验后返回Join-Accept,下发DevAddr、NwkSKey和AppSKey。ABP(人工激活)则把DevAddr和两个会话密钥直接烧录进终端,跳过入网交互。OTAA更安全,密钥可轮换;ABP部署简单,但密钥固定,一旦泄露需重新烧录。实际工程中优先选OTAA。

入网成功后,终端按Class工作。Class A是强制基础类:每次上行后开两个短接收窗口,RX1在发送结束后1秒,RX2在2秒,窗口关闭即休眠,功耗最低但下行只能被动等待。Class B在Class A基础上增加周期性Ping时隙,由网关下发信标同步,实现定时下行。Class C几乎持续接收,只在发送时短暂关闭接收,下行延迟最低,但功耗最高,通常用于市电供电设备。

LoRaWAN 协议栈分层与云平台接入接口 终端节点 End Device 应用层 传感器/执行器 MAC层 帧/MIC/入网 物理层 LoRa调制 射频前端 SX1276/1262 LoRa网关 Gateway 射频收发 多信道监听 包转发 UDP/IP封装 网络服务器 Network Server 去重/ADR MIC校验 会话管理 密钥分发 应用服务器 Application Server 数据解码 Payload解析 业务集成 云平台 IoT Platform 北向接口 MQTT/HTTP API 南向接口 GWMP/UDP 设备管理/规则引擎 LoRa射频 GWMP 数据转发 北向推送 数据流:终端 → LoRa射频 → 网关 → GWMP/UDP → 网络服务器 → 应用服务器 → 北向接口 → 云平台

入网流程的实际操作要点

以OTAA为例,终端上电后先发送Join-Request,网络服务器在收到后校验DevEUI与AppEUI是否在册,并检查DevNonce是否重复。若通过,服务器生成DevAddr和会话密钥,通过Join-Accept下发。终端收到后,用AppKey解密得到NwkSKey和AppSKey,入网完成。此时终端可开始发送上行数据。

实际配置中,DevEUI通常由芯片厂商固化,AppEUI由平台分配,AppKey需在终端和平台两侧一致。若入网失败,优先检查AppKey是否匹配、DevNonce是否被重用、网关是否在线。常见现象是终端反复发送Join-Request但收不到Join-Accept,此时应查看网关日志中是否有该终端的入网请求记录。

云平台北向与南向接口

云平台与LoRaWAN网络之间通过两类接口交互。南向接口面向网关,典型协议是GWMP(Gateway Message Protocol),基于UDP,网关把收到的LoRa帧封装成JSON或二进制格式上报给网络服务器,同时接收下发的下行帧。北向接口面向应用,常见形式是MQTT订阅和HTTP API。应用服务器把解码后的业务数据通过MQTT主题推送给云平台,云平台再通过规则引擎转发到数据库、告警系统或可视化大屏。

以MQTT为例,终端上报的温度数据经应用服务器解码后,可发布到application/1/device/<DevEUI>/rx主题,云平台订阅该主题即可获取数据。下行控制则通过application/1/device/<DevEUI>/tx主题发布,经网络服务器排队后由网关在合适窗口下发。这种发布/订阅模式解耦了设备侧与应用侧,便于横向扩展。

选型建议:电池供电的传感器优先选Class A;需要定时下发配置且对功耗有要求的场景选Class B;市电供电且要求低延迟下行的执行器选Class C。入网方式优先OTAA,仅在产线批量烧录且无法联网激活时使用ABP。

三类Class的对比与适用场景

特性Class AClass BClass C
接收窗口上行后两个短窗口Class A + 周期Ping时隙几乎持续接收
下行延迟高(需等下次上行)中(按信标周期)低(随时可收)
功耗最低中等最高
典型供电电池电池/混合市电
适用场景水表、气表、环境监测路灯控制、定时抄表执行器、实时控制

需要强调的是,Class选择不是终端单方面决定的,网络服务器和网关也要支持对应模式。Class B依赖网关周期性发送信标,若网关不支持Beacon,终端无法进入Class B。Class C则要求网关保持接收通道常开,对网关资源占用较大。因此在实际项目中,Class选型要结合终端功耗预算、网关能力和业务下行实时性要求综合判断。

协议栈与接口的对应关系

把分层和接口串起来看:物理层和MAC层运行在终端与网关之间,负责无线传输和帧校验;网关到网络服务器走南向接口,完成帧的汇聚与转发;网络服务器到应用服务器走内部接口,完成会话管理和数据解密;应用服务器到云平台走北向接口,完成业务数据交付。每一层都有明确的职责边界,排障时按层定位能快速缩小范围。例如终端入网失败,先查物理层信号质量,再查MAC层密钥,最后查南向接口网关是否在线。

掌握这条分层链路后,后续配置网关、创建产品、调试入网和对接云平台时,就能清楚每一步操作落在哪一层、影响哪些参数,而不是盲目试错。