MQTT 部分

MQTT发送过程

  1. AT+CGPADDR,查询IP,获取到OK表示BC26状态正常
  2. AT+QMTCFG="aliauth",0,"gg43bimZeb9","Lighting","2790aa518d49f0ed3955254f693c0c13",配置阿里云
  3. AT+QMTOPEN=0,“iot-as-mqtt.cn-shanghai.aliyuncs.com”,1883连接阿里云,在连接完成后马上需要用5发送连接设备指令,否者会自动断开
  4. AT+QMTCONN=0,"Lighting",连接设备,这里的lighting是阿里云自己定义的设备名称
  5. AT+QMTPUB=0,0,0,0,"/sys/a1tW6nsMu2w/BC28/thing/event/property/post",发布指令
  6. {params:{RoomHumidity:58.8}},具体数据

MQTT接收过程

  1. AT+QMTSUB=0,1,"/a1tW6nsMu2w/BC28/user/get",0阿里云下发消息需要NB提前订阅阿里云的发布主题

MQTT最后断开设备或关闭网络

  1. AT+QMTDISC=0,断开设备
  2. AT+QMTCLOSE=0,关闭网络(不要关闭)

云平台配置

直接在aliyun上,搜索物联网云平台即可。

代码以及具体实现

串口的问题

以前的串口存在一个问题,一次只能接收一行数据,必须要每次接收多行数据才行。因此,buffer再加一个维度,得到的一个二维的buffer用于接收多行的数据。

逻辑是,以前在flag=true的时候,是直接忽略了下一次数据的输入。现在,去掉这一个限制,当前这个flag(一行数据接收完毕)的功能不用,其功能转化为判断是否接收完毕的功能,如果其值为false说明没有接收完毕,继续接收;如果为true(手动置位),说明当下这一批数据已经处理完成,不再需要,将数组清空,最后将其reset为false,进行新一轮数据的等待接收。

信息发送

第一条指令标准接收情况

第二条指令标准接收情况

第三条指令标准接收情况

第四条指令标准接收情况

发送信息

参考资料

物联网通信之初识MQTT协议_JIANGYINGH的博客-CSDN博客

NBIOT专栏之BC28串口连接阿里云物联网平台接发数据 (icode9.com)

BC26连接阿里云,MQTT协议,AT流程和STM32代码实现_qlexcel的专栏-CSDN博客_bc26 阿里云