第二,配置MQTT服务器基本信息,在springBoot配置文件application.properties中配置,添加如下:
第三,配置MQTT消息推送配置类,
第四,配置MqttGateway消息推送接口类,在sendToMqtt(String data,@Header(MqttHeaders.TOPIC)String topic)接口中,data为发送的消息内容,topic为主题。指定topic,则我们的接口可以根据需要,向不同的主题发送消息,方便灵活应用。如果不指定,则使用默认配置的主题。
第五,接口类测试下功能,用Postman调用sendMqtt.do接口,往hello主题发送消息,用MQTTLens订阅hello主题,从下面截图,可以看出可以正常往MQTT服务发送消息了,而且可以订阅到。
用户在使用CAT1模组MQTT协议对接自己的服务器,有时会遇到设备无法连接服务器问题(比如提示+ECMTCON:0,0,5连接服务器被拒绝,认证失败)。此时可以通过 标准的MQTT服务器 进行对比,因为用户自己的服务器一般加入校验信息,导致模组&MQTT服务器无法连接。
Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本3.1和3.1.1,这里使用该服务器进行测试。针对该服务器更详细的介绍也可以参考 https://www.jianshu.com/p/b6a75bfbe82f 。
MQTT有个重要的参数QOS,因下面使用较多,这里列出便于后续查看:
AT+ECMTOPEN=<tcpconnectID>,“<host_name>”,<port>
<tcpconnectID>整型。 MQTT Socket 标识符。范围: 0~4
<host_name> IP 地址或域名
<port>整型。服务器端口
示例:AT+ECMTOPEN=0, "test.mosquitto.org",1883 //建立 tcp
返回值:+ECMTOPEN:<tcpconnectID>,<result>
<tcpconnectID>Integer type,MQTT socket identifier. The value is 0
<result>1 Failed to open network,0 Opened network successfully
AT+ECMTCONN=<tcpconnectID>,“<clientID>”[,“<username>”[,“<password>”]]
<tcpconnectID> MQTT socket identifier. The value is 0
“<clientID>” 用户不指定标准服务器会自行创建
“<username>”,“<password>” 标准MQTT服务器不使用
示例:AT+ECMTCONN=0 //在 mosquitto 平台上注册设备
返回值:+ECMTCONN:<tcpconnectID>,<result>[,<ret_code>]
AT+ECMTSUB=<tcpconnectID>,<msgID>,“<topic>”,<qos>
<tcpconnectID> MQTT socket identifier. The value is 0
<msgID>任意填写,Message identifier of packet. The range is 1-65535
<topic>String type,Topic that the client wants to subscribe to or unsubscribe from.
<qos> Message QoS, can be 0,1 or 2
示例:AT+ECMTSUB=0,1,”test”,2 //订阅 topic
返回值:+ECMTSUB:<tcpconnectID>,<msgID>,<result>[,<value>]
额外指令:AT+ECMTUNS=0,4, “test” //取消订阅 topic
AT+ECMTPUB=<tcpconnectID>,<msgID>,<qos>,<retain>,“<topic>”,“<payload>"
<tcpconnectID> MQTT socket identifier. The value is 0
<msgID> Message identifier of packet.
<qos> Message QoS, can be 0,1 or 2
<retain> 0 Server should not retain the message 1 Server should retain the message
<topic>String type
<payload>String type
示例:AT+ECMTPUB=0,0,0,0,"test","hello" //发送数据给 mosquitto 平台
+ECMTPUB:<tcpconnectID>,<msgID>,<result>[,<value>]
额外指令:AT+ECMTDISC=0 //删除 mqtt client 和 mqtt 连接
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)