前言 尽管现在云服务器已经比较成熟,比如阿里云或者腾讯云,但是,在物联网领域的一些特定的工业应用场景下,用户可能更希望能够将数据传输到自己的服务器。这时候,MQTT的重要性就体现出来了。 本文介绍在LoRaWAN组网网络中,如何在自己的应用服务器上,通过MQTT订阅来获取到节点上报的数据。
一、LoRaWAN典型网络结构 为了让大家更清楚MQTT的具体位置,我们需要先对LoRaWAN组网的典型网络结构进行介绍。 图 1 LoRaWAN网络结构
图1是一个完整的LoRaWAN网络结构。从图1中我们很清楚的可以看到,一个完整的LoRaWAN网络由以下三个角色组成: l 终端设备(End Nodes) l 网关(Concentrator/Gateway) l NS服务器(Network Server) 虽然我们很清楚的知道了LoRaWAN网络中的角色组成,但是各个角色的作用是什么,它们分别完成什么工作呢? 终端设备就是我们常说的节点。终端设备负责数据采集,将采集到的数据以无线信号的形式传递出去,这个数据是经过加密处理的。 网关负责接收终端传递过来无线信号数据。因为终端对数据进行了加密,网关是无法知道接收到的数据内容。网关会将接收到的数据直接转发给NS服务器。 NS服务器接收到网关转发的数据,NS会根据数据中的身份信息使用对应的终端密钥对数据进行解密,解密之后就得到了终端采集的数据信息。 RAK的商业网关内部集成NS服务器,也就是说,RAK的商业网关既承担网关角色又承担的NS服务器角色。
二、MQTT功能简述 那么,MQTT又是如何工作的呢?我们通过图2来理解MQTT的工作原理。 图 2 MQTT的工作原理
一个MQTT网络中也分为三个角色: 发布者(Publisher) 订阅者(Subscriber) MQTT Broker 我们从字面意思上可以看出,发布者(Publisher)实际上就是负责发布信息,订阅者(Subscriber)实际上负责收集发布者发布的信息。发布者应该将信息往哪里发布,订阅者又需要到哪里订阅信息呢?这个时候就需要MQTT Broker,它实际上就是一台MQTT服务器。 我们可以将MQTT Broker理解为一个新闻发布的网站,发布者理解为新闻编辑人员或者新闻发布人员,将订阅者理解为浏览、查看新闻的用户。
三、在LoRaWAN网络中,如何通过MQTT订阅来获取到LoRa节点的数据? 我们已经清楚了LoRaWAN网络的工作原理,我们也清楚了MQTT的工作原理,那么我们如何通过MQTT来获取节点的数据呢?可以参见图3。 图 3 MQTT订阅获取LoRa节点的数据的原理图
有些LoRaWAN网关仅仅是网关,但有些LoRaWAN网关内置服务器(NS)。比如,RAK瑞科慧联的商业网关既是LoRaWAN网关的角色,又是NS的角色。对于这种类型的LoRaWAN网关而言,我们就可以按照图3的方式来进行组网,构成LoRaWAN+MQTT的网络组合。 在我们的LoRaWAN+MQTT的网络组合中,NS是做为一个发布者,将接收到的LoRa节点数据发布到MQTT Broker上,用户自己的应用程序只要做为订阅者,就可以非常便捷的获取到LoRa节点的数据信息了。 进一步的,我们还可以思考这个问题:在LoRaWAN网络中,RAK瑞科慧联的商业网关既是LoRaWAN网关的角色,又是NS的角色。那么在MQTT的网络中,RAK瑞科慧联的商业网关就只能是发布者的角色吗?它能不能扮演MQTT Broker的角色呢? RAK瑞科慧联的商业网关内部集成一个MQTT Broker,也就是说,RAK瑞科慧联的商业网关也能兼职MQTT Broker的角色。使用内部集成有MQTT Broker的LoRaWAN网关,比如RAK瑞科慧联的商业网关,用户无需其他部署,就能在用户自己的应用服务器上通过MQTT订阅到LoRa节点上报的数据信息了。
结语 本文介绍了LoRaWAN网络结构的基本概念,MQTT功能的基本工作原理,以及MQTT如何在LoRaWAN网络的基础上进行组网,从而在用户自己的应用服务器上通过MQTT订阅获取到LoRa节点上报的数据信息。 本文仅仅是介绍工作原理,具体如何通过MQTT获取到LoRa节点的数据的应用实例,请期待我们的接下来的系列**。
|