前言 在前面的**《如何在mqtt.fx客户端订阅LoRa节点数据》里,我们已经介绍了在RAK瑞科慧联的LoRa网关的网页上,如何设置MQTT的Topic参数,在mqtt.fx客户端上进行设置,以订阅到LoRa节点的数据。 本文介绍如何测试我们之前的设置是否成功,LoRa节点与MQTT服务器之间的数据传输是否正常。
一、LoRa节点发送数据到LoRaWAN网关内置的MQTT服务器 LoRa节点成功join之后,我们在LoRa节点侧发送一条信息,比如“Hello Rakwireless”。 由于LoRa节点需要接收16进制的数据,因此,我们将“Hello Rakwireless”转换为16进制,就是“48656c6c6f52616b776972656c657373”。如图1所示,是RAK瑞科慧联的LoRa节点操作界面,采用AT指令at+send来发送该信息,并点击发送。 图1 RAK瑞科慧联的LoRa节点操作界面
当我们在LoRa节点的操作界面上发送了信息之后,就可以回到mqtt.fx的界面进行查看,确定MQTT服务器是否接收到了我们订阅到的LoRa节点所发送的数据。 图2 RAK瑞科慧联LoRaWAN网关内置MQTT服务器接收数据示意图
如图2所示,我们点击打开Subscribe界面,可以看到data部分就是LoRa节点刚才发送的数据,不过格式与刚才的16进制的格式不一样,这是因为Data部分的内容是对LoRa节点发送的数据进行了base64编码,我们只需要对data部分进行base64解码,即可看到原始数据。 或者,我们也可以查看RAK瑞科慧联所提供的LoRaWAN商业网关的web管理页面,如图3所示,该管理工具已经对数据进行了base64解码,因此我们在该管理页面上看到的数据就与LoRa节点刚才发送的16进制的数据一致。 图3 RAK瑞科慧联的LoRaWAN商业网关的web管理页面
二、LoRaWAN网关内置的MQTT服务器发送数据到LoRa节点 我们也可以测试一下,从LoRaWAN网关内置的MQTT服务器是否能成功发送信息到LoRa节点。 我们要通过mqtt.fx工具来向LoRa节点发送信息的话,就需要使用到Downlink Topic。如图4所示的方式来找到并填写Downlink Topic的内容。具体填写规则,可以参考我们之前的**《https://bbs.21ic.com/icview-3040794-1-1.html》。 图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下发的数据)。 图5 MQTT工具下发数据界面
其中,我们对{"confirmed": true,"data": "SGVsbG8=","fPort": 10}'格式进行说明: a. Confirmed可选值为true或者false。 b. Data的内容就是我们要发送的数据,需要对数据进行base64编码。 c. fPort是要发送的端口号,有效端口号为1-255。
我们回到LoRa节点界面,如图6所示,就可以在LoRa节点端看到接收到的数据。 图6 LoRa节点接收到数据示意图
结语 本文介绍了如何测试我们之前的设置是否成功,LoRa节点与LoRaWAN网关内置的MQTT服务器之间的数据传输是否正常。而如果LoRaWAN网关并不内置MQTT服务器的时候,就需要用到外置的MQTT服务器。 当使用外置的MQTT服务器的时候,如何与节点互传数据,请期待我们的下一篇**。
|