ML302通过MQTT连接onenet(三)通过AT指令设备订阅上传及下发数据

准备

串口助手:Xcom

通过百度网盘分享的文件:XCOMckts.zip
链接:https://pan.baidu.com/s/1mxyF6A6m1D5Gs6LEAGJ0vg 
提取码:29ak

参考文档:

OneNET - 中国移动物联网开放平台 (10086.cn)

1.查询MQTTSTAT

使用串口助手发送AT+MQTTSTAT?查询MQTT连接状态,返回值为1表示onenet的连接正常。

接下来便可以进行正常进行onenet设备的订阅和命令的上传下发。

2.订阅主题

首先我们要知道系统命令topic

订阅topic

通过参考官方文档,订阅topic的命名规则为$sys/{pid}/{device-name}/dp/post/json/+

因此我们要知道自己的{pid} {device-name},这在onenet中可查找到第一个为产品ID,第二个为设备名称/ID.

通过替换便可得到自己的订阅topic。

发布topic

同理我们也知道了自己的发布topic.大家一定要区分开来订阅topic和发布topic。虽然很像,但还是有些许不同。

发布topic:$sys/{pid}/{device-name}/dp/post/json

在知道了订阅topic和发布topic之后我们就能做到数据的上传。

首先使用AT+MQTTSUB="$sys/E33g8o33s3/123456789/dp/post/json/+",2进行订阅。

然后再使用AT+MQTTPUB进行数据的发送。(注意,发送数据时上传的json数据要在”前加\进行转义。因为我们使用的是数据流模型,所以可以直接上传数据,不需要创建模型。)

大家可以参考我发送的数据,

此时onenet已经接收到了数据。

系统命令topic

要想获得onenet的下发命令,首先要订阅系统命令topic,

首先我们先看系统命令topic的数据格式$sys/{pid}/{device-name}/cmd/request/+

同理我们可得系统命令topic

通过AT+MQTTSUB="$sys/E33g8o33s3/123456789/cmd/request/+",2 来订阅系统命令。

此时我们在onenet服务器上下发指令

然后我们本地客户端便可以收到下发的命令了。

注意:

在使用AT指令发送信息时,一定要注意字符串中的\%“等特殊符号,在发送这些字符时需要进行转义。例如发送”\“要写为”\\“,发送”%“要写为”%%“,发送” ” “要写为“ \" ”。

QoS 等级(0-2):

  1. QoS 0(至多一次)

    • 消息可能会丢失,也可能会重复传输。消息传递的可靠性最低。发送方不会等待接收方的确认,也不会重发消息。
  2. QoS 1(至少一次)

    • 消息确保至少被送达一次,但可能会重复传输。发送方会等待接收方的确认,如果未收到确认,则会重发消息。
  3. QoS 2(只有一次)

    • 消息确保只送达一次,并且不会重复。QoS 2 是最严格的质量保证等级,通过四步握手过程确保消息的唯一性。

常见MQTT相关AT指令

  • 设置MQTT连接参数

    AT+MQTTCFG=<cfgID>,<enable>,<username>,<password>,<clientID>
    • <cfgID>: 配置ID(通常是0或1)
    • <enable>: 启用(1)或禁用(0)
    • <username>: 用户名
    • <password>: 密码
    • <clientID>: 客户端ID
  • 连接到MQTT服务器

    AT+MQTTOPEN=<usrFlag>,<pwdFlag>,<willFlag>,<willReta in>,<willQos>,<will-topic>,<will-mesg>
  •                 <usrFlag> 是否启用用户名(0-1)。                                                             
  •                 <pwdFlag> 是否启用用户密码(0-1)。        
  •                 <willFlag> 是否启用 will(0-1)。
  •                 <willRetain> 服务器是否保存 will 消息(0-1)。
  •                 <willQos> will 消息的 QoS 等级(0-2)。
  •                 <will-topic> 连接异常终止时发送消息到相应 topic(字符串,最大长度 512)。
  •                 <will-mesg> 连接异常终止时发送的消息(字符串,最大长度 512)

查询 MQTT 状态

        AT+MQTTSTAT?

                0 未连接

                1 已连接

                2 socket 正在连接。

                3 socket 已连接,发送 connect 请求包。

                4 connect 请求包发送成功,等待 ACK

  • 订阅主题.

    AT+MQTTSUB=<topic>,<qos>
    • <topic>: 订阅的主题
    • <qos>: 服务质量等级(0、1或2)
  • 发布消息

    AT+MQTTPUB=<topic>,<message>,<qos>,<retain>
    • <topic>: 主题
    • <message>: 要发布的消息
    • <qos>: 服务质量等级(0、1或2)
    • <retain>: 是否保留消息(0或1)
  • 取消订阅主题

    AT+MQTTUNSUB=<topic>
    • <topic>: 取消订阅的主题
  • 断开MQTT连接

    AT+MQTTDISC=<cfgID>
    • <cfgID>: 配置ID(通常是0或1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

602寝室长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值