TCP/UDP 协议文档

服务器网关
  1. 地址:g.cloud.tzonedigital.cn
  2. 端口:18800
终端与服务器交互流程


终端上行数据协议

1、协议框架

      1.1  FixedHeader 头部格式固定并且包含内容长度的协议

说明:头部格式固定并且包含内容长度的协议,编码为 Hex 这种协议将一个请求定义为两大部分, 第一部分定义了包含第二部分长度等等基础信息. 我们通常称第一部分为头部 "request header(request name + len) + request body"

 

固定起始符

包长度

数据类型

数据区

停止符

545A

0090

0004

00..........

0D0A

 

示例:

协议示例如下

545A0090000416010C011C02573373695247563261574E6C535551694F6949344E6A41774D4441774D4441774D4441774D4441694C434A5356454D694F6A45324E4445354E446B314E6A41774D444173496C526C625841694F6A49324C6A5573496C4A49496A6F314D437769566D39736447466E5A5349364D7934324C434A4D5958524D626D63694F6949696656303D0001EADF0D0A

 

2、数据类型

2.1  终端登录

 

数据类型

协议格式

示例

1

0000

545A(2bytes)

+包长度(2bytes)

+0000(2bytes)

+硬件型号(2bytes)

+固件版本(4bytes)

+IMEI(8bytes)

+校验位(2bytes)

+0D0A(2bytes)

545A001200000000020000000641884907900001C4990D0A

说明:

包长度:从数据类型(包括数据类型)到校验位结束的数据长度.

校验码:从数据类型(包括数据类型)到校验位之前数据

    用途:每次建立连接时,先向服务器发送型号、固件版本、IMEI,在之后数据中可以不带。减少数据量。

 

2.2  请求Ping网速测试

 

数据类型

协议格式

示例

2

0001

545A(2bytes)

+包长度(2bytes)

+0001(2bytes)

+时间(6bytes)

+数据(N bytes)

+校验位(2bytes)

+0D0A(2bytes)

请求32字符的数据

545A 002A000113010A121E01

00000000000000000000000000

000000000000000 00000000000

000000000000 FBD30D0A

注:测试前请先获取服务器时间。  


2.3  回复下行指令处理状态

 

数据类型

协议格式

示例

3

0002

545A(2bytes)

+包长度(2bytes)

+0002(2bytes)

+时间(6bytes)

+状态(1 bytes)

+编号(1 bytes)

+校验位(2bytes)

+0D0A(2bytes)

545A000C000213010A121E010101AF170D0A

说明:状态01代表成功 00代表失败

 

2.4  心跳包

 

数据类型

协议格式

示例

4

0003

545A(2bytes)

+包长度(2bytes)

+0003(2bytes)

+校验位(2bytes)

+0D0A(2bytes)

545A00040003B1410D0A

 

2.5  应用数据包

 

数据类型

协议格式

示例

5

0004

545A(2bytes)

+包长度(2bytes)

+0004(2bytes)

+RTC(6bytes)

+应用数据(N bytes)

+序列号(2bytes)

+校验位(2bytes)

+0D0A(2bytes)

545A

0090

0004

16010C011C02

573373695247563261574E6C535551694F6949344E6A41774D4441774D4441774D444

1774D4441694C434A5356454D694F6A45324E4445354E446B314E6A41774D44417349

6C526C625841694F6A49324C6A5573496C4A49496A6F314D437769566D39736447466

E5A5349364D7934324C434A4D5958524D626D63694F6949696656303D

0001

EADF

0D0A

 

3、应用数据

3.1  温湿度传感器

 

协议格式

示例

1

[{

"DeviceID":设备唯一编号,

"RTC":时间截,

"Temp":温度(℃),

"RH":湿度(%),

"Voltage":电压(v),

"LatLng"经纬度:

}]

[{

"DeviceID":"860000000000000",

"RTC":1641949560000,

"Temp":26.5,

"RH":50,

"Voltage":3.6,

"LatLng":"22.547,114.085947"

}]

2

[{

"DeviceID":"860000000000000",

"RTC":1641949560000,

"Temp":26.5,

"RH":50,

"Voltage":3.6,

"LatLng":"22.547,114.085947"

},{

"DeviceID":"860000000000001",

"RTC":1641949560000,

"Temp":27.5,

"RH":50,

"Voltage":3.6,

"LatLng":"22.547,114.085947"

}]


[{"DeviceID":"860000000000000","RTC":1641949560000,"Temp":26.5,"RH":50,"Voltage":3.6,"LatLng":""}]

对数据使用Base64编码处理后:

W3siRGV2aWNlSUQiOiI4NjAwMDAwMDAwMDAwMDAiLCJSVEMiOjE2NDE5NDk1NjAwMDAsIlRlbXAiOjI2LjUsIlJIIjo1MCwiVm9sdGFnZSI6My42LCJMYXRMbmciOiIifV0=

再转为字节数组:

573373695247563261574E6C535551694F6949344E6A41774D4441774D4441774D4441774D4441694C434A5356454D694F6A45324E4445354E446B314E6A41774D444173496C526C625841694F6A49324C6A5573496C4A49496A6F314D437769566D39736447466E5A5349364D7934324C434A4D5958524D626D63694F6949696656303D


 

服务器下行数据协议


1、协议框架

    1.1  Command Line 命令行协议

  说明:命令行协议,编码为 Ascii。命令行协议定义了每个请求以回车换行结尾 "\r\n"

固定头

数据类型

 

数据区

固定结束符

回车换行

@

 

,

 

#

\r\n

示例:

下行服务器当前UTC时间

@UTC,2019-01-10 09:52:01#

 

2、数据类型

     2.1 服务器当前UTC时间

 

数据类型

协议格式

终端请求

示例

1

UTC

@UTC,yyyy-MM-dd HH:mm:ss#

建立TCP连接

@UTC,2019-01-10 09:52:01#

 

2.2  ACK数据确认

 

数据类型

协议格式

终端请求

示例

2

ACK

@ACK,N#

请查看硬件协议文档

@ACK,1#

说明:N为上行数据中序列号,> 0,代表接收处理成功;为-1,代表处理失败.

 

2.3 错误

 

数据类型

协议格式

终端请求

示例

3

ERROR

@ERROR,N#

任意请求

@ERROR,001#

说明:N为错误码.

错误码

说明

终端处理要求

000

未知错误

断开连接,重新连接服务器

001

服务器接收服务不可用,暂时无法接收数据

暂停5分钟后尝试连接服务器。(由于不确定因素,可能网关内部功能模块不能正常工作,此时往服务器发送的数据,无法保存。

002

当前连接数超过服务器可承受最大数目。

暂停5分钟后尝试连接服务器。

003

客户端发送数据过快。

调整发送间隔

004

数据解析错误

丢掉数据,发送下一条。(解析数据时,终端不要一直重复发送同一条数据。

005

数据时间不在服务器接收的范围内

丢掉历史数据(根据应用要求定

006

未知客户端设备

停止连接服务器(新产品服务器未支持情况)

007

该设备已被禁用

暂停5分钟后尝试连接服务器。

 

2.4  Ping网速测试

 

数据类型

协议格式

终端请求

示例

4

PING

@PING,size,time#

参考“终端上行数据协议”

请求32字符数据,耗时30毫秒。@PING,32,30#

说明:size为上行字符数据大小,time耗时,单位:毫秒.

       用途:可以知道当前网络情况,扩展应用。


2.5  下行指令

 

数据类型

协议格式

终端请求

示例

5

CMD

@CMD,Command,N#

任意请求

修改密码指令@CMD,*000000,001,123456#,1#

说明:Command 为指令。N为分配的编号,用于区分指令,终端回复中使用。