工业物联网的云端协议将以MQTT+SSL/TLS为主,协议格式以JSON为主

 作者:老司 链接:https://zhuanlan.zhihu.com/p/26241158 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

老司单位网站:www.maiside.top

工业物联网是什么?

简单来说,就是物联网在工业控制上的具体应用。


SSL/TLS是什么?

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。大部分互联网登录都是用的SSL/TLS,可以去网易邮箱WWW.126.COM看下,右下角上面“正使用SSL登录”的标识。


MQTT是什么?

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台。MQTT协议与传统工业通信协议相比有两个特色:使用发布/订阅消息模式,提供一对多的消息发布;可以与SSL/TLS加密融合一起,保证报文传输的安全。


JSON是什么?

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,中文名字JavaScript 对象标记语言,简称JSON。JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。下面是百度天工的一个格式。

{
"requestId":"{requestId}",
"method":"put",
"path":"/v1/mydevice/metadata",
"body":{
"metadata":{
"memoryFree":"32MB",
"light":"green"
},
"profileVersion":5
}
}

上面的格式是百度天工的,百度天工是什么,官方介绍:天工是基于百度云构建的、融合百度大数据和人工智能技术的“一站式、全托管”智能物联网平台,提供物接入、物解析、物管理、规则引擎、时序数据库、机器学习、MapReduce等一系列物联网核心产品和服务,帮助开发者快速实现从设备端到服务端的无缝连接,高效构建各种物联网应用(如数据采集、设备监控、预测性维保等)。


网关是什么?

网关一般情况下是嵌入式软硬件,具有以太网、RS485、GPRS、3G、4G等通信接口,实现协议转换功能,将PLC协议转换为MQTT协议,从而实现设备数据到云平台的传递。借用一句广告词,“网关不生产数据,只是数据的搬运工”。

目前迈思德网关已经通过MQTT接入(ZKYC、NJCR、SHRJ、BJHT、BJPO、HXWL)六种平台,即将接入(华为MES、SHZY)两种平台,预计到2017年底将接入超过10家以上的云平台软件,并在本年度内完成与ThingWorx的通信接入。华为MES采用MQTT协议,实现了数据的采集与控制,这点值得做MES的借鉴。


2017年度已经进入第二个季度,与2016年度有所不同的是,今年国有企业咨询设备通过网关进行远程数据采集与控制的比例比去年高,而且对物联网通讯协议MQTT都有所了解,不像去年,来咨询的基本都不清楚MQTT这种通讯协议。国有企业规模大,示范效应高,先从试点开始,后面逐步推广。

今年大部分来咨询的技术人员都知道百度天工,虽然还不清楚百度天工的具体作用,但是都知道百度有个物联网平台。

MQTT将成为国内工业物联网的首选云通信协议,尤其在大规模设备厂家远程运维系统中采用MQTT+SSL/TLS会成为标配。在MQTT协议之上,JSON格式更会成为必选,由于云平台软件大部分采用JAVA开发,JSON格式的的MQTT协议会更受到云平台开发人员的喜爱。但是对于传统工业自动化人员,MQTT协议还是很难接触到的,一般对Modbus、OPC接触得多。

后记:

今天已经是2018年7月中旬,世界杯决赛日,根据迈思德网关接入的近百家平台分析,MQTT成为主流,没有其他。

<think>好的,用户现在想了解机智云平台中MQTT协议的简介和使用方式。我需要结合之前的回答和提供的引用资料来整理一个清晰的回答。先看看用户之前的问题和我的回复。 在之前的回答中,我提到机智云支持MQTT、HTTP、WebSocket和自定义协议,其中MQTT是核心协议之一,用于低带宽、高延迟环境,并且有轻量级SDK如GAgent。用户现在更专注于MQTT的具体细节,所以需要深入展开。 引用资料里提到ESP8266通过MQTT接入OneNET和百度云,虽然平台不同,但MQTT的基本原理类似。比如,MQTT基于TCP,使用发布/订阅模式,适合资源有限的设备。这些信息可以通用到机智云的介绍中。引用[2]详细说明了MQTT的历史和设计目的,这可以用于简介部分。引用[3]提到MQTT的报文结构和消息类型,但用户可能不需要太底层的内容,可以简要提及连接流程中的相关部分。引用[4]展示了代码示例和调试经验,这对使用说明有帮助,可以借鉴代码结构和调试建议。 用户的需求是简介和使用说明,所以结构上需要分两部分。简介部分要涵盖协议特点、设计优势和在机智云中的应用场景。使用说明则需要步骤化的指导,包括准备工作、设备端配置、数据通信示例以及调试技巧。要注意结合机智云的具体工具,比如GAgent固件、ProductKey等,确保信息准确。 需要检查是否有遗漏的关键点,比如安全性(TLS加密)、QoS级别,以及和云端交互的具体主题格式。在代码示例方面,用户可能更关心如何发布和订阅主题,所以需要提供伪代码或简化代码,并解释关键参数。同时,引用中提到的回调函数和发布函数的重要性,应该在代码部分强调。 可能用户的实际应用场景是使用类似ESP8266的设备接入机智云,因此需要针对这类硬件给出具体步骤,比如烧写固件、配置参数等。此外,调试部分需要实用建议,比如使用串口监视器或云平台工具,帮助用户快速排查问题。 最后,确保回答结构清晰,分点明确,语言简洁,符合用户要求的真实可靠。相关问题的生成也要围绕MQTT在机智云中的深入应用,比如安全配置、高级功能或与其他协议对比,帮助用户进一步探索。</think>### 机智云平台MQTT协议详解与使用指南 --- #### **一、MQTT协议简介** 1. **协议特性** - **轻量级架构**:专为低功耗、低带宽设备设计,最小化协议头开销(如报文头仅2字节),适合嵌入式设备(如ESP8266)[^2][^4]。 - **发布/订阅模式**:设备通过主题(Topic)与云端交互,支持一对多通信(如多个设备订阅同一控制指令)。 - **服务质量(QoS)**:提供3种消息可靠性等级: - `QoS 0`(最多一次):不保证送达,适用于非关键数据(如周期性传感器读数); - `QoS 1`(至少一次):确保消息到达,但可能重复(如设备状态上报); - `QoS 2`(恰好一次):严格保证消息唯一性(如固件升级指令)。 2. **在机智云中的角色** - **核心通信协议**:承担设备与云端的实时数据交互,支持设备状态同步、远程控制及报警推送。 - **安全性增强**:基于TLS/SSL加密(MQTTS),结合设备三元组(`ProductKey`、`DeviceName`、`DeviceSecret`)实现双向认证[^1][^4]。 --- #### **二、MQTT使用说明(以ESP8266为例)** ##### **1. 准备工作** - **硬件要求**:支持Wi-Fi的MCU(如ESP8266/ESP32),需预烧机智云定制固件`GAgent`[^1]。 - **云端配置**: 1. 在机智云开发者中心创建产品,获取`ProductKey`和`ProductSecret`; 2. 为设备生成唯一`DeviceSecret`,绑定至物理设备。 ##### **2. 设备端配置** ```python # 伪代码示例(基于Arduino框架) #include <Gizwits.h> // 机智云SDK Gizwits gizwits; void setup() { Serial.begin(115200); gizwits.begin("Your_ProductKey", "Your_DeviceSecret"); // 初始化设备凭证 gizwits.setBindMode(WIFI_AIRLINK_MODE); // 设置配网模式(如一键配网) } void loop() { gizwits.process(); // 处理MQTT心跳及消息 // 上报温度数据至主题 /device/{PK}/{DN}/data float temp = readTemperature(); gizwits.write("Temperature", temp); } ``` ##### **3. 数据通信示例** - **发布数据** 主题格式:`/device/{ProductKey}/{DeviceName}/data` 数据格式JSON(如 `{"Temperature":25.6, "Humidity":60}`) ```python # 上报数据示例(设备端) gizwits.write("Temperature", 25.6); gizwits.write("Humidity", 60); ``` - **订阅指令** 主题格式:`/device/{ProductKey}/{DeviceName}/cmd` 指令示例:`{"LED": "ON"}` ```python // 回调函数处理云端指令 void onCommandReceived(String command) { if (command == "LED_ON") { digitalWrite(LED_PIN, HIGH); } } ``` ##### **4. 调试与优化** - **日志查看**:使用机智云平台的**设备日志**功能,监控MQTT连接状态及数据流; - **QoS选择**:根据场景调整服务质量(如传感器数据用`QoS 0`,控制指令用`QoS 1`); - **断线重连**:启用SDK内置的自动重连机制,配置心跳间隔(默认60秒)。 --- #### **三、与其他平台对比** | 功能 | 机智云MQTT | 阿里云IoT MQTT | |--------------------|--------------------------------|-----------------------------| | **设备认证** | 三元组动态密钥 | 一机一密+证书 | | **协议扩展** | 支持自定义数据解析脚本 | 强制使用物模型(Alink JSON)| | **SDK体积** | ~50KB(ESP8266优化版) | ~200KB(标准版) | --- ### 相关问题 1. 如何在机智云中配置MQTTTLS加密传输? 2. MQTT协议的心跳机制如何影响设备功耗? 3. 机智云MQTT支持的最大并发连接数是多少? 4. 如何通过MQTT实现设备与设备间的直接通信(P2P模式)?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值