跳至主要內容

设备 TCP 接入

约 1231 字大约 4 分钟

设备 TCP 接入

ThingsCloud 支持设备直接通过 TCP 接入云平台,并支持 JSONTextHEX 格式的上下行消息,为更复杂的设备通信提供了无限的可能性。

TCP 接入点

在设备详情的【连接】页面中,可以获取设备专用的 TCP 接入点,格式如下:

tcp://<domain>:<port>

设备接入时,只需使用 <domain><port>。公有区不支持通过 IP 接入云平台,设备必须支持域名解析。

设备身份认证

当设备和云平台成功建立 TCP 连接后,设备必须马上向云平台发送身份信息,完成身份认证。若设备端在一定时间内未发送身份信息,云平台会自动断开设备的 TCP 连接。

设备端发送的身份信息格式如下:

<ProjectKey>&<AccessToken>

请在设备详情的【连接】页面中,复制设备专属的 <ProjectKey><AccessToken>

以上消息也称为 注册包,在使用 TCP 透传方式的网关或 DTU 中,同样可以使用该注册包连接到云平台。

请注意,当设备完成身份认证,有其它设备通过相同身份信息连接云平台,会自动顶掉之前的设备连接。

TCP 心跳包

当设备和云平台建立 TCP 连接并完成身份认证后,便可以相互收发消息。但是,如果相当长一段时间内没有消息通信,双方如何判断对方仍然在线呢?因为 TCP 对于一些非正常的连接断开是无法侦测到的,比如设备断电、网线断掉等。

因此,对于消息通信间隔较长的应用场景,为了让双方尽早的知道连接是否已经断开,从而实现重连,就需要有 TCP 保活机制,这是通过设备定期发送心跳包来实现的。

然后,大多数物联网通信场景的数据上报间隔时间并不长,所以也可以起到保活的目的,心跳包不是必须的。

自定义数据流

云平台提供的 TCP 接入方式,并不像 MQTT 一样拥有一套内置的设备访问协议,而是需要您对 TCP 通道所属的自定义数据流,设置相应的消息规则,实现自定义数据和设备属性之间的解析和处理。

创建设备类型

要开启自定义数据流,首先要创建设备类型。设备类型是用来统一定义设备的属性和功能。

在控制台的【设备类型】中便可以创建设备类型,进入创建好的设备类型,在【关联设备】页面中,将设备添加到设备类型中,相当于为设备赋予了设备类型中定义的属性和功能。

创建自定义数据流

接着,在【自定义数据流】页面中,您可以创建自定义数据流,如下:

自定义数据流
自定义数据流

事实上,自定义数据流自动生成了相应的 MQTT 发布主题和订阅主题,并允许您设置的负载中的消息协议,例如 Modbus RTU自定义 HEX自定义 ASCIIJSON 等。

绑定 TCP 数据流

而对于 TCP 连接,我们只需要选择一个已创建的自定义数据流,进行绑定即可。

也就是说,被绑定的自定义数据流,同时也具备了 TCP 通道。

自定义数据流
自定义数据流

创建好的自定义数据流,如下图:

自定义数据流
自定义数据流

TCP 自定义数据上报

一旦完成上边的 TCP 绑定自定义数据流,设备端就可以通过 TCP socket 发送符合负载格式的数据,例如:类似属性消息结构的 JSON 消息,或者自定义的 HEX 消息。

云平台收到 TCP 自定义数据上报后,您可以创建规则引擎来对数据做各种解析和处理,云平台提供了云函数等可编程方式,您也可以将数据转发给第三方的 WebHook URL,进行其它专用的异步计算。

TCP 自定义数据下发

要向已通过 TCP 连接到云平台的设备下发自定义数据,可以通过如下方式:

  • 在控制台的【应用端调试】中,通过应用端 API,实现自定义数据流下发。
  • 直接在第三方应用程序中,调用应用端 API,实现自定义数据流下发。