【安信可BW16-Kit】AT指令体验之MQTT
<div class='showpostmsg'># 【安信可BW16-Kit】AT指令体验之MQTT我用emqx在本地搭建了一个MQTT服务器,搭建过程可以查看官网搭建方式
# 01 连接Wifi
连接WiFi请看上篇帖子
# 02 配置MQTT
命令: ```AT+MQTT=<key>,<data>```
参数2:```<data>```设置的参数
参数1:```<key>```MQTT参数。
1:设置连接的域名或 IP
2:设置服务器端口号
3:设置连接方式(暂时默认 1:使用tcp连接)
4:设置客户端ID
5:设置用户名(最大长度63字节)
6:设置登录密码(最大长度63字节)
7:设置遗嘱消息
格式为
```c
AT+MQTT=7,<LWT_topic>,<LWT_qos>,<LWT_Retained>,<LWTpayload>
LWT_topic:遗嘱主题(不需要遗嘱这里设置为空)
LWT_qos:遗嘱 QOS(0/1/2)
LWT_Retained:遗嘱 retained(0/1)
LWTpayload:遗嘱消息内容
```
## 示例
```shell
AT+MQTT=1,192.168.1.9 // 设置MQTT服务器URL
flash save ok
AI_HalWriteFlash success
OK
After do cmd, available heap 120224
AT+MQTT=2,1883 // 设置MQTT服务器端口
flash save ok
AI_HalWriteFlash success
OK
After do cmd, available heap 120224
AT+MQTT=3,1 // 设置连接方式 TCP
don't need save flash
OK
After do cmd, available heap 120224
AT+MQTT=4,bw16 // 设置客户端ID
flash save ok
AI_HalWriteFlash success
OK
After do cmd, available heap 120224
AT+MQTT=5, // 设置用户名 我这里为空
cmd format error
+MQTT:3
ERROR
After do cmd, available heap 120224
AT+MQTT=6, // 设置密码 我这里为空
cmd format error
+MQTT:3
ERROR
After do cmd, available heap 120224
AT+MQTT? // 查询 MQTT 连接和配置情况
+MQTT:0,192.168.1.9,1883,1,bw16,,,,0,0,
OK
After do cmd, available heap 120224
AT+MQTT // 连接MQTT
not set LWT
MQTT connect config
host:192.168.1.9:1883
username:
password:
clientID:bw16
use tcp
OK
After do cmd, available heap 103680
start MQTT connect
host:192.168.1.9:1883
username:
password:
clientID:bw16
willFlag:0
use tcp
addr=192.168.1.9
Set mqtt status to MQTT_CONNECT
send mqtt connect cmd success
Read packet type is CONNACK
recive MQTT Connected ack
// 连接成功
```
此时,后台会有对应客户端连接
# 03 订阅消息
命令: ```AT+MQTTSUB=<topic>,<qos>```
参数1:```<topic>```要订阅的主题。(最多订阅四个主题)
参数2:```<qos>```qos 等级(0,1,2)。
```c
AT+MQTTSUB=topic,0
Set mqtt status to MQTT_SUBTOPIC
send topic topic cmd success,wait ack
Read packet type is SUBACK
wait subscribe ack success,grantedQoS=0
Set mqtt status to MQTT_RUNNING
recive Subscribe ack,subscribe success
OK
After do cmd, available heap 103136
```
后台显示
## 当订阅消息后,该主题有消息后,就会通过串口显示
### 其他客户端发送消息
### BW16收到主题
```c
Message arrived
+EVENT:MQTT_SUB,topic,18,{ "msg": "hello" }
```
# 04 发布消息
命令: ```AT+MQTTPUB=<topic>,<qos>,<Retained>,<payload>```
参数1:```<topic>```要发布的主题
参数2:```<qos>```qos 等级(0,1,2)。
参数3:```<Retained>```0:普通消息 1:保留消息
参数4:```<payload>```数据内容(最大长度为1024个字节)
```c
AT+MQTTPUB=topic,0,0,hello bw16 // 发送消息
Publish Topic topic:0
Qos0 not need Ack
OK
After do cmd, available heap 103136
Read packet type is PUBLISH
Message arrived
+EVENT:MQTT_SUB,topic,11,hello bw16 // 接收消息
```
### 客户端显示
# 05取消订阅
命令: ```AT+MQTTUNSUB=<topic>```
参数1:```<topic>```要取消订阅的主题
```c
AT+MQTTUNSUB=topic
Read packet type is UNSUBACK
topic:topic set AI_MQTT_RECIVE_UNSUBACK
recive UnSubscribe ack,UnSubscribe success
OK
After do cmd, available heap 103200
```
取消订阅成功
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页:
[1]