跳至主要內容

了解设备接入协议

约 1445 字大约 5 分钟

了解设备接入协议

了解设备连网方式后,我们接下来关心的是,设备和云平台如何交换数据,这就涉及到设备和云平台的接入通信协议。

这一节,我们将简要介绍云平台支持的设备接入协议,帮您对这些方式有一个总体的了解,并大概知道如何选择它们。每一种接入方式的具体原理和操作方式,我们将在后续的相关章节中详细说明。

MQTT

MQTT 协议基于 TCP/IP 协议,是一种基于消息队列机制的应用层协议,通常用于物联网消息通信场景。

MQTT 接入方式中,设备需要和云平台建立 TCP 长连接,并通过 MQTT 协议特有的方式完成身份认证。当设备成功连接到云平台后,通过 发布订阅 相应的 主题(Topic),来完成和云平台的消息通信。

以上一节的设备数据上报为例,如果采用 MQTT 方式上报,设备首先要和云平台建立MQTT连接,我们同样在设备详情页的【连接】页面可以找到 MQTT 接入点地址,比如:

mqtt://<mqtt_broker_url>:1883

提示

请先进入 控制台open in new window ,创建设备,获取设备 MQTT 接入点地址。

ThingsCloud 上不同区域的 MQTT 接入点地址不同。

在硬件开发中,根据不同硬件平台,有相应的 MQTT 实现方式。这里我们以第三方 MQTT 客户端工具 MQTT.fxopen in new window 为例,来模拟设备和云平台建立 MQTT 连接。

建立 MQTT 连接时,除了接入点地址外,还需要身份验证,我们使用云平台提供的普通证书方式,设置如下:

参数
usernameAccessToken
passwordProjectKey
clientId空或任意

提示

ThingsCloud 上不同区域的 MQTT 接入点地址不同,您可以在设备详情页中的【连接】页面找到。

在 MQTT.fx 上新建一个连接,配置如下图:

MQTT.fx 设置连接到 ThingsCloud
MQTT.fx 设置连接到 ThingsCloud

当设备和云平台成功连接 MQTT 连接后,设备需要向以下 主题

attributes

发布如下数据:

{
	"humidity": 78,
	"light": 8910
}

即可完成一次数据上报。

在 MQTT.fx 中发布以上的数据,如下图:

MQTT.fx 发布数据到 ThingsCloud
MQTT.fx 发布数据到 ThingsCloud

在控制台中,可以看到设备有了新的数据,这些数据我们都称为属性,后边的章节中我们会详细介绍 ThingsCloud 中 属性 的含义。

查看新上报的数据
查看新上报的数据

MQTT 有一些明显的优势,也正是这些优势让它几乎成为物联网通信协议的代名词。

支持实时控制

由于和云平台建立了 TCP 长连接,设备可以随时收到云平台下发的消息,从而达到实时远程控制的目的。

ThingsCloud 支持基于 MQTT 的多种消息下发方式,例如:属性下发、命令下发、自定义数据下发,这些方式在后边的章节中会有详细介绍。

通过实时控制,您可以实现智能家居中的远程开关家中的智能电器,可以实现远程控制农业大棚中的风机转速,还可以实现从云端智能调节楼宇灯光亮度。

易于监测设备在线状态

同样得益于 TCP 长连接,我们可以较为容易的监控设备的在线状态,但这不是绝对的。虽然 TCP 通过心跳包来维持连接,但意外断线有时不会产生正常的 TCP 连接关闭,导致在线状态可能和实际情况不一致。不过 MQTT 本身也有心跳机制,可以相对较好的解决这个问题。

支持不同级别的证书

ThingsCloud 支持普通证书的 MQTT 设备身份验证,非常适合普通场景或资源有限的设备。同时我们也支持基于 TLS 的 MQTT 加密传输,实现设备和云平台通信的安全性和完整性。

数据流量较小

MQTT 协议采用二进制格式设计,除了数据之外,控制部分非常精简,整体消息包相对较小,整体流量开销不大。

HTTP

在上一节,我们使用了 HTTP 协议完成设备向云平台的数据上报。事实上,在很多数据采集的单一场景中,HTTP 不外乎是一种相对简单可靠的应用层协议,它工作在 TCP/IP 协议栈上,具有很好的易用性和强大的基础库支持,对开发者来说很容易快速上手。

适合单纯的数据采集场景

HTTP 接入协议很适合单纯的数据采集场景,不需要对设备下发实时消息。设备如果有丰富的资源,还可以使用更加安全的 HTTPs 实现加密传输。

CoAP

CoAP 可以说是一个精简版的 HTTP 协议,它运行在 UDP 协议之上,而 HTTP 运行在 TCP 协议之上。除此之外,CoAP 的使用方法和 HTTP 极为相似。

适合低功耗设备

CoAP 由于不需要和云平台建立 TCP 连接,所以设备用于网络通信的开销相对比较低,很适合用在低功耗设备,例如:需要依赖电池常年工作的 NB-IoT 智能水表。

TCP

除此之外,ThingsCloud 还支持无所不能的 TCP 接入协议,在控制台可以设置基于 TCP 的自定义数据格式,支持 ASCIIHEXJSON 等格式。

前边提到的 DTU,通常都支持 TCP 透传方式接入云平台。