跳至主要內容

了解设备接入协议

约 1496 字大约 5 分钟

了解设备接入协议

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

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

MQTT

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

提示

详细的设备 MQTT 接入文档,请 点此进入

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 接入文档,请 点此进入

适合单纯的数据采集场景

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

TCP

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

提示

详细的设备 TCP 接入文档,请 点此进入

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

CoAP

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

适合低功耗设备

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