文章目录

  • 引言
  • MQTT报文
    • 连接报文
    • 订阅报文
    • 推送消息报文
  • 连接阿里云

引言

前一段时间做了一个物联网的项目,主要是通过各种模块(ESP8266、AIR202、CH9121)连接上阿里云的物联网平台进行通信,因此来记录一下流程,可能有很多不足和错误的地方恳请大佬们批评指正。
本节讲的是怎么利用网络调试助手先建立TCP/IP连接以后再通过发送MQTT报文来连接上阿里云。

MQTT报文

利用网络调试助手连接上阿里云需要了解什么是MQTT报文。根据我的理解它是一种轻量级的通信协议,其中常用的报文类型有:建立连接、订阅、推送消息三个类型。 其中订阅和推送可能有点不好理解,可以把它当作社交软件上的关注和推送,只有关注了某个博主(对应MQTT里面的话题),博主发布新的作品(对应MQTT里面的消息)后我们才会受到。当建立了TCP/IP连接以后首先需要发送建立连接报文,然后订阅相关的主题,之后就可以接收到该主题推送的消息了。

连接报文

连接报文包括了固定报头可变报头有效载荷三个部分。
固定报头一共有两个字节,为10和剩余的报文长度字段
可变报头包含了:协议名、协议级别、连接标志、清理会话和遗嘱标志等,在实际实现种设置为00 04 4D 51 54 54 04 C2 00 64。其中00 04为协议所要求的,4D 51 54 54是“MQTT”的ASCII编码,04为版本号,C2是连接标志位,包含了遗嘱标志、清除会话、保留消息等信息,00 64是保持连接字节,表示两者之间通信的最大时间间隔。实际我们使用中需要更改的是00 64 两个字节,可以根据自己的需求来设置
有效载荷包含了客户端ID的长度,客户端ID,用户名的长度,用户名的十六进制,密码的长度和密码的十六进制表示。客户端ID、用户名和密码都是根据阿里云所提供的三元码而来。其中客户端ID是:

Device_name+” |securemode=3,signmethod=hmacsha1|”

用户名是:

Device_name+”&”+ProcuctKey

密码是:DeviceSecret作为密钥对

clientId*deviceName*productKey#

采用hnacsha1加密后的字符串。其中Device_name、ProcuctKey、DeviceSecret就是阿里云提供的三元码信息,clientId


把报文的三个部分全部构造完毕以后就可以组合起来当作连接报文,实际发送部分后面再讲。

这是我的连接报文,前面两个是固定报头和可变报头,后面马赛克的地方是有效载荷。

订阅报文

在阿里云的物联网平台当连接上阿里云后会默认已经订阅了相关的主题,其实是不用再发送订阅报文的,但是为了了解MQTT全部的流程,还是讲解一下。
订阅主题包括了固定报头、可变报头、有效载荷三个部分
固定报头一共有两个字节,第一个字节是82,第二个字节是剩余长度
可变报头包括包含了报文标识符,用来区分报文,尤其是在重发的报文中用于标识是否为同一个报文,并且在需要应答的场景中用来确定是对于哪个报文的应答。
有效载荷包含一个主题过滤器,表示了客户端想订阅的主题。前面两个字节是主题的长度,后面的字节是主题的名称,最后一个字节是消息等级,一般用等级0。

推送消息报文

发布消息报文包括固定报头、可变报头和有效载荷三个部分。
固定报头两个字节,包含了重发标志、服务质量等级、保留标志等消息,第一个字节设定为30,第二个字节为报文长度
可变报头包含主题名和报文标识符,前面两个字节是主题名的长度,后面是主题名。如果是等级1的消息则会加上报文标识符,等级0的不用加标识符。
有效载荷包含了发送消息的内容。
阿里云有自己的物理模型。在测试中发送来的消息如下

{“method”:“thing.event.property.post”,“id”:“1589083247”,“params”:{“WorkSwitch”:1},“version”:“1.0.0”}

因此当收到消息后对该消息进行解析即可,可以看到消息中有把WorkSwitch设置为1。

连接阿里云

  1. 建立TCP/IP连接
    再网络调试助手里面设置成TCP CLIENT,然后主机地址写101.133.195.226 :1883,点击建立连接

    2.发送连接报文
    把上面写出来的建立连接的报文在下面按照16进制发送即可,连接上服务器以后会收到20 02 00 00报文

    可以看到已经连接上了阿里云

    3.接受推送消息
    当我在在线调试里面设置了工作开关为1打开的时候,网络调试助手会受到所推送的消息如下
    其中可以按照上面所说的解析这个报文,其中报文的

2F 73 79 73 2F 61 31 6A 66 35 42 41 38 47 7A 70 2F 44 65 76 69 63 65 5F 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 73 65 72 76 69 63 65 2E 70 72 6F 70 65 72 74 79 2E 73 65 74 22 2C 22 69 64 22 3A 22 31 31 32 33 38 35 35 36 39 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 57 6F 74 6B 53 77 69 74 63 68 22 3A 31 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D

部分代表的信息是

/sys/a1jf5BA8Gzp/Device_1/thing/service/property/set{“method”:“thing.service.property.set”,“id”:“112385569”,“params”:{“WotkSwitch”:1},“version”:“1.0.0”}

可以看到是接收到了吧工作开关打开的命令。

以上便是有关网络调试助手连接阿里云物联网平台的内容,新手作文可能写的很乱,恳请大家谅解。

通过网络调试助手连接上阿里云物联网平台相关推荐

  1. 使用网络调试助手 MQTT接入阿里云物联网平台,逐字节讲解,适用单片机/ESP8266接入阿里云

    目录 1. CONNECT 连接服务器 2. CONNACK 确认连接 3. DISCONNECT 断开连接 4. PINGREQ 心跳请求 5. PINGRESP 心跳响应 6. SUBSCRIBE ...

  2. 浅谈MQTT底层原理(网络调试助手直连阿里云)

    目录 第一节 本文探讨的内容 第二节 环境搭建 第三节 MQTT控制报文格式 第四节 CONNEC报文 第五节 订阅和取消订阅 第六节 接收消息和发布消息 第七节 网络调试助手直连阿里云极速体验 第一 ...

  3. arduino采集数据结合掌控版使用mind+传输数据上阿里云物联网平台

    文章目录 前言 一.准备材料 二.方法步骤 1.Arduino采集数据 2.掌控板读取数据并上云 3.实验效果 总结 前言 mind+ Arduino提供了十分丰富的库,可惜不支持Arduino un ...

  4. NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台

    本文章主要实现将GPS模块收集到的经纬度信息上传到阿里云物联网云平台上中,使用NBIOT技术,其通讯模块是移远公司推出的BC20模块,GPS模块是正点原子推出的1218系列模块.         (N ...

  5. 安信可Ai-WB1系列AT指令连接MQTT阿里云物联网平台

    文章目录 前言 1 准备材料 2 创建云端设备 3 硬件连接 4 配置终端设备 5 MQTT实现发布&订阅消息 联系我们 前言 本文将介绍安信可AI-WB1系列通过AT指令接入阿里云物联网平台 ...

  6. ESP8266 AT指令连接阿里云物联网平台

    模组:ESP-12F   ||   ESP-12S  ||   (保险来说,ESP模组的flash应该 大于4MB.或者说为32Mbit 才可以)待补充 ... 平台:阿里云物联网平台 固件:ESP8 ...

  7. ESP8266 基于AT指令集连接阿里云物联网平台设备

    总结一下之前学习的内容.想通过ESP8266连接上阿里云物联网平台上创建的设备. 用ESP8266连接阿里云,本质上就是开启ESP8266的透传模式,发送MQTT报文.所谓MQTT报文,就是符合MQT ...

  8. 阿里云物联网平台最完全的使用教程

    简介:包括内容如下(详细到每一个细节和步骤,如果还不清楚,可以进入阿里云控制台创建工单,请教阿里的工程师) 使用环境:(使用蜂窝网进行过测试,和WiFi直连并无差别,可以直接使用) 一.阿里云账号说明 ...

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

    NBIOT专栏系列目录 创思通信BC28核心板+STM32F系列单片机开发记录博客 BC28核心板资料包下载: https://pan.baidu.com/s/1Du7EXgMRAmbFupT_VUY ...

最新文章

  1. guava中的Splitter
  2. Android的Activity生命周期模拟程序及解析
  3. 五种最易被老板开除的人
  4. AlphaGo、人工智能、深度学习解读以及应用
  5. 全球 IPv4 地址耗尽,IPv6 来了!
  6. opencv系列-图像清晰度评价
  7. P1768-天路【负环,SPFA,01分数规划,二分答案】
  8. 图解算法学习笔记(三):递归
  9. Linux的实际操作:查询用户id切换用户su -
  10. oracle视图不能创建,ORACLEsoctt不能创建视图
  11. 百度SEO站群給WordPress加音乐插件源码
  12. gitglone 指定分支_安装说明 · harryxu/gitube Wiki · GitHub
  13. 安装ps时无法验证订阅状态_关于宝马B38/B48发动机无法启动的技术通报
  14. docker java 中文乱码_记一次ubuntu docker 镜像 java 中文乱码问题查找
  15. ArcGIS重分类之后统计各类别面积
  16. 微信小程序登陆/注册界面及接口开发实战(二)
  17. 对四旋翼飞行器的分析
  18. axio基础配置方法
  19. mave工程dependencyManagement与dependencies区别
  20. 【修炼五】用户需求系统需求

热门文章

  1. 华为网盘登录界面不好使
  2. 读懂这3个关键词,你就读懂了大数据
  3. Linux C语言学习记录(Day2-Day4)
  4. melogin服务器无响应,Win7打不开melogin.cn怎么办?melogin.cn登录页面打不开怎么办?...
  5. PTA 哥尼斯堡的“七桥问题”(并查集 + 性质判断)
  6. 中小互联网软件公司的骗局--一个小型公司一连串的过家家似的政治斗争(1)
  7. 43、JSTL的choose标签
  8. ibatis中choose标签使用
  9. linux sync命令,Linux中sync命令起什么作用呢?
  10. 远程连接阿里云MySQL失败解决办法