微信小程序使用MQTT远程控制单片机——阿里云物联网平台

微信小程序使用MQTT远程控制单片机——阿里云物联网平台①

  • 阿里云物联网平台的使用
    • 第一,注册阿里云
    • 第二,找到找到物联网平台并创建设备
  • MQTT协议格式的讲解
    • MQTT中文文档
    • 固定报头 Fixed header
    • 2.3 可变报头 Variable header
    • 有效载荷 Payload
  • 持续更新

阿里云物联网平台的使用

第一,注册阿里云

打开阿里云官网进行注册https://www.aliyun.com/

第二,找到找到物联网平台并创建设备

微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第1张图片

进去物联网平台里面里面点击公共实例->创建产品
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第2张图片

创建完成,点击查看,查看里面的产品情况
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第3张图片

Topic类列表是一些我们订阅发布主题的一些东西。意思就是说,假设我们手机app控制电灯,我们需要订阅主题,我们温湿度上传数据到app就需要发布主题。反正就是通讯所需要的一些东西,由于知识浅薄,不太能讲明白
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第4张图片

我们在功能定义里面的添加产品的标准功能这里添加我们所需要的功能
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第5张图片

我们再添加功能时也可以选择插座产品这个默认功能以外的东西,我们可以在其他类型那里进行搜索并添加
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第6张图片
当然我们添加后的功能也还可以进行修改
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第7张图片
接下来我们就要添加我们的设备了,我们之前创建产品只是设备的模型并不是我们用来控制或者显示终端信息的设备,这就相当于我们提出了我们的概念,然后我们必须添加一个设备用来跟我们的终端控制使用,因为我们在之前的产品里面添加好了我们的功能,所以我们的现在添加的设备也集成了所有的功能
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第8张图片
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第9张图片

我们云端对接设备时所需要的证书,其实就是确认你是那个产品那个设备。我们等下可能要用到
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第10张图片

微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第11张图片

MQTT协议格式的讲解

MQTT中文文档

下面的内容全部都是MQTT中文文档里面所有的,因为为了记录自己所学的东西,所以干脆直接截图到自己博文做笔记了

MQTT控制报文包含三层结构
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第12张图片

固定报头 Fixed header

每个MQTT控制的报文都有一个固定报头,这个固定报头格式如下:

微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第13张图片
MQTT控制报文的类型
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第14张图片

标志位
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第15张图片

  • 是不是看这个类型、标志位懵逼不知道怎么下手,其实不用太过在意啥意思,只要知道有这个东西,有这个格式到时候根据情况按照文档直接使用就行,

剩余长度
位置:从第2个字节开始。

剩余长度(Remaining Length)表示当前报文剩余部分的字节数,包括可变报头和负载的数据。剩余长度不包括用于编码剩余长度字段本身的字节数

剩余长度字段使用一个变长度编码方案,对小于128的值它使用单字节编码。更大的值按下面的方式处理。低7位有效位用于编码数据,最高有效位用于指示是否有更多的字节。因此每个字节可以编码128个数值和一个延续位(continuation bit)。剩余长度字段最大4个字节。
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第16张图片
字节计算方式实例:原作者
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第17张图片
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第18张图片

2.3 可变报头 Variable header

微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第19张图片

  • 很多控制报文的可变报头部分包含一个两字节的报文标识符字段。这些报文是PUBLISH(QoS > 0时), PUBACK,PUBREC,PUBREL,PUBCOMP,SUBSCRIBE, SUBACK,UNSUBSCRIBE,UNSUBACK。

  • SUBSCRIBE,UNSUBSCRIBE和PUBLISH(QoS大于0)控制报文必须包含一个非零的16位报文标识符(Packet Identifier)[MQTT-2.3.1-1]。客户端每次发送一个新的这些类型的报文时都必须分配一个当前未使用的报文标识符 [MQTT-2.3.1-2]。如果一个客户端要重发这个特殊的控制报文,在随后重发那个报文时,它必须使用相同的标识符。当客户端处理完这个报文对应的确认后,这个报文标识符就释放可重用。QoS 1的PUBLISH对应的是PUBACK,QoS 2的PUBLISH对应的是PUBCOMP,与SUBSCRIBE或UNSUBSCRIBE对应的分别是SUBACK或UNSUBACK [MQTT-2.3.1-3]。发送一个QoS 0的PUBLISH报文时,相同的条件也适用于服务端 [MQTT-2.3.1-4]。

  • QoS等于0的PUBLISH报文不能包含报文标识符 [MQTT-2.3.1-5]。

  • PUBACK, PUBREC, PUBREL报文必须包含与最初发送的PUBLISH报文相同的报文标识符 [MQTT-2.3.1-6]。类似地,SUBACK和UNSUBACK必须包含在对应的SUBSCRIBE和UNSUBSCRIBE报文中使用的报文标识符 [MQTT-2.3.1-7]。

  • 需要报文标识符的控制报文在 表格 2.5 -包含报文标识符的控制报文 中列出。

微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第20张图片

有效载荷 Payload

某些MQTT控制报文在报文的最后部分包含一个有效载荷,对于PUBLISH来说有效载荷就是应用消息。表格 2.6 – 包含有效载荷的控制报文 列出了需要有效载荷的控制报文。
微信小程序使用MQTT远程控制单片机——阿里云物联网平台_第21张图片

持续更新

微信小程序使用MQTT远程控制单片机——阿里云物联网平台①

微信小程序使用MQTT远程控制单片机——MQTT控制报文②

微信小程序使用MQTT远程控制单片机——MQTT控制报文③
学习视频
该博文为个人学习笔记记录,由于知识量储备不够若有错误之处或者补充,请各位大佬批评指正,持续更新中……

你可能感兴趣的:(嵌入式项目,mqtt,微信小程序,单片机)