Appearance
TCP协议接入
协议简介
TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在物联网通信中,TCP协议具有以下优势:
- 可靠性:提供数据传输的可靠保证
- 广泛支持:大部分联网设备都支持TCP协议
- 适用性强:适合各种物联网应用场景
发布/订阅模式
巴法云采用发布/订阅(Pub/Sub)消息模式,实现设备间的通信:
- 订阅(Subscribe):订阅某个主题后,可以接收发送到该主题的所有消息
- 发布(Publish):向指定主题发送消息,所有订阅该主题的设备都会收到
工作原理
当设备A订阅主题"light001"时,任何发送到"light001"主题的消息,设备A都能收到。这样就实现了设备间的通信。
连接信息
服务器配置
- 服务器地址:
bemfa.com
- 端口:
8344
消息格式
TCP协议使用键值对格式进行通信,字段间用 &
分隔,每条指令以 \r\n
结尾。
字段说明
字段 | 说明 | 示例 |
---|---|---|
cmd | 消息类型(详见下表) | cmd=1 |
uid | 用户私钥(从控制台获取) | uid=xxxxxxxx |
topic | 主题名称(设备标识) | topic=light001 |
msg | 消息内容 | msg=on |
消息类型(cmd)
值 | 功能 | 说明 |
---|---|---|
1 | 订阅消息 | 订阅主题,接收消息 |
2 | 发布消息 | 向主题发送消息 |
3 | 订阅+历史 | 订阅主题并拉取最新消息 |
7 | 获取时间 | 获取服务器时间 |
9 | 获取历史 | 拉取主题最新消息 |
协议规范
重要说明
- 分隔符:字段间使用
&
分隔 - 结尾符:每条指令必须以
\r\n
结尾 - 心跳机制:建议60秒发送一次心跳,超过65秒未发送会断线
心跳机制
发送任意数据都可作为心跳消息,建议定期发送以保持连接:
bash
ping\r\n
订阅
订阅主题,单次最多订阅八个主题
cmd=1&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=xxx1,xxx2,xxx3,xxx4\r\n
正常返回:
cmd=1&res=1
发布
cmd=2&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=off\r\n
正常返回:
cmd=2&res=1
订阅主题,并获取一条历史消息
cmd=3&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002\r\n
正常返回:
cmd=3&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=on
获取一次时间
cmd=7&uid=xxxxxxxxxxxxxxxxxxxxxxx&type=1\r\n
正常返回:
2021-06-11 16:39:27
type=1 获取当前日期和时间,例如:2021-06-11 17:20:54
type=2 获取当前时间,例如:17:20:54
type=3 获取当前时间戳,例如:1623403325
获取一次已发消息
cmd=9&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002\r\n
正常返回:
cmd=9&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=on
发送心跳
ping\r\n
正常返回:
cmd=0&res=1
发送任意数据,并以\r\n结尾,都为心跳消息,包括上述发布、订阅指令也都算是心跳。 心跳消息是告诉服务器设备还在线,建议60秒发送一次,超过65秒未发送心跳会掉线。
set 指令
推送消息时:主题名后加/set推送消息,表示向所有订阅这个主题的设备们推送消息,假如推送者自己也订阅了这个主题,消息不会被推送给它自己,以防止自己推送的消息被自己接收。 例如向主题 light002推送数据,可为 light002/set ,示例:
cmd=2&uid=4d9ec352e0376f2110a0c601a2857225&topic=light002/set&msg=on
up 指令
推送消息时:主题名后加/up推送消息,表示只更新云端数据,不进行任何推送。 例如向主题 light002推送数据,可为light002/up,示例:
cmd=2&uid=4d9ec352e0376f2110a0c601a2857225&topic=light002/up&msg=on
app 指令
订阅时:主题名后加/app订阅主题,不会占用设备在线状态,即不会显示设备在线,可用于app、小程序等订阅时使用。
示例:
cmd=1&uid=4d9ec352e0376f2110a0c601a2857225&topic=light002/app
测试教程:点击调整
测试视频:点击观看