设备通过 DTU 接入
设备通过 DTU 接入
DTU 是 Data Transfer Unit 的简称,也就是数据传输单元。事实上 DTU 就是一种典型的网关产品,它的特点在于面向用户的快速配置能力,部分 DTU 还支持可编程。DTU 将应用到更多的物联网场景中,成为一种开箱即用的硬件网关。
设备通过 DTU 接入 ThingsCloud 时,并不需要编程知识,更多是基于配置界面来设置云平台接入参数,以及和子设备的通信参数。
ThingsCloud 广泛与 DTU 厂商合作,适配各类 DTU 产品,为物联网应用开发带来快速接入体验。
DTU 可以连接哪些物联网设备?
DTU 支持多种方式来连接物联网设备,例如:
- RS485/RS232
- LoRA
- 蓝牙
- Zigbee
- 433M
- CAN
- BACnet
- UART
- GPIO
通过这些连接方式,DTU 可以连接包括传感器、执行器、控制器、PLC 等子设备。
DTU 的连网方式支持哪些?
DTU 接入云平台的连网方式通常支持:
- 2G/3G/4G/5G
- WiFi
- NB-IoT
- 以太网
DTU 产品接入示例
ThingsCloud 支持任何厂商 DTU 产品的接入,以下是一些接入示例,您可在应用场景中参考使用。
- ThingsEdge 4G DTU 接入 ThingsCloud
- 塔石 4G DTU MQTT 接入
- 有人 4G DTU TCP 接入
- 合宙 iRTU MQTT 接入 ThingsCloud
- 银尔达 DTU MQTT 接入 ThingsCloud
- 【Modbus 设备 + DTU TCP 透传接入】从配置 DTU 到生成 App 🎦
- 【Modbus 设备 + DTU TCP 透传接入】Modbus 云网关实现从机变独立设备 🎦
- 【Modbus 设备 + DTU TCP 透传接入】为子设备生成 App 界面 🎦
ThingsCloud 支持 DTU 的接入协议有哪些?
- MQTT
- TCP
下边我们分别介绍这两种接入协议的操作步骤。
DTU MQTT 方式接入云平台
对于支持 MQTT 的 DTU 产品,只需要简单几步就可以接入 ThingsCloud。
提示
如果您还不了解云平台的 MQTT 接入协议,可以点击 设备 MQTT 接入 详细了解。
创建项目和设备
首先,在云平台创建项目,点此进入控制台。在创建项目时,选择适合您的公有区。
接着,进入项目中,为 DTU 创建相应的设备,只需要为设备起一个名字即可。
创建设备类型(可选)
如果 DTU 在 MQTT 通信中使用 JSON
格式并支持 ThingsCloud 的 属性上报协议,那么这里可以不必创建设备类型。
如果 DTU 使用 MQTT 透传方式,直接转发 Modbus 设备的 HEX 消息到云平台,则需要使用 ThingsCloud 的 MQTT 自定义数据流,必须先创建设备类型,才能创建自定义数据流。
这里以 HEX 消息透传为例,我们创建一个设备类型,填写以下信息:
- 创建方式:选择 创建自定义类型
- 类型名称:起个名字,例如:我的DTU
- 设备接入类型:直连设备
- 设备通信方式:选择 DTU 的联网方式,例如:4G 或 WiFi
- 设备接入协议:选择 Modbus RTU 透传
- 创建默认自定义数据流:开启
- 自定义数据流消息格式:选择 Modbus RTU
- 是否支持 TCP 接入:不开启
完成创建,我们进入刚创建的 设备类型详情页 > 自定义数据流,可以看到已经默认创建了一个标识符为 stream
的自定义数据流。
接着我们将刚才创建的设备,加入这个设备类型,便可以为设备开通刚刚创建的自定义数据流,也就是设备可以使用自定义数据流的 MQTT 主题来收发消息。
提示
关于 自定义数据流 的详细介绍,请浏览 自定义数据流。
获得设备 MQTT 连接参数
进入创建好的设备详情页,在【连接】页面中,找到用于 MQTT 连接的一些重要信息,包括:
- 设备的普通证书,包括
ProjectKey
和AccessToken
,用于配置 DTU 连接云平台的身份认证部分。 - MQTT 接入点主机名和端口,例如:
mqtt://mqtt.iot-api.com:1883
,那么其中mqtt.iot-api.com
是 MQTT 接入点主机名,1883
是端口。请以您的设备详情页的实际信息为准。
配置 DTU 连接到平台
不同的 DTU 产品支持不同的配置方式,通常有 上位机软件 和 Web界面 等方式。
不论是哪种配置方式,都可以找到 MQTT 连接参数的配置界面,主要的配置内容包括:
配置项 | 填写内容 |
---|---|
MQTT 主机名 | 在设备详情页复制的 MQTT 主机名 |
MQTT 端口 | 在设备详情页复制的 MQTT 端口,通常为 1883 |
username | AccessToken |
password | ProjectKey |
clientId | 空或任意字符串 |
完成以上配置后,可以先保存 DTU 配置,这一步我们已经完成了 DTU 和 ThingsCloud 平台连接的身份认证配置。
此时,可以为 DTU 上电或重启,若在平台看到设备上线的提示,表明设备已经成功连接到平台。
如果设备未上线,请继续配置下边的 MQTT 主题。
配置 DTU 上的 MQTT 主题
接下来,需要为 DTU 配置 MQTT 主题,用于 DTU 和平台进行数据的上报和下发。
提示
如果希望了解 ThingsCloud 支持的所有 MQTT 主题,请参考 设备 MQTT 接入 。
使用 JSON 消息格式
如果 DTU 支持 JSON
格式的消息,可以使用 ThingsCloud 的标准 MQTT 主题,如下:
主题 | 类型 | 用途 | 消息格式 | 说明 |
---|---|---|---|---|
attributes | 发布 | DTU 上报数据到平台 | JSON | |
attributes/push | 订阅 | DTU 接收平台下发的数据 | JSON | 对于不需要下发数据的场景,可以不设置这个主题 |
需要注意的是,对于以上主题,支持的消息格式必须为 JSON
,例如上报数据的消息如下:
{
"temperature": 28.5,
"light": 2000,
"switch": true
}
云平台会自动接收上报数据,生成设备属性,在控制台的设备详情页可以看到属性数据实时更新。

对于 number
类型的属性,云平台还提供了时序图表,方便浏览历史曲线。

使用 HEX 消息格式
若 DTU 不支持 JSON
格式,或者您使用的是 DTU 的透传模式,例如用于转发 Modbus RTU 设备的 HEX 格式消息,那就需要用到自定义数据流的 MQTT 主题。
提示
ThingsCloud 除了内置的 MQTT 标准主题外,还支持灵活强大的自定义数据流的主题,前边我们提到过,这需要您先创建设备类型,并添加自定义数据流。
关于 自定义数据流 的详细介绍,请浏览 自定义数据流。
每个自定义数据流会生成一组 MQTT 主题,包括一个发布主题和一个订阅主题,用来实现设备上报数据给云平台,以及接收云平台下发的数据。
在前边的步骤中,我们在创建设备类型时,选择了创建自定义数据流,数据格式设置为 Modbus RTU,那么平台会自动生成如下主题:
主题 | 类型 | 功能 | 消息格式 |
---|---|---|---|
data/stream | 发布 | DTU 上报数据到平台 | HEX |
data/stream/set | 订阅 | DTU 接收平台下发的数据 | HEX |
将以上这两个主题填入 DTU 的配置软件中,便可实现 DTU 和平台之间双向传输 Modbus 指令。
关于平台如何自动解析 Modbus 指令,提取相应的数据,生成设备属性,请浏览教程:
智能解析 Modbus 指令的过程,可以在设备消息日志中看到,如下图:

一些注意事项
- 如果 DTU 默认开启了一些预设主题的订阅,请将其关闭。否则会由于该主题不在云平台支持的标准主题范围内,被云平台限制 MQTT 接入。
- 在免费版项目中,DTU 发布数据的时间间隔不要低于 30 秒,否则可能会被云平台断开。付费版项目支持更短的上报间隔时间。
DTU TCP 透传方式接入云平台
TCP 透传是 DTU 比较常见的一种云平台连接方式,也是几乎所有 DTU 产品都支持的连接方式。这种方式让 DTU 作为一种透明转发的工作模式,将子设备发来的消息,直接转发给云平台,同时也将云平台下发的消息,转发给子设备。
总体来说,如果您熟悉了前边的 MQTT 接入配置方法,那么 TCP 透传的配置方法基本类似,不同之处在于 TCP 接入点和设备身份认证的方式。
接下来我们介绍 DTU TCP 透传方式的接入步骤。
提示
TCP 接入方式不仅支持 DTU 接入,也是更多单片机及通信模组最常见的接入方式,关于 TCP 接入的详细介绍,请参考 设备 TCP 接入 。
创建项目
首先,在云平台创建项目,点此进入控制台。在创建项目时,选择适合您的公有区。
创建设备类型
接着,进入项目中,由于 TCP 接入方式需要使用到设备类型的 自定义数据流,所以先来创建一个设备类型。如下图:

- 创建方式:选择 创建自定义类型
- 类型名称:起个名字,例如:我的DTU
- 设备接入类型:直连设备
- 设备通信方式:选择 DTU 的联网方式,例如:4G 或 WiFi
- 设备接入协议:选择 Modbus RTU 透传
- 创建默认自定义数据流:开启
- 自定义数据流消息格式:选择 Modbus RTU
- 是否支持 TCP 接入:开启
完成创建,我们进入刚创建的 设备类型详情页 > 自定义数据流,可以看到已经默认创建了一个标识符为 stream 的自定义数据流,并且 已开启 TCP。如下图:

这相当于我们为该设备类型下的所有设备,开放了 TCP 接入通道。至于这里的标识符和 Topic 等信息,我们可以忽略,在使用 TCP 通道时没有实际作用。
提示
关于 自定义数据流 的详细介绍,请浏览 自定义数据流。
创建设备
接下来,我们来正式创建一个设备,为设备绑定刚创建的设备类型,这样新设备便拥有了之前配置好的 TCP 接入通道。如下图:

获得 TCP 连接参数
设备创建成功后,进入 设备详情页 > 连接,找到以下信息:
- 设备的普通证书,包括
ProjectKey
和AccessToken
,用于配置 DTU 连接云平台的身份认证部分。 - TCP 接入点主机名和端口,例如:
tcp://device.iot-api.com:28801
,那么其中device.iot-api.com
是 TCP 接入点主机名,28801
是端口。请以您的设备详情页的实际信息为准。
配置 DTU 连接云平台
不同的 DTU 产品支持不同的配置方式,通常有 上位机软件 和 Web界面 等方式。
不论是哪种配置方式,要配置的内容项基本相同,它们包括:
配置项 | 填写内容 |
---|---|
TCP 主机名 | 在设备详情页复制的 TCP 主机名 |
TCP 端口 | 在设备详情页复制的 TCP 端口 |
注册包 | 使用 ASCII 明文形式,格式为:ProjectKey &AccessToken |
心跳包 | 可选,用于设备 TCP 协议层的保活,支持 ASCII 或 HEX 等任意格式,例如:1 或 Ox00 |
注册包
这里特别说明一下注册包,举个例子:
假如您的设备普通证书是:
- AccessToken:
1234567890
- ProjectKey:
ABCDEFG
那么注册包就是:
ABCDEFG&1234567890
如果 DTU 不支持设置 ASCII 明文形式,只支持 HEX 格式,您可以自行转为 HEX 格式,例如上边的注册包,转为 HEX 格式就是:
41 42 43 44 45 46 47 26 31 32 33 34 35 36 37 38 39 30
推荐一个 在线的 ASCII 和 HEX 转换工具
完成以上配置后,可以先保存 DTU 配置。
到目前为止,我们在 DTU 端已经完成了 TCP 透传方式连接 ThingsCloud 的所有配置。
数据发送和接收测试(可选)
为了测试 DTU 和云平台是否已经通过 TCP 透传成功连接,您可以在 设备详情页 > 消息 中,开启 调试状态,用于查看设备发送和接收的消息。
常用的测试方法,例如:
- 用配置 DTU 的专用上位机软件,将 DTU 切换到透传模式,然后向 DTU 发送数据,在云平台设备消息列表中刷新,检查是否会显示相应的消息。
- 同样在 DTU 的透传模式下,用其它任何串口调试工具,连接到 DTU 的从机端口,例如:RS485 端口,模拟子设备发送消息给 DTU,在云平台设备消息列表中刷新,检查是否会显示相应的消息。
通过 DTU 上报终端设备的真实数据
最后,我们给 DTU 接上终端设备,例如一个 RS485 Modbus 温湿度传感器,通过 Modbus RTU 任务 来定时下发 Modbus 查询指令,并通过 Modbus RTU规则 来自动解析 Modbus 消息,生成设备的属性数据。如下图:

关于平台如何自动解析 Modbus 指令,提取相应的数据,生成设备属性,请浏览教程: