设备 TCP 接入
设备 TCP 接入
ThingsCloud 支持设备直接通过 TCP 接入云平台,并支持 JSON、Plaintext、HEX 格式的上下行消息,为更复杂的设备通信提供了无限的可能性。
提示
如果正在 DTU 或 RTU 设备上配置 TCP 方式接入 ThingsCloud,可以浏览相关教程:
准备工作
设备使用 TCP 接入时,必须先在平台创建设备类型,并且设备类型中有一个绑定 TCP 的自定义数据流。
参考
关于自定义数据流的详细介绍,可以浏览 自定义数据流。
创建设备类型
首先打开 ThingsCloud 控制台,进入您的项目。
这里我们创建一个设备类型,名称可以随意填写,其它选项如下图:

在下边的选项中,开启创建默认自定义数据流,消息格式可以根据实际需求来选择,如下图:

进入刚创建的设备类型,在自定义数据流页面中,应该会看到一个自动创建的自定义数据流,标识符为 stream
,并且已开启了绑定 TCP,如下图:

提示
您也可以在创建设备类型的时候不开启默认的自定义数据流,而是在设备类型中手动创建自定义数据流,标识符名称可以随意指定。
创建设备
创建一个设备,绑定到刚创建的设备类型。

TCP 接入点
在设备详情的连接页面中,可以找到设备的 TCP 接入点,格式如下:
tcp://<domain>:<port>
其中的 <domain>
表示 TCP 服务器域名,<port>
表示端口。公有区不支持通过 IP
接入平台,设备端必须支持域名解析。
TCP 注册包
当设备和平台成功建立 TCP 连接后,设备必须马上向云平台发送身份信息,也称为“注册包”,完成身份认证。若设备端在一定时间内未发送注册包,云平台会自动断开设备的 TCP 连接。
注册包的内容由设备证书组成,格式如下:
<ProjectKey>&<AccessToken>
您可以在设备详情页的连接页面中,找到设备证书,如下图:

或者在该页面的底部,找到设备端 TCP 接入点,直接复制注册包。

请注意,当设备完成身份认证后,有其它设备通过相同注册包连接平台,平台会自动断开之前的设备连接。也就是说,同一个注册包(或者说同一组设备证书)不能用于多个设备同时连接到平台。
TCP 心跳包
当设备和云平台建立 TCP 连接并完成身份认证后,便可以相互收发消息。但是,如果相当长一段时间内没有消息通信,双方如何判断对方仍然在线呢?因为 TCP 对于一些非正常的连接断开是无法侦测到的,比如设备断电、网线断掉等。
因此,对于消息通信间隔较长的应用场景,为了让双方尽早的知道连接是否已经断开,从而实现重连,就需要有 TCP 保活机制,这是通过设备定期发送心跳包来实现的。
然后,大多数物联网通信场景的数据上报间隔时间并不长,所以也可以起到保活的目的,心跳包不是必须的。
一型一密
我们已经知道,设备 TCP 接入时需要使用注册包来进行身份验证,而注册包的内容由设备证书组成,因此,我们可以使用动态获取设备证书的方式,来实现设备 TCP 接入的一型一密。
详细介绍请浏览 动态获取设备证书。
如何模拟设备 TCP 接入
在将物联网设备通过 TCP 客户端方式接入 ThingsCloud 的过程中,为了方便学习和调试,您可以使用 PC 软件来模拟设备进行 TCP 接入,以及和平台之间进行数据上传和接收。