Onenet edp数据通信整理

Onenet edp数据通信整理

[email protected]

  • 创建产品

1、选多协议接入--edp---添加产品

Onenet edp数据通信整理

 

  • 创建设备
  1. 设备列表--添加设备
  2. Onenet edp数据通信整理

 

三、EDP协议

1、EDP总体包协议定义

消息包括三个部分:必选的消息头(绿色),可选的多个选项(黄色)以及可选的消息体(蓝色)。

字节\bit

7

6

5

4

3

2

1

0

Byte 1

消息类型

保留位(全零)

Multi-bytes

剩余消息长度(1-4字节,指示选项+消息体的长度)

Multi-bytes

选项(根据消息类型0个或多个)

Multi-bytes

消息体(根据消息类型0或多个字节)

 

2、类型定义详解

(1)消息类型:占第一个字节的前4位,取值范围(0-15),定义如下:

类型值

含义

方向

1

CONN_REQ:连接建立请求

C(client)->S(server)

2

CONN_RESP:连接建立响应

S->C

3

PUSH_DATA:转发(透传)数据

双向

4

CONN_CLOSE:连接关闭

S->C

5

UPDATE_REQ:上报当前使用的软件信息

C->S

6

UPDATE_RESP:平台下发当前最新的软件信息

S->C

7

SUB_DEVICE:子设备请求

双向

8

SAVE_DATA:存储(&转发)数据

双向

9

SAVE_ACK:存储确认

S->C

10

CMD_REQ

S->C

11

CMD_RESP

C->S

12

PING_REQ: 心跳请求

C->S

13

PING_RESP: 心跳响应

S->C

14

ENCRYPT_REQ

C->S

15

ENCRYPT_RESP

S->C

其他值

保留

 


2)剩余消息长度:用于指示选项和消息体的字节数,该字段占用1-4个字节,长度值的低位部分放在传输的前面字节,高位放在后面。每个字节的最高位为延续指示位。延续指示位为1时,标示后面字节也是长度值,最多可延续4个字节。可表示数据范围如下:

字节数

最小值

最大值

1

0(0x00)

127(0x7F)

2

128(0x80, 0x01)

16383 (0xFF, 0x7F)

3

16 384 (0x80, 0x80, 0x01)

2 097 151 (0xFF, 0xFF, 0x7F)

4

2 097 152 (0x80, 0x80, 0x80, 0x01)

268 435 455 (0xFF, 0xFF, 0xFF, 0x7F)

 

注意:消息剩余长度 = 选项所占字节数 + 消息体所占字节数,根据该值的大小来确定消息剩余长度字段在EDP数据包中占用多少个字节,比如从上表可以看出,当0<剩余长度<=127的时候,消息剩余长度字段在EDP数据包中只占一个字节,而不是四个字节;当 127<剩余长度<=16383的时候,消息剩余长度字段在EDP数据包中占两个字节,而不是四个字节;依此类推。

 

  1. 选项

根据消息类型,选项的格式不同;详见(Enhanced Device Protocol(EDP)协议文档)

  1. 消息体

根据消息类型,消息体可选,详见(详见Enhanced Device Protocol(EDP)协议文档)

 

  • 设备端连接

1、建立edp连接(OneNET平台地址为 183.230.40.39 :876

2、设备登陆上报信息(:ONN_REQ:连接建立请求  消息类型值为1)

连接请求包含三部分:消息头、选项和消息体。

选项包括协议名称、协议版本、连接标志、保持连接时间。

消息体中可能包含设备ID、用户ID(可选)、鉴权信息。三项内容都为长度+内容的字符串格式设备ID必须传递,若认证方式中不使用设备ID,应将设备ID长度设置为0;用户ID和鉴权信息,根据标志位若存在必须按顺序出现

 

可选的登录认证方式:

登陆认证方式

携带信息

说明

1

设备ID + 鉴权信息(api-key)

设备ID:申请设备时平台返回的ID;

鉴权信息:在平台申请的可以操作该设备的api-key字符串;

2

产品ID + 鉴权信息(auth_info)

产品ID:在平台添加产品时平台生成的ID;

鉴权信息:在平台申请设备时填写设备的auth_info属性(json对象字符串),该属性需要产品内具备唯一性;

 

本例采用登陆方式1:设备ID“43101”和api-key“abcdefg”,登录平台的连接请求消息格式如下:

字节

说明\bit

7

6

5

4

3

2

1

0

消息头

Byte 1

第一字节:

Bit(4-7):消息类型,值为1;

Bit(0-3):保留位,值为0;

0

0

0

1

0

0

0

0

变长剩余消息长度(25编码后需要占用1个字节)

Byte 2

第二字节:

消息剩余字节长度,值为25

0

0

0

1

1

0

0

1

选项1:协议描述(字符串格式)

Byte 3

长度高位字节,值为0

0

0

0

0

0

0

0

0

Byte 4

长度低位字节,值为3

0

0

0

0

0

0

1

1

Byte 5

字母’E’

0

1

0

0

0

1

0

1

Byte 6

字母’D’

0

1

0

0

0

1

0

0

Byte 7

字母’P’

0

1

0

1

0

0

0

0

选项2:协议版本

Byte 8

一个字节表示,值为1

0

0

0

0

0

0

0

1

选项3:连接标志

Byte 9

Bit(7):产品ID标志位,值0,

Bit(6):鉴权信息标志位,值1,表示后面消息体有该项

Bit(0-5):系统保留位,填0

0

1

0

0

0

0

0

0

选项4:保持连接时间(256秒=0x0100)

Byte 10

 

第一字节,时间值的高位字节,值1

0

0

0

0

0

0

0

1

Byte 11

第二字节,时间值的低位字节,值0

0

0

0

0

0

0

0

0

消息体-设备ID(字符串格式)

Byte 12

长度高位字节,值为0

0

0

0

0

0

0

0

0

Byte 13

长度低位字节,值为5

0

0

0

0

0

1

0

1

Byte 14

字符’4’

0

0

1

1

0

1

0

0

Byte 15

字符’3’

0

0

1

1

0

0

1

1

Byte 16

字符’1’

0

0

1

1

0

0

0

1

Byte 17

字符’0’

0

0

1

1

0

0

0

0

Byte 18

字符’1’

0

0

1

1

0

0

0

1

消息体-鉴权信息(字符串格式)

Byte 19

长度高位字节,值为0

0

0

0

0

0

0

0

0

Byte 20

长度低位字节,值为7

0

0

0

0

0

1

1

1

Byte 21

字符’a’

0

1

1

0

0

0

0

1

Byte 22

字符’b’

0

1

1

0

0

0

1

0

Byte 23

字符’c’

0

1

1

0

0

0

1

1

Byte 24

字符’d’

0

1

1

0

0

1

0

0

Byte 25

字符’e’

0

1

1

0

0

1

0

1

Byte 26

字符’f’

0

1

1

0

0

1

1

0

Byte 27

字符’g’

0

1

1

0

0

1

1

1

 

发送数据包(hex):10 19 00 03 45 44 50 01 40 01 00 00 05 34 33 31 30 31 00 07 61 62 63 64 65 66 67

接收返回(hex):20 02 00 00 则表明连接成功

 

3、设备上报数据

(1)存储(&转发)数据协议

字节

说明\bit

7

6

5

4

3

2

1

0

消息头

Byte 1

第一字节:

Bit(4-7):消息类型,值为8

Bit(0-3):保留位,值为0;

1

0

0

0

0

0

0

0

剩余消息长度(16664编码后需要占用3个字节)

Byte 2

消息剩余字节长度(16664)-编码第一字节(低)

1

0

0

1

1

0

0

0

Byte 3

消息剩余字节长度(16664)-编码第二字节

1

0

0

0

0

0

1

0

Byte 4

消息剩余字节长度(16664)-编码第三字节(高)

0

0

0

0

0

0

0

1

固定选项:标志

Byte 5

Bit 7:转发地址指示位,置1,后面有地址信息

Bit 6:消息编号指示位,置1,后面有2字节消息编号

Bit 5-0:系统保留,全零。

1

1

0

0

0

0

0

0

目的或源地址(根据上面的标志位确定存在与否)

Byte 6

固定两字节长度高位字节,值为0

0

0

0

0

0

0

0

0

Byte 7

固定两字节长度低位字节,值为5

0

0

0

0

0

1

0

1

Byte 8

字符’1’

0

0

1

1

0

0

0

1

Byte 9

字母’0’

0

0

1

1

0

0

0

0

Byte 10

字母’0’

0

0

1

1

0

0

0

0

Byte 11

字母’1’

0

0

1

1

0

0

0

1

Byte 12

字母’1’

0

0

1

1

0

0

0

1

消息编号(固定2字节,高字节在前,服务器用此编号返回存储确认) 示例:消息编号为261

Byte 13

消息编号261高位字节

0

0

0

0

0

0

0

1

Byte 14

消息编号261低位字节

0

0

0

0

0

1

0

1

消息体(设备云规定的数据类型格式)

Byte 15

7种数据结构,具体格式见后续说明:

Type = 7:带统一时间戳的浮点数数据流

Type = 6:带默认时间戳的自定义间隔字符串格式

type = 5:自定义间隔字符串格式;

type = 4:JSON格式3字符串;

type = 3:JSON格式2字符串;

type = 2:二进制数据点;

type = 1:JSON格式1字符串;

 

 

 

 

 

 

 

 

 

(2)数据类型3格式说明:

Byte 15

数据点类型指示:type=3    // JSON格式2字符串

0

0

0

0

0

0

1

1

Byte 16

//指示后面字符串长度

长度高位字节

 

 

 

 

 

 

 

 

Byte 17

长度低位字节

 

 

 

 

 

 

 

 

Byte 18

通用格式:

{

“datastream_id1”:”value1”,

“datastream_id2”:”value2”,

}

 

 

 

 

 

 

 

 

 

 

(3)本例以EDP协议的Type3格式上传数据

上报数据点报文格式:消息头(1)+剩余消息长度(1)+标志(1)+消息(2)+JSON数据长度(2)+JSON数据(n)

 

json数据:{"led_1_status":0}

 

发送(hex):80 18 40 00 01 03 00 12 7B 22 6C 65 64 5F 31 5F 73 74 61 74 75 73 22 3A 30 7D //80--存储(&转发)数据    00 01--消息编号    00 12 -- json数据长度

 

接收(hex):90 04 40 00 01 00   //  90--SAVE_ACK响应  00 01--消息编号  00--成功

 

  1. 平台下发命令及终端接收与解析

 

 

Onenet edp数据通信整理

 

Onenet edp数据通信整理

Onenet edp数据通信整理

终端接收(hex):A0 2D 00 24 33 30 64 32 63 36 64 37 2D 38 30 38 34 2D 35 31 62 37 2D 61 63 63 38 2D 62 38 38 33 31 33 66 39 33 64 63 36 00 00 00 03 31 32 33 

//A0  消息类型

//2D  消息长度

// 00 24  命令cmd_uuid长度

//33 30 64 32 63 36 64 37 2D 38 30 38 34 2D 35 31 62 37 2D 61 63 63 38 2D 62 38 38 33 31 33 66 39 33 64 63 36 cmd_uuid

// 00 00 00 03  数据长度

//31 32 33   数据‘123’