如何将 LoRaWAN 网关连接到 MQTT Broker?

Tom Yao
Related Product:

描述

当作为嵌入式网络服务器工作时,Linovision LoRaWAN 网关支持将数据包发送到第三方 MQTT/HTTP/HTTPS 服务器。我们可以在网关上创建一个新的应用程序,该应用程序可以定义从 LoRaWAN 终端设备发送的数据的解码方法,并选择 MQTT 数据传输协议将数据发送到 MQTT 服务器。

要求

  • LoRaWAN 网关:IOT-G8x(固件版本 80.0.0.64 或更高版本), 物联网-G65, 物联网-G 67, 物联网-G 56, 物联网-G63 V1
  • MQTT 服务器/代理
  • MQTT 客户端工具:以 MQTT Explorer 为例

配置

步骤1.启用网关内置网络服务器。

 数据包转发器 > 常规 启用本地主机服务器地址。

网络服务器 > 常规页面启用网络服务器。

Step2. 添加应用程序

转到网络服务器>应用程序添加新的应用程序,单击保存。

名称:用户定义,任意值

描述:用户定义,任意值

步骤3.将网关连接到 MQTT 服务器。

 网络服务器 > 应用程序为应用程序添加“数据传输”。一个应用程序只能添加一个 MQTT 集成。

填写MQTT代理信息并创建主题来存储不同的数据类型,点击 节省。

经纪人地址: MQTT 代理的 IP 地址/域名

Broker Port: MQTT 代理的通信端口

客户端ID:用户定义,客户端相对于服务端的唯一ID标识。

应根据需要启用和配置用户凭证和 TLS。

注意:如果 MQTT 代理是 HiveMQ,请启用 TLS 并将选项设置为 C A签名的服务器证书

MQTT 配置完成后,您可以在此处检查连接状态:

步骤4.将LoRaWAN节点添加到网关。

 网络服务器>配置文件以添加新配置文件,然后单击保存。您也可以使用预定义的配置文件。

名称:用户定义,任意值

最大 TXPower:默认值

其他参数可以从 LoRaWAN 节点用户指南中查看,或者您可以保留所有默认设置。

 网络服务器 > 设备 要添加新设备,请点击 保存并应用

设备名称:用户定义,任意值

描述:用户定义,任意值

设备配置文件:选择之前添加的相应配置文件之一。

应用程序:选择之前添加的对应应用程序之一。

其他参数可以与LoRaWAN节点制造商确认。

当状态显示如下时,表示上述步骤已正确完成。

Step5.添加上行数据主题。

自定义要发布到 MQTT 代理的上行数据并保存设置。如果您在主题上添加“$deveui”,则可以在订阅主题时将其替换为真实设备 EUI。

例如 /linovision/uplink/$deveui

步骤6. 从 MQTT 客户端订阅主题以获取上行链路。

MQTT explorer 是一个综合的 MQTT 客户端,可以替代其他类型的 MQTT 客户端工具(MQTT.fx、MQTT Box 等)。

打开 MQTT Explorer,在弹出的窗口中填写相关 MQTT 服务器信息。

名称:用户定义

协议: mqtt://

主机: MQTT 代理地址

端口:代理端口

用户名密码: 如果有用户凭证,请填写。如果没有,请保留空白。

点击 高级,复制网关上的上行数据主题,并将其粘贴到 MQTT 资源管理器上,单击 +添加

 

保持默认的MQTT客户端ID,然后点击 后退 并点击 连接

片刻之后,数据将被转发到 MQTT 代理,MQTT Exploerer 可以从 MQTT 服务器接收数据。

上行格式固定为json,内容如下。

 { 
"applicationID" : 1 , // 应用程序 ID
 "applicationName" : "cloud" , // 应用名称 
"deviceName" : "24e1641092176759" , //设备名称
"devEUI" : "24e1641092176759" , // 设备 EUI 
"time" : "2020-0327T12:39:05.547336Z" , //上行接收时间
"rxInfo" : [ //lorawan网关与lora相关的信息
{ 
"mac" : "24e124fffef021be" , //接收网关的ID
 "rssi" : - 57 , //信号强度(dBm) 
"loRaSNR" : 10 , // 信噪比
"name" : "local_gateway" , //接收网关的名称 
"latitude" : 0 , //接收网关的纬度
"longitude" : 0 , //接收网关的经度 
“高度”  0 //接收网关的高度
}
 ] 
 "txInfo" : { // lorawan 节点 tx 信息 
"frequency" : 868300000 , //传输所用频率
“数据速率”  {
 "modulation" : "LORA" , //LORA 模块 
"bandwidth" : 125 , //用于传输的带宽
“spreadFactor” : 7 //用于传输的spreadFactor
 }  
"adr" : false , // 设备 ADR 状态
"codeRate" : "4/5" //码率
}  
"fCnt" : 0 , // 帧计数器
"fPort" : 85 , //应用程序端口
“数据”  “AWcAAAJoAA==” // base64 编码的有效负载(解密) 
} 

如果需要从 MQTT 客户端发送下行命令,请参考文章 如何通过 Linovision 网关上的 MQTT 远程控制设备

常问问题

Q1 .如何将解码或自定义上行内容发送到 MQTT 服务器?

答案1: 是的,这个需要用到网关上的Payload Codec功能。参考文章:

物联网-G56/G65/G67: 如何在 Linovision Gateway 上使用 Payload Codec

物联网-G63 V1/G8x: 如何在 Linovision Gateway 上使用 Payload Codec(旧版)

Q2.MQTT服务器连接状态为“断开连接”时该如何排除故障?

A2:

1)前往 维护 > 工具 > Ping ,检查网关是否可以 ping 通代理地址。

2) 检查您的 MQTT 客户端工具是否可以正常连接到 MQTT 服务器,然后按照 MQTT 客户端工具的设置来配置网关。
3)检查网关MQTT客户端ID是否与其他MQTT客户端冲突。
4)检查CPU负载是否过高,以及可用的RAM和eMMC是否很少。
5)将日志严重性改为Debug,复现断线问题,然后下载所有日志文件并发送到 联系电话: support@linovision.com

Q3 .为什么连接状态显示“已连接”,但是 MQTT 客户端没有收到任何数据?
答案3:
1)确保设备已添加到网关,然后转到网络服务器>数据包定期检查是否有来自设备的上行数据包。
2)确保设备已添加到正确的应用程序中。
3)确保网关固件升级到最新版本。
4)将日志严重性改为Debug,复现断线问题,然后下载所有日志文件并发送到 联系电话: support@linovision.com