0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【技术分享】以利尔达MB960/860模组为例,教你快速接入MQTT协议(下)

利尔达科技集团 2022-02-18 09:37 次阅读

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",,

< Link_ID >连接ID:取值0~2。

客户端标识符:字符串类型,1~128字节字符串。

示例

AT+MQTTCFG="clientid",0,"8677**********|securemode=2,signmethod=hmacsha1|"

实现说明

如果连接NB-IOT平台,则需根据平台规则来设置客户端标识。

3、连接服务端

AT+MQTTCONN=,,,,

< Link_ID >连接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=,,,[,,][,,]

< Link_ID >连接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=,,,,,

< Link_ID >连接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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2903

    文章

    44253

    浏览量

    371104
收藏 人收藏

    评论

    相关推荐

    Air780E模组AT指令MQTT应用:技术指南

    今天我要讲的是Air780E模组AT指令MQTT应用,希望对大家有所帮助。
    的头像 发表于 11-07 14:02 209次阅读
    Air780E<b class='flag-5'>模组</b>AT指令<b class='flag-5'>下</b>的<b class='flag-5'>MQTT</b>应用:<b class='flag-5'>技术</b>指南

    白嫖篇:4G 模组 MQTT 通信功能!

    今天我们白嫖的是4G 模组 MQTT 通信功能!以AIR708E开发板MQTT介绍,演示功能概述,准备硬件环境,准备软件环境,
    的头像 发表于 10-30 14:53 852次阅读
    白嫖篇:4G <b class='flag-5'>模组</b> <b class='flag-5'>MQTT</b> 通信功能!

    【教程】设备通过MQTT协议接入OneNET平台,建立可视化界面

    在物联网领域,传感器与服务器的通信、信息的收集以及MQTT协议都是可以考虑的方案之一。MQTT通常用于需要低功耗和低带宽的场景,如物联网设备、传感器网络、移动应用等。它的轻量级和高效特性使其非常适合
    的头像 发表于 10-25 08:06 497次阅读
    【教程】设备通过<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b><b class='flag-5'>接入</b>OneNET平台,建立可视化界面

    MQTT.fx 连接Onenet 多协议接入平台 MQTT协议(旧版)详解

    此文档可以作为中间态MQTT版本,默认参数获取教程 多协议接入地址 td {white-space:nowrap;border:1px solid #dee0e3;font-size:10pt
    的头像 发表于 09-30 15:20 466次阅读
    <b class='flag-5'>MQTT</b>.fx 连接Onenet 多<b class='flag-5'>协议</b><b class='flag-5'>接入</b>平台 <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>(旧版)详解

    MQTT协议网关的工作原理及功能特性

    在物联网的快速发展中,MQTT协议网关作为连接物联网设备与消息代理服务器的重要桥梁,扮演着不可或缺的角色。MQTT是一种基于发布/订阅模式的轻量级通信
    的头像 发表于 09-18 17:00 379次阅读
    <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>网关的工作原理及功能特性

    钡铼PLC网关快速实现三菱、西门子PLC转MQTT协议

    PLC转MQTT网关BL102是一款专为PLC联网和远程PLC程序上传下载调试而研发的,下行采集协议支持三菱、西门子、欧姆龙、台达、施耐德等PLC协议,上行传输协议支持
    的头像 发表于 07-31 17:00 420次阅读
    钡铼PLC网关<b class='flag-5'>快速</b>实现三菱、西门子PLC转<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    钡铼技术Modbus转MQTT网关:桥接Modbus协议MQTT协议

    在现今的工业物联网时代,如何高效地将传统工业设备与云端平台连接起来,实现数据的实时监控与分析,成为了许多企业关注的焦点问题。钡铼技术推出的Modbus转MQTT网关BL101,正是针对这一需求,
    的头像 发表于 07-30 16:28 331次阅读
    钡铼<b class='flag-5'>技术</b>Modbus转<b class='flag-5'>MQTT</b>网关:桥接Modbus<b class='flag-5'>协议</b>与<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    利尔达NB模组搜网机制,看这一篇就够了!

    本文档主要介绍了利尔达NB860&MB960&MB260模组搜网策略及相关的AT命令,并给出了网络搜索和注册流程,旨在帮助客户了解
    的头像 发表于 07-12 08:14 1844次阅读
    <b class='flag-5'>利尔达</b>NB<b class='flag-5'>模组</b>搜网机制,看这一篇就够了!

    打卡智能家居之旅(2):设备接入HomeAssistant的方法

    (Ai-WB2 或者Ai-M6x等模组接入服务器必定要使用网络协议,而MQTT 是这些网络协议中最常用的。例如:阿里云的物联网平台,例如米
    的头像 发表于 06-07 09:36 1283次阅读
    打卡智能家居之旅(2):设备<b class='flag-5'>接入</b>HomeAssistant的方法

    如何在AT COMMAND的方式快速的完成Lierda NB861/MB961/MB261模组与OneNET平台的对接工作?

    在AT COMMAND的方式快速的完成Lierda NB861/MB961/MB261模组与OneNET平台的对接工作
    发表于 06-04 07:17

    如何使用NB860/MB960/MB260模组实现用户设备与OneNET(Studio)平台的连接?

    如何使用NB860/MB960/MB260模组实现用户设备与OneNET(Studio)平台的连接
    发表于 06-04 07:15

    以太网设备如何接入标准MQTT协议

    本次展示亿佰特以太网类产品接入标准MQTT协议教程,以E90-DTU(900SL30)E,其他产品可参照本教程。【注】连接前需要得到服务
    的头像 发表于 05-24 08:20 405次阅读
    以太网设备如何<b class='flag-5'>接入</b>标准<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>?

    MQTT协议网关解决方案设计与实施

    的主要功能包括协议转换、消息过滤、安全认证、负载均衡等,以确保消息的可靠传输和系统的稳定运行。随着物联网技术快速发展,MQTT协议作为一种
    的头像 发表于 03-11 14:07 463次阅读

    如何快速搭建一个MQTT协议的测试环境

    大家好,我是麦叔,之前有小伙伴建议出一期如何快速搭建一个MQTT协议的测试环境,因为自己写的mqtt测试工具总是有这样那样的问题。
    的头像 发表于 12-26 09:28 1982次阅读
    如何<b class='flag-5'>快速</b>搭建一个<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>的测试环境

    物联网中的MQTT协议概述

    MQTT协议已经成了物联网通信中的一个热词,今天我们一起来学习一关于MQTT协议的一些知识。
    的头像 发表于 11-25 14:09 1275次阅读