LoRa节点与网关内置的MQTT服务器之间的数据传输

前言

在前面的文章里,如何在mqtt.fx客户端订阅节点数据我们已经介绍了在RAK瑞科慧联的LoRa网关的网页上,如何设置MQTT的Topic参数,在mqtt.fx客户端上进行设置,以订阅到LoRa节点的数据。

本文介绍如何测试我们之前的设置是否成功,LoRa节点与MQTT服务器之间的数据传输是否正常。

如果希望了解LoRa网关的其他获取数据的方式,还可以参见文章《没有互联网,如何本地获取到LoRaWAN的终端数据?》、《两步走,让自己的LoRaWAM网关与阿里云连线》、《超低成本get一项新技能:在阿里云上进行IoT系统开发》、《LoRa节点如何以OTAA方式入网TTN服务器?》、《LoRa节点如何以ABP方式入网TTN服务器?

 

一、LoRa节点发送数据到LoRaWAN网关内置的MQTT服务器

LoRa节点成功join之后,我们在LoRa节点侧发送一条信息,比如“Hello Rakwireless”。

由于LoRa节点需要接收16进制的数据,因此,我们将“Hello Rakwireless”转换为16进制,就是“48656c6c6f52616b776972656c657373”。如图1所示,是RAK瑞科慧联的LoRa节点操作界面,采用AT指令at+send来发送该信息,并点击发送。

RAK瑞科慧联的LoRa节点操作界面
图1  RAK瑞科慧联的LoRa节点操作界面

当我们在LoRa节点的操作界面上发送了信息之后,就可以回到mqtt.fx的界面进行查看,确定MQTT服务器是否接收到了我们订阅到的LoRa节点所发送的数据。

RAK瑞科慧联LoRaWAN网关内置MQTT服务器接收数据示意图
图2  RAK瑞科慧联LoRaWAN网关内置MQTT服务器接收数据示意图

如图2所示,我们点击打开Subscribe界面,可以看到data部分就是LoRa节点刚才发送的数据,不过格式与刚才的16进制的格式不一样,这是因为Data部分的内容是对LoRa节点发送的数据进行了base64编码,我们只需要对data部分进行base64解码,即可看到原始数据。

或者,我们也可以查看RAK瑞科慧联所提供的LoRaWAN商业网关的web管理页面,如图3所示,该管理工具已经对数据进行了base64解码,因此我们在该管理页面上看到的数据就与LoRa节点刚才发送的16进制的数据一致。

RAK瑞科慧联的LoRaWAN商业网关的web管理页面
图3   RAK瑞科慧联的LoRaWAN商业网关的web管理页面

 

二、LoRaWAN网关内置的MQTT服务器发送数据到LoRa节点

我们也可以测试一下,从LoRaWAN网关内置的MQTT服务器是否能成功发送信息到LoRa节点。

我们要通过mqtt.fx工具来向LoRa节点发送信息的话,就需要使用到Downlink Topic。如图4所示的方式来找到并填写Downlink Topic的内容。具体填写规则,可以参考我们之前的文章,如何在LoRaWAN网关上设置MQTT的Topic

RAK瑞科慧联的LoRaWAN网关Topic填写界面
图4   RAK瑞科慧联的LoRaWAN网关Topic填写界面

填写了Topic之后,就可以在如图5所示的mqtt.fx工具的界面中,点击左上角的Publish标签,在输入框2的位置输入Downlink Topic,在输入框3的位置输入{"confirmed": true,"data": "SGVsbG8=","fPort": 10},点击按钮4的Publish按钮,即可将数据发送到LoRa节点。

需要注意的是,LoRa节点是否能立刻收到MQTT服务器所发送的数据,取决于该LoRa节点的工作模式。当该LoRa节点的工作模式是Class c模式时,该LoRa节点会立刻收到mqtt.fx下发的数据;但如果处于Class a模式,则该LoRa节点需要在下一次上发数据之后,才能收到mqtt.fx下发的数据)。

MQTT工具下发数据界面
图5  MQTT工具下发数据界面

其中,我们对{"confirmed": true,"data": "SGVsbG8=","fPort": 10}'格式进行说明:

    1. Confirmed可选值为true或者false。
    2. Data的内容就是我们要发送的数据,需要对数据进行base64编码。
    3. fPort是要发送的端口号,有效端口号为1-255。

我们回到LoRa节点界面,如图6所示,就可以在LoRa节点端看到接收到的数据。

LoRa节点接收到数据示意图
图6   LoRa节点接收到数据示意图

结语

本文介绍了如何测试我们之前的设置是否成功,LoRa节点与LoRaWAN网关内置的MQTT服务器之间的数据传输是否正常。而如果LoRaWAN网关并不内置MQTT服务器的时候,就需要用到外置的MQTT服务器。

当使用外置的MQTT服务器的时候,如何与节点互传数据,请期待我们的下一篇文章。

猜你喜欢

转载自blog.csdn.net/RAKwireless/article/details/106689788