当前位置:首页 > EDP协议 - 图文
5.5 存储(&转发)数据
该消息是一个双向消息,可以从设备到云,也可以由设备云发向设备。由消息头、1到2个选项和消息体组成,其中选项标志位为必填,其他根据标志位选填。
固定选项标志位第7位置1,表示后面携带有地址信息,否则置0。
固定选项标志位第6位置1,表示后面携带有消息编号。消息编号是一个非零值。若携带有消息编号,服务器收到此消息后,会响应一个SAVE_ACK消息。
固定选项标志位其它位系统保留。
若同时发送多个数据包,平台最多一次处理100个。 save_data消息方向 C->S(设备到平台) 选项(地址)说明 平台收到该消息,选项中的地址是该数据转发的目的地址(目的设备ID号); 若目的地址的长度为零,即没有目的地址,则平台将该消息转发到设备注册时的默认目的地址(设备申请时,填写的route_to字段)。 设备收到该消息,选项中的地址是该数据发送的发送者(源)地址; S->C (平台到设备) 例A :上报数据点报文,并转发数据到ID 为10011的设备。
字节 消息头 Byte 1 说明\\bit 第一字节: Bit(4-7):消息类型,值为8; Bit(0-3):保留位,值为0; 消息剩余字节长度(16664)-编码第一字节(低) 消息剩余字节长度(16664)-编码第二字节 消息剩余字节长度(16664)-编码第三字节(高) 7 1 6 0 5 0 4 0 3 0 2 0 1 0 0 0 剩余消息长度(16664编码后需要占用3个字节) Byte 2 Byte 3 Byte 4 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 固定选项:标志 Byte 5 Bit 7:转发地址指示位,置1,后面有地址信息 Bit 6:消息编号指示位,置1,后面有2字节消息编号 Bit 5-0:系统保留,全零。 目的或源地址(根据上面的标志位确定存在与否) Byte 6 Byte 7 Byte 8 Byte 9 Byte 10 Byte 11 Byte 12 固定两字节长度高位字节,值为0 固定两字节长度低位字节,值为5 字符’1’ 字母’0’ 字母’0’ 字母’1’ 字母’1’ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 消息编号(固定2字节,高字节在前,服务器用此编号返回存储确认)示例:消息编号为261 Byte 13 0 0 0 0 0 0 消息编号261高位字节 Byte 14
消息编号261低位字节 13 / 26
0 0 0 0 0 1 消息体(设备云规定的数据类型格式) Byte 15 … … Byte n 7种数据结构,具体格式见后续说明: Type = 7:带统一时间戳的浮点数数据流 Type = 6:带默认时间戳的自定义间隔字符串格式 type = 5:自定义间隔字符串格式; type = 4:JSON格式3字符串; type = 3:JSON格式2字符串; type = 2:二进制数据点; type = 1:JSON格式1字符串; 数据类型指示:type=7//浮点数数据流 年(后两位),例如2016年,则该字节为16 月(1-12) 日(1-31) 小时(0~23) 分钟(0~59) 秒(0~59) //数据点个数,每次最多1000个浮点类型数据点 // 假设当前有2个浮点类型数据点 高位字节,值为0x00 低位字节,值为0x02 //数据流名称(本类型中名称限定为1-65535的数字,平台会自动转为字符串类型存储。) 高位字节,值为0x00 低位字节,值为0x01 4字节float类型,低位在前,高位在后 数据类型7格式说明: Byte 15 Byte 16 Byte 17 Byte 18 Byte 19 Byte 20 Byte 21 Byte 22 0 0 0 0 0 1 1 1 Byte 23 Byte 24 Byte 25 Byte 26 Byte 27 Byte 28 Byte 29 ... Byte n //数据流名称(本类型中名称限定为1-65535的数字,平台会自动转为字符串类型存储。) 高位字节,值为0x24 低位字节,值为0x37 4字节float类型,低位在前,高位在后 Byte n+1 Byte n+2 Byte n+3 Byte n+4 Byte n+5 数据类型6格式说明: Byte 15 数据类型指示:type=6//带时间自定义分隔符 Byte 16 Byte 17
0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 年(后两位),例如2016年,则该字节为16 月(1-12) 14 / 26
Byte 18 Byte 19 Byte 20 Byte 21 Byte 22 Byte 23 Byte 24 … … Byte n Byte 15 Byte 16 Byte 17 Byte 18 日(1-31) 小时(0~23) 分钟(0~59) 秒(0~59) //指示后面字符串长度 固定两字节长度高位字节,值为0x00 固定两字节长度低位字节,值为0x41 消息中最前面两字节为用户自定义的域中分隔符和域间分隔符。 具体格式见type=5 说明,若相关域中没有时间戳,则采用本类型的默认时间戳当做数据点的时间来存储。 数据点类型指示:type=5 //自定义分隔符 //指示后面字符串长度 固定两字节长度高位字节,值为0x00 固定两字节长度低位字节,值为0x41 消息中最前面两字节为用户自定义的域中分隔符和域间分隔符,这两个分隔符不能相同。比如采用逗号作为域中分隔符,分号作为域间分隔符的格式如下: ,;feild0;feild1;…;feildn 其中,每个field格式支持3种: field格式1:3个子字段,分别是数据流ID,时间戳,数据值。通用格式: Datastream_id,datetime,value field格式2:2个子字段,分别是数据流ID和数据值,省略时间戳。通用格式: Datastream_id,value field格式3:1个子字段,省略了数据ID和时间戳,只传输数据值,平台将用该域(feild)所在的位置号(从0开始)作为数据流ID。通用格式: value 示例: (1),;temperature,2015-03-22 22:31:12,22.5;102;pm2.5,89;10 (2)#@temperature#2015-03-22 22:31:12#22.5@102@pm2.5#89@10 数据点类型指示:type=4//JSON格式3字符串 //指示后面字符串长度 固定两字节长度高位字节,值为0x00 固定两字节长度低位字节,值为0x46 通用格式: { 15 / 26 0 0 0 0 0 1 0 1 数据类型5格式说明: … … … … … … … … … … Byte n 数据类型4格式说明: Byte 15 Byte 16 Byte 17 Byte 18 …
0 0 0 0 0 1 0 0 … … … Byte n “datastream_id1”:{“datetime1”:”value1”}, “datastream_id2”: {“datetime2”:”value2”}, … } 示例: {“temperature”:{“2015-03-22 22:31:12”:22.5}} 数据点类型指示:type=3// JSON格式2字符串 //指示后面字符串长度 固定两字节长度高位字节,值为0x00 固定两字节长度低位字节,值为0x46 通用格式: { “datastream_id1”:”value1”, “datastream_id2”:”value2”, … } 示例: {“temperature”:22.5,”humidity”:”95.2%”} 数据类型3格式说明: Byte 15 Byte 16 Byte 17 Byte 18 … … … … Byte n 0 0 0 0 0 0 1 1 数据类型2格式说明: Byte 15 数据点类型指示:type=2//二进制数据 Byte 16 Byte 17 Byte 18 … Byte n Byte n+1 Byte n+1 Byte n+2 Byte n+3 Byte n+4 … Byte n+260 数据类型1格式说明: Byte 15 Byte 16 数据点类型值:1 //1: json格式1字符串 //指示后面json字符串长度 固定两字节长度高位字节,值为0x00 16 / 26
0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 //指示后面json字符串长度 固定两字节长度-高位字节,值为0x00 固定两字节长度-低位字节,值为0x10 { ”ds_id”:”image”, //创建数据流时定义的ID,(必填) “at”:”2014-10-25 12:23:23”, //时间,(可选) ”desc”:字符串或json对象//对该数据的描述(可选) } //指示后面二进制数据长度 固定四字节长度-第1字节(最高),值为0x00 固定四字节长度-第2字节,值为0x00 固定四字节长度-第3字节,值为0x01 固定四字节长度-第4字节(最低),值为0x00 //该域目前最大支持3M 本例中的该域256字节数据 0
共分享92篇相关文档