1.MQTT简介
MQTT协议是一个面向物联网应用的即时通信协议,使用TCP/IP提供网络连接,能够对负载内容实现消息屏蔽传输,开销小,可以有效降低网络流量。
参考博主线上博文:玩转PubSubClient MQTT库
特点及功能
- 长连接协议(保持心跳,keepAlive)
- 终端数据点上报,支持的数据点类型包括
整型(int)
浮点数(float)
字符串(string)
JSON格式
二进制数据
- 平台消息下发
- 基于Topic的订阅、发布以及消息推送,可以实现设备间的消息单播以及组播
典型应用场景
MQTT协议适用于设备和平台需要保持长连接的使用场景,MQTT特点在于可以实现设备间的消息单播以及组播,可以不依赖于其他服务(下发命令服务,推送服务等)实现让设备以应用服务器的方式对真实设备进行管理和控制。
读者所需知识储备:
- 玩转PubSubClient MQTT库
- 玩转OneNET物联网平台之简介
2.MQTT接入说明
接入流程分为:
- 平台域(也就是OneNet平台上的操作)
- 设备域(8266设备上的SDK,我们这里用PubSubClient)
接入步骤如下:
2.1 Step1 —— 创建产品,选择接入协议
- 首先您需要在平台创建一个接入协议为MQTT的产品,查看产品创建
- 创建产品后,记录该产品的产品ID(ProductId)
2.2 Step2 —— 创建设备,记录设备ID等信息
创建设备有两种方式:
- 第一种 可以通过页面点击添加设备,输入设备名称和鉴权信息(即设备编号,在8266中我们可以使用 ESP+Mac地址的方式或者ESP+ChipId的方式),具体平台的资源模型可详情请查看第一章 资源模型,并记录下该设备编号(deviceId).
- 第二种 可以通过调用创建设备API 实现设备的创建,输入设备的设备名、接入协议、鉴权信息以及MasterKey等信息,即可在平台上创建设备(博主比较喜欢这一种,也比较灵活)。
2.3 Step3 —— 建立设备与平台间的协议连接
- MQTT服务器地址域名为:mqtt.heclouds.com
使用Step1和Step2中的参数作为登录参数,使用SDK中的对应接口组织MQTT连接报文,发送到平台,与平台建立MQTT连接
若已经连接成功,在设备信息中会看到一个在线标记:
对于初学者,博主建议先用OneNet提供的MQTT调试工具来试玩一下,已亲测可用。
2.4 Step4 —— 数据流创建,数据点上传
- 利用SDK中提供的接口函数,编写代码将数据上传到平台
2.5 Step5 —— 数据流展示,查看数据点
- 在OneNET上的设备管理下点击数据展示,进入数据展示页面,点击下拉菜单,查看近期上传的数据点;也可以选择时间区间来查看历史时间
3. MQTT API
API根据用途做了几种分类,博主这里不重复,请参考 玩转OneNET物联网平台之简介
当然,OneNet为了简单方便调试API,也给我们提供了调试界面,具体请参考
博主在这里不会去讲解各个API的详细用法,请大家自行去查阅官方文档(查阅官方文档也是锻炼能力的一种)。
3.1 新增设备
- 具体参考 OneNet官方文档 - 新增设备
- 此方法比较重要,请仔细理解
3.2 注册设备
- 具体参考 OneNet官方文档 - 注册设备
3.3 更新设备信息
- 具体参考 OneNet官方文档 - 更新设备信息
3.4 查询设备详情
- 具体参考 OneNet官方文档 - 查询设备详情
3.5 批量查询设备信息
- 具体参考 OneNet官方文档 - 批量查询设备信息
3.6 批量查询设备状态
- 具体参考 OneNet官方文档 - 批量查询设备状态
3.7 删除设备
- 具体参考 OneNet官方文档 - 删除设备
3.8 新增数据流
- 具体参考 OneNet官方文档 - 新增数据流
3.9 更新数据流属性
- 具体参考 OneNet官方文档 - 更新数据流属性