跳至主要內容

设备通过 DTU 接入

约 4028 字大约 13 分钟

设备通过 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 产品的接入,以下是一些接入示例,您可在应用场景中参考使用。

ThingsCloud 支持 DTU 的接入协议有哪些?

  • MQTT
  • TCP

下边我们分别介绍这两种接入协议的操作步骤。

DTU MQTT 方式接入云平台

对于支持 MQTT 的 DTU 产品,只需要简单几步就可以接入 ThingsCloud。

提示

如果您还不了解云平台的 MQTT 接入协议,可以点击 设备 MQTT 接入 详细了解。

创建项目和设备

首先,在云平台创建项目,点此进入控制台open in new window。在创建项目时,选择适合您的公有区。

接着,进入项目中,为 DTU 创建相应的设备,只需要为设备起一个名字即可。

创建设备类型(可选)

如果 DTU 在 MQTT 通信中使用 JSON 格式并支持 ThingsCloud 的 属性上报协议,那么这里可以不必创建设备类型。

如果 DTU 使用 MQTT 透传方式,直接转发 Modbus 子设备的二进制消息到云平台,则需要使用 ThingsCloud 的 MQTT 自定义主题,这里就要创建设备类型和自定义数据流。

先来创建一个设备类型,填写以下信息:

  • 创建方式:选择 创建自定义类型
  • 类型名称:起个名字,例如:我的DTU
  • 设备接入类型:直连设备

提示

如果使用 Modbus 云网关功能,接入类型请选择 网关,当然您可以创建后随时修改。

什么是 Modbus 云网关?open in new window

  • 设备通信方式:选择 DTU 的联网方式,例如:4G 或 WiFi
  • 设备接入协议:选择 Modbus RTU 透传
  • 创建默认自定义数据流:开启
  • 自定义数据流消息格式:选择 Modbus RTU
  • 是否支持 TCP 接入:不开启

完成创建,我们进入刚创建的 设备类型详情页 > 自定义数据流,可以看到已经默认创建了一个标识符为 stream 的自定义数据流。

接着我们将刚才创建的设备,加入这个设备类型,便可以为设备开通刚刚创建的自定义数据流,也就是设备可以使用自定义数据流的 MQTT 主题来收发消息。

提示

关于 自定义数据流 的详细介绍,请浏览 自定义数据流

获得设备 MQTT 连接参数

进入创建好的设备详情页,在【连接】页面中,找到用于 MQTT 连接的一些重要信息,包括:

  • 设备的普通证书,包括 ProjectKeyAccessToken,用于配置 DTU 连接云平台的身份认证部分。
  • MQTT 接入点主机名和端口,例如:mqtt://mqtt.iot-api.com:1883,那么其中 mqtt.iot-api.com 是 MQTT 接入点主机名,1883 是端口。请以您的设备详情页的实际信息为准。

配置 DTU 连接云平台

不同的 DTU 产品支持不同的配置方式,通常有 上位机软件Web界面 等方式。

不论是哪种配置方式,都可以找到 MQTT 连接参数的配置界面,主要的配置内容包括:

配置项填写内容
MQTT 主机名在设备详情页复制的 MQTT 主机名
MQTT 端口在设备详情页复制的 MQTT 端口,通常为 1883
usernameAccessToken
passwordProjectKey
clientId空或任意字符串

完成以上配置后,可以先保存 DTU 配置,这一步我们已经完成了 DTU 和云平台连接的身份认证配置。

配置 DTU 上的 MQTT 主题

接下来,需要为 DTU 配置 MQTT 主题,用于 DTU 和云平台进行数据的上报和下发。

提示

如果希望了解 ThingsCloud 支持的所有 MQTT 主题,请参考 设备 MQTT 接入

在这里,通常只需要配置以下的常用主题,如下:

用途类型主题消息格式说明
上报 DTU 的数据发布attributesJSON
接收云平台下发的数据订阅attributes/pushJSON对于不需要下发数据的场景,可以不设置这个主题

需要注意的是,对于以上主题,支持的消息格式必须为 JSON,例如上报数据的消息如下:

{
    "temperature": 28.5,
    "light": 2000,
    "switch": true
}

云平台会自动接收上报数据,生成设备属性,在控制台的设备详情页可以看到属性数据实时更新。

属性上报
属性上报

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

属性上报
属性上报

如果 DTU 不支持 JSON 格式,那就需要用到云平台的 MQTT 自定义主题。

使用 MQTT 自定义主题

ThingsCloud 除了内置的 MQTT 标准主题外,还支持灵活强大的自定义主题,这需要您创建设备类型,并添加自定义数据流。

提示

关于 自定义数据流 的详细介绍,请浏览 自定义数据流

每个自定义数据流会生成一组 MQTT 主题,包括一个发布主题和一个订阅主题,用来实现设备上报数据给云平台,以及接收云平台下发的数据,例如,我们创建一个标识符为 stream 的自定义数据流,设置为支持 HEX 数据格式,那么云平台会自动生成如下主题:

功能类型主题消息格式
上报数据发布data/streamHEX
下发控制订阅data/stream/setHEX

在实际使用中,以上这两个 MQTT 主题,可以实现云平台向设备下发 Modbus 查询指令,设备向云平台上报 Modbus 指令。云平台通过设备类型中的 Modbus 寄存器设置或消息规则,来自动解析 Modbus 指令,提取相应的数据,自动生成设备属性。

通过如下的设备消息日志,可以看到这个过程:

modbus
modbus

配置 DTU 连接子设备

当我们完成以上配置后,如果 DTU 本身存在设备数据,例如 DTU 自身的版本信息,或者 DTU 本身支持 IO 输入,云平台便可以开始接收 DTU 的真实数据上报。

除此之外,DTU 的真正使命是转发其连接的 子设备 和云平台之间的消息。那么,就需要配置 DTU 和子设备的连接方式以及数据格式。

这部分配置请参考 DTU 和子设备的相关产品说明。

使用云平台辅助配置子设备

举个例子,我们在配置支持 RS485/Modbus 的传感器或 IO 控制器接入 DTU 时,由于我们事先已经配置好了 DTU 和云平台的连接,所以我们可以直接从云平台下发 Modbus 指令给传感器,完成从机地址修改等基本操作。

我们还可以用这种方式来远程调试传感器的数据上报准确性等,总之 DTU 为云平台和实际设备之间提供了通信桥梁,我们可以充分利用这种便利性。

使用云平台的定时任务

当 DTU 和子设备是主从关系时,我们需要 DTU 主动定时向子设备发送查询指令,有些 DTU 支持这样的功能,对于不支持的 DTU,再或者我们需要远程灵活的调整查询策略,那么可以使用云平台提供的定时任务功能。

定时任务支持多种丰富的定时策略,例如:按间隔时间、按每日固定时间等。可执行的任务可以是下发一个 JSON 消息给设备,也可以是下发一个 Modbus 查询指令,从而触发 DTU 连接的从机设备上报数据。

使用云平台的规则引擎

同样以 RS485/Modbus 的传感器设备举例,为了快速解析 Modbus 协议,ThingsCloud 的规则引擎支持内置的 Modbus 解析规则,您可以在规则引擎中添加这样的操作,如下图:

modbus
modbus

规则配置非常简单,您只要略懂 Modbus 协议,并参考传感器设备的 Datasheet 手册,便可以完成 Modbus 数据的提取。

modbus
modbus

一些注意事项

  • 如果 DTU 默认开启了一些预设主题的订阅,请将其关闭。否则会由于该主题不在云平台支持的标准主题范围内,被云平台限制 MQTT 接入。
  • DTU 发布数据的时间间隔不要低于 30 秒,否则可能会被云平台断开。专有区和私有区支持更短的上报频率。

DTU TCP 透传方式接入云平台

TCP 透传是 DTU 比较常见的一种云平台连接方式,也是几乎所有 DTU 产品都支持的连接方式。这种方式让 DTU 作为一种透明转发的工作模式,将子设备发来的消息,直接转发给云平台,同时也将云平台下发的消息,转发给子设备。

总体来说,如果您熟悉了前边的 MQTT 接入配置方法,那么 TCP 透传的配置方法基本类似,不同之处在于 TCP 接入点和设备身份认证的方式。

接下来我们介绍 DTU TCP 透传方式的接入步骤。

提示

TCP 接入方式不仅支持 DTU 接入,也是更多单片机及通信模组最常见的接入方式,关于 TCP 接入的详细介绍,请参考 设备 TCP 接入

创建项目

首先,在云平台创建项目,点此进入控制台open in new window。在创建项目时,选择适合您的公有区。

创建设备类型

接着,进入项目中,由于 TCP 接入方式需要使用到设备类型的 自定义数据流,所以先来创建一个设备类型。如下图:

  • 创建方式:选择 创建自定义类型
  • 类型名称:起个名字,例如:我的DTU
  • 设备接入类型:直连设备

提示

如果使用 Modbus 云网关功能,接入类型请选择 网关,当然您可以创建后随时修改。

什么是 Modbus 云网关?open in new window

  • 设备通信方式:选择 DTU 的联网方式,例如:4G 或 WiFi
  • 设备接入协议:选择 Modbus RTU 透传
  • 创建默认自定义数据流:开启
  • 自定义数据流消息格式:选择 Modbus RTU
  • 是否支持 TCP 接入:开启

完成创建,我们进入刚创建的 设备类型详情页 > 自定义数据流,可以看到已经默认创建了一个标识符为 stream 的自定义数据流,并且 已开启 TCP。如下图:

这相当于我们为该设备类型下的所有设备,开放了 TCP 接入通道。至于这里的标识符和 Topic 等信息,我们可以忽略,在使用 TCP 通道时没有实际作用。

提示

关于 自定义数据流 的详细介绍,请浏览 自定义数据流

创建设备

接下来,我们来正式创建一个设备,为设备绑定刚创建的设备类型,这样新设备便拥有了之前配置好的 TCP 接入通道。如下图:

获得 TCP 连接参数

设备创建成功后,进入 设备详情页 > 连接,找到以下信息:

  • 设备的普通证书,包括 ProjectKeyAccessToken,用于配置 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 等任意格式,例如:1Ox00

注册包

这里特别说明一下注册包,举个例子:

假如您的设备普通证书是:

  • 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 转换工具open in new window

完成以上配置后,可以先保存 DTU 配置。

到目前为止,我们在 DTU 端已经完成了 TCP 透传方式连接 ThingsCloud 的所有配置。

数据发送和接收测试

为了测试 DTU 和云平台是否已经通过 TCP 透传成功连接,您可以在 设备详情页 > 消息 中,开启 调试状态,用于查看设备发送和接收的消息。

常用的测试方法,例如:

  • 用配置 DTU 的专用上位机软件,将 DTU 切换到透传模式,然后向 DTU 发送数据,在云平台设备消息列表中刷新,检查是否会显示相应的消息。
  • 同样在 DTU 的透传模式下,用其它任何串口调试工具,连接到 DTU 的从机端口,例如:RS485 端口,模拟子设备发送消息给 DTU,在云平台设备消息列表中刷新,检查是否会显示相应的消息。

上报 DTU 子设备的真实数据

最后,我们给 DTU 接上子设备,例如一个 RS485 Modbus 温湿度传感器,通过 Modbus RTU 任务 来定时下发 Modbus 查询指令,并通过 Modbus RTU规则 来自动解析 Modbus 消息,生成设备的属性数据。如下图:

提示

关于规则引擎和任务的详细介绍,请参考: