ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LoRaWAN通用网关技术拆解:从射频链路到智能门锁实践

LoRaWAN通用网关技术拆解:从射频链路到智能门锁实践 去年底接手一个园区改造项目时我被网关数量这件事搞得很烦水电表、智能门锁、烟感报警三个子系统分别配了三个品牌的三台专用网关弱电机柜里设备叠了三层电源、网线、管理账号各自一套现场施工的兄弟已经快骂人了。后来我们换成了LEXI推出的首款LoRaWAN通用IoT网关一台设备把三个系统全部收编。这篇文章不聊发布会上的PPT我从射频链路、协议栈、覆盖计算到智能门锁实装把通用网关背后真正值钱的东西拆开讲一遍也给正准备做LoRaWAN项目的朋友一条可以直接照走的路径。1. 为什么通用二字比网关本身更难做很多人以为LoRaWAN是标准协议网关只要把数据包转给网络服务器就行通用是理所当然的事。实际跑过项目的人都知道这套想法在现场根本站不住。标准化解决的是协议帧格式解决不了产品的碎片化。1.1 一个现场的尴尬三套系统配了三台专用网关先说我开头提到的园区项目。水电表厂家配的是他们的集中器网关只认自家报文智能门锁厂商配的网关走的是厂商私有LoRa协议烟感报警那套更离谱虽然也写支持LoRaWAN但网络服务器是厂家自己的云平台你想对接园区统一IoT平台对方只给你开一个HTTP接口数据格式还得自己写解析。结果是弱电机柜里三台网关每台都要独立配网、独立供电、独立维护。项目还没验收IT运维已经准备辞职了三个管理后台三个账号体系三个不同品牌的售后电话。这就是专用网关在真实项目里的样子成本绝不只是硬件那几千块而是每一套系统带来的集成、运维、培训成本。1.2 LoRaWAN看起来标准背后的三个断层LoRaWAN的标准化解决了很多基础问题比如空中协议、加密方式、入网流程但实际部署中至少有三个断层让网关很难做到通用。第一个是频段与信道规划。国内常用470-510MHz欧盟是868MHz北美是915MHz各地区信道上行下行规划不同。就算都在国内有些网关把默认频点写死换一个区域的终端就要重新配置。第二个是网络服务器兼容性。Semtech定义了UDP Packet Forwarder协议但ChirpStack、LoRaWAN NS、各个公有云IoT平台在接入细节上都有差别。第三个是应用层payload。LoRaWAN只管把数据包从终端传到云端数据包里是电表读数还是门锁状态协议栈完全不关心。每个厂商自己定义报文格式通用网关如果不同时做常见协议的解析适配就谈不上真正开工。正因为这三个断层通用网关才不是一句口号它要在硬件频段、协议接入、数据解析三个层面同时做兼容。1.3 通用网关真正要解决的是基础设施化在我看来LEXI做第一款通用LoRaWAN网关切入点不是把硬件做得更强大而是让网关从某个系统的配套硬件变成园区物联的基础设施。就像交换机不属于某个业务系统一样LoRaWAN网关也应该是一个独立存在、长期在线、被统一管理的网络基础设施。这句话听起来简单但对产品设计的要求非常高网关要能同时接入多种协议格式的终端要能把数据转发给不同的网络服务器要在云端掉线时还能靠边缘规则完成本地联动还要支持远程OTA升级否则网关数量一多你根本维护不过来。LEXI这条产品路线的价值恰恰在于把这些问题逐个工程化落地了。2. LoRaWAN网关的硬核底子射频链路到网络协议栈的完整拆解要理解通用网关怎么做出来的先得把LoRaWAN网关的工作原理捋一遍。很多人以为网关像个WiFi路由器把数据转一下就行其实它的工作方式完全不同。2.1 射频前端与天线覆盖能力的物理底座LoRaWAN网关的核心射频芯片主流方案是Semtech的SX1301或者新一代SX1302。SX1302相比SX1301灵敏度更高、功耗更低是当前做网关的首选。它最厉害的地方是8通道并行接收能力每一个通道可以独立解调不同终端、不同扩频因子、不同速率的上行数据包同时还能在一个额外通道上做扫描侦察。所以在半径几公里的范围内即使几十个终端同时上报网关也不会因为碰撞直接丢包。网关射频链路通常包含低噪声放大器、滤波器、射频开关和功放。接收方向上天线收到的微弱信号先经过LNA放大再进行下变频和解调。SX1302的接收灵敏度可以做到约-137dBmSF10/BW125kHz这是什么概念一个典型的LoRa终端发射功率17dBm链路预算可以做到150dB以上在开阔环境传几公里很轻松。但要注意灵敏度是一回事实际能不能收到还取决于天线效率、馈线损耗、安装位置。我在项目中见过一个典型案例同样的网关放在弱电井里和放在室外天线杆上覆盖半径差了将近一半。射频部分最怕的是数字参数看着没问题物理安装一塌糊涂。2.2 数据链路与MAC层八信道并发背后的调度逻辑LoRaWAN的媒体接入控制层和我们熟悉的WiFi、蓝牙完全不同。终端没有先听后说上行数据想发就发冲突靠不同扩频因子和信道来规避。网关的8个信道可以同时接收不同SF的信号相当于8个接收机并行工作这是LoRaWAN能在大规模终端场景下存活的关键。下行链路则是另外一套逻辑。LoRaWAN网关的典型配置是8个上行通道、1个下行通道。下行发送是受限资源所以Network Server在下发命令时必须等待终端打开的接收窗口。LoRaWAN定义了Class A、Class B、Class C三种工作模式设备类别下行接收方式功耗典型场景Class A上行后打开2个接收窗口最低水表、电表、环境传感器Class B定期打开接收窗口信标同步中等对下行有一定实时性要求的设备Class C持续监听下行随时可收最高门锁、路灯控制、充电桩网关扮演的角色是收发调度器终端上行后网关要在几百毫秒内把数据交给网络服务器并缓存服务器的下行指令在正确的时隙发出去。这个时序要求很高网关如果协议栈跑得不够稳经典的只能上不能下问题就来了。2.3 网络层接入NS对接与回传链路设计再往上走网关和网络服务器之间的通信通常是Packet Forwarder协议。Semtech定义了基于UDP的协议格式默认端口1680网关持续上报数据网络服务器下发ACK和下行指令。这是LoRaWAN最经典的组网方式。但实际项目中网络服务器可能是ChirpStack可能是LoRaWAN NS也可能是云厂商的物联网平台。不同平台的接入协议不完全一致有的要求使用MQTT有的支持HTTP有的只能在特定端口收数据。LEXI的通用网关在网络层做了抽象层设计同一个网关可以配置多套网络服务器接口数据进来后按规则转发。这里有一个容易被忽略的点网关回传链路的质量直接影响整个系统的时延。很多项目把网关部署在现场用的是4G回传或WiFi回传网络抖动一大下行指令就迟到。我通常会建议LoRaWAN网关尽量接有线网络如果实在没有条件4G回传的稳定性也要做专项测试。回传是最后一公里里经常翻车的地方。3. LEXI通用网关的通用落地路线硬件、协议与应用三管齐下通用不是靠一个大胆的口号实现的要靠实实在在的工程设计。LEXI这款网关的落地思路我拆成三个层面来看。3.1 硬件层模块化射频前端与多频段支持LEXI硬件上做的最实用的一件事就是把射频前端做成了模块化设计。网关主机本身不绑定某个固定频段而是通过更换射频模块来适配不同区域的LoRaWAN频段规划。国内项目用CN470模块欧洲项目换EU868模块北美换US915模块主板、协议栈、网管系统不用跟着改。这个设计对做产品的团队很有启发。网关硬件平台如果每出一个区域版本就重新画一版主板开发和维护成本会成倍增长。模块化之后供应链可以统一生产备货压力也小很多代理商的库存也灵活了。用户如果是做跨国业务这种架构天然适合。另外LEXI在接口上做了很多通用的细节除了标准RJ45网口还保留了内置4G模块的卡槽、RS485接口、POE供电。尤其是POE供电看起来不起眼在工程现场非常实用——一根网线同时解决电源和回传省掉了在弱电井里找插座的痛苦。RS485接口则让网关可以对接传统工控设备解决LoRa网络和有线设备混合组网的场景。3.2 协议层从LoRaWAN 1.0.4到私有协议的兼容设计LoRaWAN协议本身有多个版本1.0.3和1.0.4在入网流程、某些帧格式细节上有差异。终端固件可能是两三年前的老版本也可能是最新的支持组播的新版本。如果网关只支持某一版协议老终端就没法接。LEXI的做法是在协议栈层对1.0.3、1.0.4做了兼容并且支持OTAA和ABP两种入网方式。OTAA是推荐的入网方式终端用根密钥AppKey与网络服务器完成双向认证之后动态派生NwkSKey和AppSKey。ABP则直接把两个会话密钥写死在终端里省掉了入网流程适合产线上测试但安全性不如OTAA。一个合格LoRaWAN网关这两种都要支持因为有些终端厂商的固件就是只做了ABP。真正体现通用的是对厂家私有协议的支持。很多老设备走的是LoRa调制但MAC层是私有的不是LoRaWAN标准协议。LEXI网关在软件层支持数据透传和插件化解析——数据包上来后可以按内置的协议模板解析也可以通过自定义脚本处理。这样用户在替换旧系统时可以先把私有协议终端接入LEXI网关再平滑迁移到标准LoRaWAN项目改造不用推倒重来。3.3 应用层边缘规则引擎与设备抽象网关如果只做数据转发本质上是傻管道。LEXI比较聪明的地方是塞了一个轻量的边缘规则引擎进去。举个例子园区停车场的道闸系统如果完全依赖云端联动云端一断网车就进不了。有了边缘规则引擎当LoRaWAN终端检测到地磁或者红外信号变化时网关可以通过本地联动规则直接触发道闸或照明设备。这个联动过程不依赖公网时延可以控制在几百毫秒。断电断网的情况下基本功能还能兜住。设备抽象做得也好。网关把不同类型的终端统一建模成标准设备对象上层平台不用关心数据是来自电表还是门锁还是烟感只需要对接LEXI网关的设备管理API。这大幅减少了IoT平台侧的适配工作量。我接触过很多平台开发团队他们最头疼的就是每接一种设备就要写一套协议解析通用网关如果能提前把这层消化掉项目交付速度可以快非常明显。4. 实战侧写用LEXI网关承载一套LoRaWAN智能门锁系统热搜里出现基于LoRaWAN设计智能门锁正好是我最近在做的项目方向。我不展开厂商方案就讲用LEXI网关承载一套LoRaWAN智能门锁系统时技术选型和坑点。4.1 为什么智能门锁是LoRaWAN的绝佳场景门锁这个设备有很多和LoRaWAN高度契合的特性第一它安装在室内尤其是地下室、走廊尽头、铁门后面WiFi信号经常进不去NB-IoT在个别区域覆盖也不稳定第二门锁是电池供电设备要求低功耗LoRaWAN Class A模式平均电流可以做得比NB-IoT低很多第三门锁平时不需要持续大流量通信一天就开关几次门、上报几次事件但要求覆盖范围大适合LoRaWAN第四门锁涉及安全LoRaWAN自带AES-128加密比很多私有无线协议靠谱。和WiFi相比LoRaWAN不需要门锁每次都去连AP不需要复杂的漫游配置和蓝牙相比蓝牙有效距离只有几十米没法做到园区级别的统一管理。LoRaWANB端网关的组合可以覆盖一整栋楼甚至整个园区这是它替代传统门禁联网方案的核心价值。4.2 门锁入网流程与上下行控制链路LoRaWAN智能门锁通常用OTAA入网。具体流程是门锁第一次上电后广播Join Request网关收到后通过Packet Forwarder转发给网络服务器网络服务器通过AppKey校验设备合法性计算会话密钥并通过网关下发Join Accept门锁收到后完成入网之后每次数据交互都使用动态生成的NwkSKey和AppSKey。这个流程里LEXI网关主要承担两个工作一个是物理层接收不管门锁发的是SF10很慢的包还是SF7较快的包8个接收通道都能并行处理不会因为某个门锁靠近网关占用了SF7就影响到远处SF10的接收另一个是下行调度Join Accept必须在门锁打开接收窗口的时候送出去网关的时序调度如果偏差太大终端就会入网失败。在控制链路方面远程开门流程是管理平台下发开门指令给网络服务器网络服务器将指令排入下行队列等待门锁下次上行或接收窗口网关在正确时隙发送下行数据门锁收到后驱动电机开锁并上报开锁结果。整个链路涉及平台、NS、网关、门锁四跳每一跳都可能丢时间所以实际项目里一定要做端到端时延测试而不是只看某一段。4.3 Class选型与低功耗策略远程开门的最后一公里智能门锁的下行实时性要求比较高选Class A还是Class C一直是个争议点。Class A最省电但如果门锁没有上行数据网络服务器要下发开门指令就得等下一次上行事件在纯远程控制场景下可能延迟很长时间。Class C保持持续监听远程开门秒响应但是接收机常开耗电明显上升。很多门锁为了满足远程开门秒级响应的需求又不想牺牲太多续航会把门锁做成定时心跳模式每隔一段时间自动上行一次顺便把下行指令取回来。这个本质上是Class A虚拟在线的折中。另一种做法是LoRaWAN和蓝牙双模近场用蓝牙开门低延迟且省电远程则通过LoRaWAN下发指令门锁在蓝牙未触发时才偶尔上报位置和状态。这样门锁可以长期工作在Class A模式电池续航可以做到一年以上。LEXI网关对这种低上线频率的设备支持得很好因为内部有完善的下行缓存队列终端什么时候冒出来网关就什么时候把积压的指令送出去。4.4 故障处理与联动规则门锁系统里容易忽略的部分门锁项目最容易忽略的是故障处理和联动场景。网关收到门锁的低电量告警防撬告警多次开锁失败数据后边缘规则引擎可以直接联动现场声光报警器。而不是等云平台接到数据后再动这个时延可能是几秒到十几秒现场早就出事了。还可以做超时未关门联动门锁上报开门事件后网关启动一个本地定时器如果5分钟后没有收到关门上报网关可以再次调用本地规则触发物业值班室的声光提示。这个逻辑如果放云端做一旦网络中断就不执行了放在通用的LoRaWAN网关上做至少能保证部分关键规则在断网时仍然可用。这也侧面印证了我前面的观点通用网关的竞争力不在射频参数而在边缘软件能力。5. 部署与验收覆盖计算、天线选址与稳定性调优硬件的底子再好部署阶段做错了效果直接打五折。这一章把我实际做覆盖设计和验收的方法写出来。5.1 覆盖估算从自由空间损耗到实际链路预算LoRaWAN覆盖规划不复杂但很多项目直接凭感觉选点位。我这里给一个可以照用的估算方法。先算自由空间损耗公式是L 20 * log10(距离_km) 20 * log10(频率_MHz) 32.44以国内常见470-510MHz频段为例取频率490MHz覆盖目标1公里。L 20log10(1) 20log10(490) 32.44 0 53.8 32.44约86.2dB。再看链路预算。假设终端最大发射功率按国内微功率设备的50mW EIRP限制来算也就是17dBm网关接收灵敏度取约-137dBm那么上下行链路预算约154dB。1公里自由空间损耗86.2dB就算加上20dB的建筑穿透损耗和15dB的阴影衰落余量总共121.2dB离154dB还有约33dB的富余覆盖1公里是比较宽裕的。这个算法要特别注意两点一是1公里要考虑地球曲面实际园区和楼宇场景基本不用考虑但楼层内的穿透损耗很关键混凝土楼板每层可能有20dB以上的损耗信号跨层覆盖会明显变弱。二是网关和终端都在室内时不要套用室外开阔地的经验值最好做一次现场打点测试。我的习惯是用一台手持终端沿着项目边界打点记录到场强最弱的几个点位然后反过来决定网关天线安装位置而不是在CAD图纸上画个圆就完事。5.2 天线工程与安装要点覆盖成败的关键都在物理细节天线安装对LoRaWAN网关来说重要性不亚于网关本身。LoRa使用的频率是Sub-GHz波长相对较长天线尺寸也大但原理和2.4G频段是一样的极化方向要匹配、天线要远离金属遮挡、馈线越短越好。我见过很多把网关天线直接扔在弱电井里的项目信号被铁皮柜子挡住覆盖半径缩到只有几十米然后工程商怪网关不行。实际上一根安装在弱电井外、垂直极化、离墙面30厘米以上的天线覆盖效果立竿见影。如果是室外园区场景优先把天线装到屋顶或高杆上用低损耗馈线引下来馈线长度控制在10米以内衰减才会比较小。安装后还要用测试终端实际验证。我的方法是绕着园区走一圈记录每个点的RSSI和SNR。正常情况下SNR大于0说明解调没问题RSSI只要在灵敏度门限之上数据就能解出来。如果某些点位RSSI很好但SNR很低说明有同频干扰需要查一下是不是有别的无线设备占了相近频点。5.3 上线后的稳定性指标与排查手段网关上电不代表就完事了稳定运行才是验收关键。我一般会盯几个指标丢包率、ADR平均SF分布、下行成功率、网关掉线率。丢包率放长时间看LoRaWAN本身有确认机制LoRaWAN节点可以通过MAC命令上报链路质量网关侧也能统计收到帧的数量。如果一个区域丢包率长期超过5%基本可以判断是覆盖盲区或干扰源。ADR平均SF分布能反映整体链路质量如果大部分终端被ADR调到SF12说明信号偏弱如果都集中在SF7说明信号偏强对容量有好处。下行成功率是最容易出问题的地方如果发现经常失败先看是不是网关和网络服务器的时钟不同步导致下行窗口错位再看占空比是不是被限住了。排障工具也有讲究。网关后台的接收日志能看到每一个上行包的RSSI、SNR、频点、SF这是第一手的定位数据。再辅助网络服务器的数据导出基本能把终端本身问题网关覆盖问题云端配置问题区分开。最怕的是两眼一抹黑直接到现场换设备大概率白折腾。6. 踩坑记录与经验沉淀最后聊几个我在LoRaWAN项目中踩过的坑每一个都是真金白银换来的。6.1 下行数据的最后一公里占空比与开门失败第一个坑是下行开门指令发不出去。项目里遇到门锁偶尔收不到远程开门指令当场排查发现网关日志显示TX frequency not allowed或者P2P TX timeout。原因是LoRaWAN在不同频段有占空比限制网关要遵守当地无线电管理要求同一个频率不能持续发送。我一开始把网关的下行配置成固定频点结果连续开几次门之后网关就被占空比算法限制住了后续下行全部排入队列等冷却。解决办法是合理配置下行信道的频率集合让网关在不同频点之间轮询必要的时候降低下行重试频率。另外网络服务器的下行队列一定不要无限制重发设置2-3次重试就够了否则网关会一直被缓存的下行数据占满新指令插不进去。6.2 多网关重复上行与时钟同步你以为丢包其实是重复收包第二个坑是数据到底收到了没有。园区里部署了两台LEXI网关同一个终端的同一个上行包两台网关都收到了而且各自打上了自己的时间戳。如果网络服务器没有做去重平台侧会看到两条重复数据业务判断就可能出错。这是LoRaWAN的正常机制多个网关收到同一包能提升概率靠的是网络服务器去重。问题在于有些私有NS方案压根没做去重逻辑或者去重依赖网关时钟必须精准同步。所以部署多网关项目时第一件事就是把每台网关的NTP校时配好并且在NS侧确认重复包过滤策略不然你在后台看到丢包率很高其实只是数据重复在一台网关里被计成了新包虚惊一场。6.3 从项目到产品通用网关还需要继续补什么用LEXI网关做完这个项目我越来越觉得通用网关的竞争未来不在能不能接LoRaWAN而在运营层面。远程OTA升级是否可靠、网关自身的健康状态能不能上抛、批量配置工具好不好用、密钥管理是否安全——这些才是决定大型项目能不能规模化落地的东西。个人体会是通用网关做出来只是第一步真正难的是让网关在网络波动、设备异常、平台切换时还能保持稳定且能被远程运维。就好比一个靠谱的物业经理平时看着不起眼停水停电的时候才知道他靠不靠谱。LEXI这款网关算是把LoRaWAN通用化的路走通了大半但后面的场景还有很长比如多协议融合、边缘AI识别、更细粒度的安全策略都值得继续投入。最后分享一个小技巧给网关命名和做资产台账时一定把安装位置、天线高度、固件版本、所属项目都写清楚。等你在运维阶段看到几十台网关数据异常时有一个完整的台账排查效率能差出好几倍。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进