大家好,超子又和大家见面了,超子我能力有限,技术不高,有什么错误的地方,欢迎板砖。今天我们一起构建MQTT协议中的CONNECT报文,连接OneNet物联网平台,然后进行通信。前面的文章中,超子介绍阿里云平台的时候详细分析了MQTT协议中的所有报文,所以这里就不再讲了,我们直接开始构建。

首先是CONNECT报文的固定报头是,0x10 ??,??是剩余长度,我们需要确定了可变报头和负载后才能计算出剩余长度。

CONNECT报文中的可变报头用来设置信息和各种功能,OneNet物联网平台和阿里云的一样,所以直接把阿里云的可变报头拿过来就行,简化的16进制书写,去掉0x,结果如下:

00 04 4D 51 54 54 04 C2 00 64

CONNECT报文中的负载包含客户端ID,用户名和密码这3个重要的消息,先总结下各种信息对应的什么内容。

客户端ID:对应设备ID

用户名:对应产品ID

密码:对应设备鉴权信息

我们一起来找一下相关的信息在什么地方。

先看负载中的用户名,也就是产品ID。首先进入我们的开发者中心,然后进入我们的产品详情页面,点击左侧导航栏,选择产品概况,进入该页面后,就可以看到红圈中的产品ID了,长度6,我们把产品ID字符串322049换成16进制是0x33 0x32 0x32 0x30 0x34 0x39 ,我们还得加上两个字节表示长度6,最终的16进制,简化书写,去掉0x后的结果:

00 06 33 32 32 30 34 39

再看负载中的客户端ID和密码,也就是设备ID和设备的鉴权信息。左侧导航栏,选择设备列表,进入页面后,选择红圈中的详情,然后可以进入设备的详情页面 。

上图中,我们可以看到设备ID和设备的鉴权信息,它们分别对应负载中的客户端ID和密码。我们先构建客户端ID,把设备ID字符串586465703换成16进制是0x35 0x38 0x36 0x34 0x36 0x35 0x37 0x30 0x33,长度是9,我们在最前面加入2个字节表示长度9,最终的16进制,简化书写,去掉0x结果如下:

00 09 35 38 36 34 36 35 37 30 33

接着构建密码,密码对应鉴权信息,把字符串123456换成16进制是0x31 0x32 0x33 0x34 0x35 0x36,长度是6,我们在最前面加入2个字节表示长度6,最终的16进制,简化书写,去掉0x结果如下:

00 06 31 32 33 34 35 36

到此整个负载就搞定了,接下来我们把客户端ID+用户名+密码连接起来,简化16进制,去掉0x结果如下:

00 09 35 38 36 34 36 35 37 30 33 00 06 33 32 32 30 34 39 00 06 31 32 33 34 35 36

我们一起数一下,整个负载部分共计27字节 。剩余长度=可变报头+负载=10+27=37,37/128=0,一个字节就能搞定,换成16进制就是0x25,最后我们把固定报头、可变报头和负载连接起来,简化16进制,去掉0x:

10 25 00 04 4D 51 54 54 04 C2 00 64 00 09 35 38 36 34 36 35 37 30 33 00 06 33 32 32 30 34 39 00 06 31 32 33 34 35 36

到此CONNECT报文构建完毕,我们用网络助手实测一下,OneNet平台提供的不是域名,是IP地址,端口号是6002,那么网络助手中,远程主机地址就是

183.230.40.39:6002

我们实际测试一下CONNECT报文,看看设备是不是在线了。

OneNet回复我们的CONNACK报文中,我们看最后1个字节是0x00,表示正确,说明我们的CONNECT报文正确。

CONNECT报文成功发送后,我们看到设备列表中,对应的设备的设备状态显示了在线。CONNECT报文中我们设置的keep alive的时间是100s,按协议标准要求,1.5倍时间也就是150s内,没有数据发送的话,服务器可以把我们踢下来。如果我们没有什么数据要发送的话,可以通过发送PING报文,来保持连接,不被踢下来。

今天我们就把CONNECT报文搞定了,接下来我们要实验一下平台的下发命令和数据上传。

mqtt 域名连接_中国移动OneNet物联网平台,如何使用MQTT协议,进行连接相关推荐

  1. 中国移动 OneNET 物联网平台从入门到「放弃」

    01. OneNET 物联网平台 中国移动 OneNET定位为 PaaS 服务,即在物联网应用和真实设备之间搭建高效.稳定.安全的应用平台:面向设备,适配多种网络环境和常见传输协议,提供各类硬件终端的 ...

  2. ESP8266连接中国移动ONENET物联网平台TCP透传实现WIFI远程控制

    注:简单笔记,可供参考,欢迎指教 目录 ESP8266介绍 简介 特点 ONENET介绍 接入方法 流程简述: 烧入AT固件 中国移动ONENET创建账号及产品 AT指令连接 ESP8266介绍 简介 ...

  3. 基于iOS快捷指令和Siri控制连接OneNET物联网平台的STM32的智能安防家居系统

    摘要 之前做了一个智能安防系统,用STM32单片机作为主控芯片,ESP8266-01s模块作为Wi-Fi模块,成功利用MQTT协议实现了连接阿里云物联网平台或中国移动OneNET平台,并支持实时上报环 ...

  4. ESP8266连接腾讯云物联网平台

    ESP8266连接腾讯云物联网平台   MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscrib ...

  5. ESP32运行MicroPython通过MQTT上报温湿度到中移OneNET物联网平台(附源码)

    前言:MQTT是当下物联网用的比较多的协议,本篇聊一聊用esp32通过MQTT连接到中移OneNET物联网平台. OneNET平台创建产品和设备 1.​创建产品:开发者中心->全部产品-> ...

  6. 微信小程序使用MQTT.js连接阿里云IoT物联网平台

    官方已经开源了一个SDK版本,也是基于mqtt.js,进行了各种封装: https://github.com/aliyun/alibabacloud-iot-device-sdk · 阅读以下内容需要 ...

  7. 米思奇(Mixly)连接OneNet物联网平台(一)

    米思奇(Mixly)连接OneNet物联网平台初体验(一) 中国移动物联网开放平台是中移物联网有限公司基于物联网技术和产业特点打造的开放平台和生态环境,适配各种网络环境和协议类型,支持各类传感器和智能 ...

  8. 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  9. bh1750采集流程图_重大更新:STM32空气监测仪,OneNET物联网平台实时查看(原理图、PCB源文件、程序源码等)...

    更新内容: 一.SD卡记录功能. 自动识别有无SD卡,支持4G以下SD卡. 下图为SD卡记录的数据.以日期为文件名自动创建文件. 记录格式为:时间,PM1.0,PM2.5,PM10,温度,湿度,大气压 ...

最新文章

  1. XCOM串口助手打印不出数据
  2. 《用Python进行自然语言处理》第 11 章 语言数据管理
  3. MFC对话框控件访问的七种方式
  4. SQL Server跨库查询
  5. 程序片上(内)执行-nandFlash-norFlash
  6. 正泰eplan_【万泉河】给EPLAN初学者的建议:不用宏
  7. 如何将分表汇总到总表_总表输入数据,自动拆分到分表,你会吗?
  8. Git学习文档之一 学习文档-合并分支
  9. 聊一下C#开发者如何过渡到JAVA 开发者
  10. 2020 年,哪些行业将会遭到 5G 洗礼?
  11. 关于“抵制”易语言的通告
  12. PHPCMS2008调用Uchome系统[空间之星]GET语句
  13. Excel字符串拼接
  14. matlab 求特征值的命令,matlab怎么求特征值
  15. uni-app压缩图片上传
  16. 北大计算机辅助翻译专业考研,【最新权威版】2019年北京大学计算机辅助翻译CAT考研难度解析—报录比...
  17. 举个栗子~Tableau 技巧(225):制作事件节点时间轴
  18. HTML onfocus (获得焦点)和 onblur (失去焦点)
  19. 【Linux】基本指令和常用应用安装
  20. 薄膜表面瑕疵在线检测系统实时检测出表面瑕疵的具体位置

热门文章

  1. springMVC各种注解及解释和使用
  2. leetcode 75. Sort Colors | 75. 颜色分类(荷兰国旗问题,快速排序)
  3. 【PAT甲级 大整数BigInteger】1065 A+B and C (64bit) (20 分) Java 全部AC
  4. 关于牛客网运行超时的原因分析
  5. JavaScript 检查对象属性
  6. MySQL双主io线程起不来_解决master and slave have equal MySQL server UUIDs导致Slave_IO_thread起不来问题...
  7. 如何解决分布式系统中的“幽灵复现”?-转载自 阿里技术 微信公众号
  8. 数据库-DQL练习(附答案)
  9. Leecode22. 括号生成——Leecode大厂热题100道系列
  10. 【界面无法显示】getStorageInfoSync和getStorageSync的区别