lierda
随着 5g 时代的来临,万物互联的伟大构想正在成为现实。2021年全球智能物联网处于爆发式增长通道,设备数量超过250亿台。海量的设备接入和设备管理对网络带宽、通信协议以及平台服务架构都带来了很大挑战。
通信协议作为联通物与物的桥梁,在物联网架构中起着关键作用。上周我们已经在《【技术分享】以利尔达mb960/860模组为例,教你快速接入mqtt协议(上)》一文中介绍了mqtt协议的基础知识,本周将介绍接入阿里云平台mqtt协议的具体步骤,帮助大家快速上手。
mqtt at指令接入1、设置服务端ip或域名
at+mqttcfg=host,0,host_name,1883
:服务端的ip或域名:1~2000字节字符串。阿里云公共实例接入:a1ogs******.iot-as-mqtt.cn-shanghai.aliyuncs.com
a1ogs******为本示例产品的productkey。
cn-shanghai为本示例所在地域。
示例
at+mqttcfg=host,0,gg0*******.iot-as-mqtt.cn-shanghai.aliyuncs.com,1883
实现说明
● 如果设置ip无需任何操作,只需ip满足地址格式。
● 如果设置域名,需先使用at+cfun=0和at+nconfig=pco_ie_type,pco这两条at命令开启dns服务器,再次重启,之后才能使用域名连接。
2、设置客户端标识
at+mqttcfg=clientid,,
连接id:取值0~2。
客户端标识符:字符串类型,1~128字节字符串。
示例
at+mqttcfg=clientid,0,8677**********|securemode=2,signmethod=hmacsha1|
实现说明
如果连接nb-iot平台,则需根据平台规则来设置客户端标识。
3、连接服务端
at+mqttconn=,,,,
连接id:取值0~2。
ssl tcp连接使能:
0:不采用;
1:采用ssl tcp连接。
will_flag 遗嘱标志,取值0或1:
0:不带遗嘱;
1:connect报文带有遗嘱。
用户名:0~512字节的字符串。
密码:0~512字节的字符串。
注:阿里云平台用户名及密码需用三元组生成,生成方式请参考阿里云平台提供的密码生成文档。
示例
at+mqttconn=0,0,0,8677******&gg0*******,91c3e702***************************755*****
实现说明
在连接前需要设置服务端ip和clientid,不同的平台连接使用的用户名和密码需要根据平台要求进行设置。如果是加密连接还需要设置证书,并使ssl_enable为1。设置will_flag为1时,还需要设置遗嘱。
连接失败时的错误码如下:
● 0:返回正确;
● 1:未知错误;
● 2:申请内存失败;
● 3:参数检查错误;
● 80:网络连接状态错误(可是未拨号/时间不对/服务器关闭);
● 81:mqtt设置版本错误;
● 82:clientid错误;
● 83:服务器拒绝客户端连接;
● 84:用户名或者密码错误;
● 85:订阅失败 #订阅失败会导致断连;
● 86:取消订阅失败;
● 87:发布失败;
● 88:当前未连接;
● 89:当前已有连接又再次发起连接;
● 90:创建客户端失败;
● 91:该linkid已创建客户端又再次发起创建;
● 92:该linkid未创建客户端;
● 93:当前mqtt状态不允许执行该操作。
查询连接时的状态如下:
● state=1 mqtt is initial(未配置)
● state=2 mqtt is connecting
● state=3 mqtt is connected
● state=4 mqtt is disconnected
说明:需要注意,mqtt内部实现是先使用设置的mqtt版本连接,失败之后会使用mqtt3.1版本来连接。
4、订阅mqtt消息
at+mqttsub=,,,[,,][,,]
连接id:取值0~2。
报文标识符:取值1~65535。
主题名:0~512字节字符串。一次最多可订阅3个主题。
订阅消息qos等级:取值0~2。
示例
at+mqttsub=0,1,/gg0*******/867********/user/test,1
收←◆+mqttsuback: 0,1,0
ok
收←◆+mqttrecv: 0,0,0,0,/gg0*********/867*********/user/test,qtwtewtytweyt
实现说明
订阅异常包括:
● 报文处理异常,包括非连接、网络异常状态下收到上位机下发该at命令、报文参
数异常等。
● 超时未收到服务端回复,包括服务端回复的报文异常。
● 返回85订阅失败,断连。
5、发布一个消息
at+mqttpub=,,,,,
连接id:取值0~2。
报文标识符:取值1~65535。
发布消息qos等级:取值0~2。
保留标志:取值0~1。
主题名:0~512字节字符串。
有效载荷:0~1500字节字符串。
示例:at+mqttpub=0,1,0,0,/gg0*******/8677*********/user/test,this is a test
收←◆+mqttpuback: 0,1,0
ok
收←◆+mqttrecv: 0,0,0,0,/gg0********/8677*********/user/test,this is a test
实现说明
● 该命令用于发布时,如果在timeout时间内没有收到报文确认,则会打印error。在收到一个qos大于0的报文确认消息时,会打印+mqttpuback_msgid:,其中msgid为pub报文的信息id。当查询发布消息时,查询的结果为发布的次数。当mqtt服务器不支持topic为0字节的字符串时,如果发送0字节的topic消息,则会导致断连。
● 该命令最多允许2个发布消息在重传队列中,超过2个发布消息会直接返回error,不会发送。重传队列会尝试5次重传,之后就会清除重传队列里的发布消息。
● 在断连之后计数会清零。计数达到最大值建议反转,最大值4294967295(unsigned int)。在nb-iot场景下最大的发包长度不能超过send_max_len(1358)字节,如果超出长度则会发送失败。失败时会打印实际的发送长度,用户需要保证发包长度不能超过send_max_len(1358)字节长度。
例如:用户在非加密连接的情况下发送1500字节内容,实际包长度为包头长度和包体长度之和,为1505字节。包头长度为1505-1500=5字节,根据send_max_len(1358)长度限制,可以发送的包体的长度为send_max_len-包头长度=1358-5=1353字节.
[1541.451]→◇at+mqttpub=0,1,0,0,,adebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbade
bcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabad
bceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbe
bebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbd
badbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabb
dbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbab
cbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbb
ebfadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbad
babadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdb
befbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcb
dbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbeb
fbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadeb
cbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadb
ceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfadebcbcbabcbdb
dbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfb
babbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcb
cbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbce
ebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebeb
dbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbad
babadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdb
befbbebebd
[1541.461]收←◆
[error]:please don't send a message longer than 1358 bytes. message length which
contains header and payload is 1505 bytes.
[1541.969]收←◆
+mqttclose=0,128
error: 0,1,110
error
国外众筹一款抗玻璃反光神器 能在户外拍摄中遮光挡雨
串口屏解决方案:大彩串口屏在手持设备行业的应用
ECBUS网络在电容机械中的应用
Intel CPU严重缺货 涨价
华为许超:伙伴成功,才有华为企业业务成功
【技术分享】以利尔达MB960/860模组为例,教你快速接入MQTT协议(下)
华为测试5G网速最快每秒3.6G
炬芯ATS283X高性能的蓝牙音频单芯片解决方案
Leap Motion创意总监重回电影行业,发布《Merger》描绘AR工作空间 ...
电容的串并联、充放电电路
华为Mate X2在华为商城供不应求
lcr测试仪功能使用指导手册
罗会仟:我们每一位都有可能见证量子时代的到来!
需要详细了解命令-GCC
流量计数采网关再重金属废水自动监测系统中的作用
74ls191中文资料汇总(74ls191引脚图及功能_逻辑功能及应用电路)
美国正在试图压制中国5G的发展
魅族PRO 5拆解,看看这款手机的内部结构如何?
自动驾驶中道路异常检测的方法解析
GOB微间距显示屏的发展终将扛起未来显示行业的大旗