设备 TCP 接入
设备 TCP 接入
ThingsCloud 支持设备直接通过 TCP 接入云平台,并支持 JSON
、Text
、HEX
格式的上下行消息,为更复杂的设备通信提供了无限的可能性。
提示
如果您正在使用可配置的 DTU/RTU 设备,请直接浏览:
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
、自定义 ASCII
、JSON
等。
绑定 TCP 数据流
而对于 TCP 连接,我们只需要选择一个已创建的自定义数据流,进行绑定即可。
也就是说,被绑定的自定义数据流,同时也具备了 TCP 通道。
创建好的自定义数据流,如下图:
TCP 自定义数据上报
一旦完成上边的 TCP 绑定自定义数据流,设备端就可以通过 TCP socket 发送符合负载格式的数据,例如:类似属性消息结构的 JSON
消息,或者自定义的 HEX
消息。
云平台收到 TCP 自定义数据上报后,您可以创建规则引擎来对数据做各种解析和处理,云平台提供了云函数等可编程方式,您也可以将数据转发给第三方的 WebHook URL,进行其它专用的异步计算。
TCP 自定义数据下发
要向已通过 TCP 连接到云平台的设备下发自定义数据,可以通过如下方式:
- 在控制台的【应用端调试】中,通过应用端 API,实现自定义数据流下发。
- 直接在第三方应用程序中,调用应用端 API,实现自定义数据流下发。