APP下载

LoRaWAN物联网监测系统的快速实现

2021-10-27黄一栋

中国新技术新产品 2021年15期
关键词:应用层中间件开源

黄一栋

(厦门大洋通信有限公司,福建 厦门 361000)

0 引言

随着万物互联的到来,越来越多的无线通信终端产品走入大众的视野,这些产品在短距离[1]应用方面大都以Wi-Fi、Zigbee、BLE为主,长距离应用方面大都以NBIOT、Sigfox、LoRaWAN为主。不同的无线技术有不同的应用领域,基于物联网的特殊性、复杂性以及多样性,利用无线技术来从原型开发到实现一个可用的物联监测系统需要较长的时间,而这时间可能会影响最终项目的落地时间甚至落后竞争对手。

软件工程上提倡DRY原则[2],因此寻找一种能快速开发出可用的物联网监测系统对物联网厂商来说尤为重要。

得益于LoRaWAN设备通信标准,网关通信标准。不同家的终端产品、网关可以在不同平台上混用。对用户而言,终端和网关选择性多样,不用绑定固定厂家。因此涌现了很多开源的LoRaWAN终端、网关和网络服务器,这些开源为LoRaWAN的物联网监测系统提供了极大的便利,缩短了开发一个可用的物联网监测系统的开发时间和开发成本。

1 LoRaWAN系统架构

LoRaWAN系统架构图1所示,主要由终端、网关和服务器组成。

图1 LoRaWAN系统架构图

LoRaWAN终端:作为感知探测层,用于采集现场数据,执行现场指令,是系统末端的执行器,也是LoRaWAN系统中个数最多的角色,终端按LoRaWAN规范细分为3类,含ClassA、ClassB以及ClassC,各适用于不同实时性、功耗要求的场合里,电池产品大部分以ClassA为主,实时受控产品一般以ClassC为主。

LoRaWAN网关:网关作为终端和网络服务器的桥接,在LoRaWAN系统里担当转发透传的角色,不做设备管理等,不像Zigbee/BLE Mesh的入网管理都是直接在网关设备上进行承担处理。

LoRaWAN服务器:分为网络服务器和应用服务器,其中网络服务器用于终端设备的管理、网关的注册管理以及对终端产品进行自适应速率调节等,应用服务器侧重在最终产品的应用属性可视化展示,将美观的UI呈现给用户。

2 LoRaWAN监测系统各组件的快速实现

2.1 LoRaWAN终端的快速实现

LoRaWAN终端前几年主要以MCU+LoRa RF IC来实现,其中RF IC主要使用Semtech的sx1276、sx1262等,也有SIP封装的方案如上海翱翔的ASR6501、ASR6502,台湾群登的S76S、S78S,基于如上方案设计的无线模组因芯片体积关系模组都较大,因此选型当下最新的SoC LoRa芯片STM32WLE5CC, 该芯片基于ARM Cortex-M4内核,256Kbytes Flash,支持LoRa/FSK调制方式。温湿度传感器选择中科银河芯的国产型号GXHT30,该型号软硬件完全兼容国外SHT30型号。得益于STM的STM32CubeMX软件,开发者可以很快地创建基于STM32WL的可用工程模板。终端硬件框图如图2所示。

图2 LoRaWAN终端框图

硬件无线模组上,针对不同国家适用的频段不同,分为低频频段和高频频段2个版本,硬件区别主要在芯片天线出口、RF匹配线路上以及所用天线的差异,该部分基本可以参考STM32WL的参考线路进行布局。

LoRaWAN软件上有基于不同硬件平台的参考实现,LoRaWAN联盟对此提供了开源参考实现,该方式相比Zigbee/BLE Mesh等而言让开发者更容易快速上手并从零实现一个可用的LoRaWAN产品,目前市面上的LoRaWAN商用产品也都是参考LoRaWAN联盟的参考实现,该参考实现放在github的开源仓库里,在开源仓库里直接搜索LoRaMacnode名称即可找到。

LoRaWAN参考实现提供了入网功能,入网后的上下行功能以及LoRaWAN Mac层的参考实现,其他方面的功能实现,如OTA功能,需要开发者自行制定统一的应用层协议。得益于STM32WLE5CC的256KBytes Flash,用户可以很方便地基于内部Flash实现在线OTA功能,无须再额外添加外部Flash。对应用层,LoRaWAN标准不像Zigbee有针对应用层协议定义了Zigbee Cluster Library,简称ZCL[3],ZCL里面的定义详细到开关灯的应用层指令如何构造。BLE Mesh也和Zigbee一样对应用层进行定义,BLE Mesh为应用层协议定义的规范为Model层规范,该规范同样对如开关灯的应用指令构造进行了详细定义。对应用层进行统一规范有助于不同家的设备可以相互兼容,如A家的开关灯可以识别B家的开关按钮。LoRaWAN标准只针对Phy层和Mac层进行定义,上层的应用层没有进行规范,应用层需要由实现者来定义,应用层协议的定义主要侧重在编解码方面,该部分用于平台和设备识别要交互的应用层指令。一种可用的应用编解码格式如下表1和表2所示。

表1 应用层上行包指令帧格式

表2 应用层下行包指令帧格式

上行指令格式如下。该格式可以用在大部分情况,特别是传感监测场合,通过事先对ReportType约定定义好,如该字段为1代表温度类型,2代表湿度类型等,按这样就可以基于此不断扩展新型传感器的上报支持。

下行指令格式如下。

通过对CmdType进行约定,如该字段为1代表开,为0代表关,来满足该格式不同下行指令的需求,同时具有对新指令需求的扩展性。

2.2 LoRaWAN网关的快速实现

LoRaWAN网关在LoRaWAN系统中主要作为终端和服务器的桥接中介,负责接收来自终端设备的上行数据,将其进行IP化传给网络服务器,同时负责接收网络服务器的下行指令并下发给终端。网关硬件都是基于Semtech的SX1301/SX1302,Semtech提供了基于Linux系统的驱动移植参考以及网关参考板,市面也有很多成熟网关现成SX1301模块,通过搭配树莓派可以很快地搭建一个可用的LoRaWAN网关[4],同时也有很多商用的现成网关。网关的参考实现除了提供驱动模块的实现,同时也提供了网关和网络服务器通信规约的实现,现有市面上的LoRaWAN网关都支持Semtech定义的网关和网络服务器的通信规约,各家网络服务器也都支持该通信规约,因此不同家的网关都能支持不同家的网络服务器,网关在使用上就变得简单易用,通过修改网关的网络服务器定向地址就可以轻松连上不同家的网络服务器。网关部分可以直接选用现成sx1301模块配合树莓派或者商用的网关,商用网关一般都有经过相关产品认证如3C、CE、FCC认证等,对出口型的用户来说可以省去很多与认证相关的工作。网关可以直接选用Sandbox 的LoRaGoPort、Semtech的SX1302CSS915GW1、IMST的Lite Gateway等。

2.3 LoRaWAN网络服务器和应用服务器的快速实现

得益于LoRaWAN的开放生态,不管是终端,还是网关,甚至是LoRaWAN网络服务器都有不少开源实现方案供参考,如The Things Network(业界简称TTN)、ChirpStack(前身LoRaServer)、ChirpStack的开源Licence是MIT类型,允许任意二次开发,不用承担商业风险,因此ChirpStack的开源实现在不少商用上能看到其身影。也有部分网关直接把开源的网络服务器集成到网关内部,方便部署在一些不连通外网的场合。

LoRaWAN网络服务器为应用服务器对接提供了HTTP RestAPI[5]、MQTT[6]等多种整合方式,因此应用服务器也能利用很多成熟的框架来进行实现。物联网监测侧重采集终端的数据展示,因此应用服务器功能侧重数据展示,数据展示方面也有很多实现快速整合的开源方案,如Node-Red以及互联网企业运营后台应用的数据可视化系统Grafana[7],Grafana可视化系统开源免费,可自己部署到服务器上,最重要的是Grafana要可视化展示的数据源可以直接在Grafana配置要展示的数据库就可以。因此,只要在网络服务器和应用服务器可视化系统中间,自己开发一个中间件,通过中间件把网络服务器的LoRaWAN终端数据写入数据库就可以完成可视化系统的快速实现。数据库有多种开源实现,如MySql、Mongodb等。

2.3.1 LoRaWAN网络服务器的部署实现

服务器一般都部署在Linux系统,如CentOS、Ubuntu等,早些年部署开源方案的服务器都需要配置一堆环境才能部署好,花费时间可能几小时甚至几天都有。这几年随着docker的兴起,服务器部署与前几年相比,快捷方便了许多,基本1h内就可基于docker部署运作起来。如下以开源ChirpStack服务器在Ubuntu的部署实现为例。

克隆服务器docker资源并进入下载的目录

在ChirpStack上注册网关设备后,随后在网关的配置文件中修改网络服务器的定向地址到该部署服务器的地址后,网关即可连接上部署好的网络服务器。

给终端设备供电并开机,终端设备会自行通过网关和网络服务器进行交互并完成入网操作,随后按周期上报当前状态数据。

2.3.2 中间件的快速实现

ChirpStack网络服务器提供了MQTT对接支持,因此中间件可以通过实现MQTT Client来订阅服务器的数据,基于此中间件便可以通过订阅相应的MQTT主题来获得LoRaWAN终端上报的状态数据。

中间件需要订阅的Topic规则如下。

中间件可以通过很多种开发语言来实现,如C#、Golang、JavaScript等,使用基于JavaScript的NodeJS可以很快地实现一个MQTT中间件,该中间件主要功能为从网络服务器订阅LoRaWAN终端的上报数据,并将其写入MySql数据库中以供应用服务器的可视化系统展示使用。

2.3.3 应用服务器展示系统的部署实现

应用服务的可视化展示系统使用开源方案Grafana来快速实现,Grafana开源可视化展示系统的部署实现也和网络服务器一样易用快捷,仅需几个步骤就可以部署运行起来,如下以Grafana部署到Ubuntu服务器上为例。

在服务器上部署组件

通过运行sudo /bin/systemctl start grafana-server启动Grafana展示系统,在浏览器输入服务器IP地址加端口号3000后即可看到展示系统。

配置Grafana可视化系统要展示的数据源为MySql,新建要展示的温度和湿度DashBoard展示面板,同时对展示面板要展示的属性和MySql的数据字段进行关联后即可进行展示,LoRaWAN温湿度终端的展示效果如图3所示。

图3 LoRaWAN终端当前最新温度湿度信息展示

该系统还可以根据不同时间维度来查看历史数据,如最近一周、最近一个月、最近一年等,很适合物联网监测数据的可视化及分析。

3 结论

该文提出的基于无线LoRaWAN物联网监测系统的快速实现,详细说明了LoRaWAN终端模块的软硬件实现方法以及提供了一种可用于不同传感类型监测的统一可拓展应用层通信协议,提供了LoRaWAN网关的快速实现方法以及几种可用现成网关参考,对网络服务器的开源实现进行说明以及实际部署运行说明,最后对应用服务器可视化监测系统快速实现的中间件实现方法进行说明,并对应用监测展示系统的最终实际部署运行进行说明,物联网技术特别是无线物联网方面存在复杂多样性、细分领域繁多、开发周期长的特点,希望该文能为快速切入物联网系统开发,特别是LoRaWAN物联网的爱好者开发者提供参考。

猜你喜欢

应用层中间件开源
五毛钱能买多少头牛
RFID中间件技术及其应用研究
基于VanConnect中间件的设计与开发
基于分级保护的OA系统应用层访问控制研究
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
新一代双向互动电力线通信技术的应用层协议研究
开源计算机辅助翻译工具研究
物联网技术在信息机房制冷系统中的应用
中间件在高速公路领域的应用