编辑: 过于眷恋 | 2013-05-04 |
01000 电 千瓦时 01A00 照明插座用电 千瓦时 01A10 照明与插座 千瓦时 01A20 走廊与应急 千瓦时 01A30 室外景观照明 千瓦时 01B00 空调用电 千瓦时 01B10 冷热站 千瓦时 01B1A 冷冻泵 千瓦时 01B1B 冷却泵 千瓦时 01B1C 冷机 千瓦时 01B1D 冷却塔 千瓦时 01B1E 热水循环泵 千瓦时 01B1F 电锅炉 千瓦时 01B20 空调末端 千瓦时 01B2A 全空气机组 千瓦时 01B2B 新风机组 千瓦时 01B2C 排风机组 千瓦时 01B2D 风机盘管 千瓦时 01B2E 分体式空调器 千瓦时 01C00 动力用电 千瓦时 01C10 电梯 千瓦时 01C20 水泵 千瓦时 01C30 通风机 千瓦时 01D00 特殊用电 千瓦时 01D10 信息中心 千瓦时 01D20 洗衣房 千瓦时 01D30 厨房餐厅 千瓦时 01D40 游泳池 千瓦时 01D50 健身房 千瓦时 01D51 其他 千瓦时 说明: 表示必须通过实际电表计算得出,如果线路允许,应尽量安装电表,否则可以通过拆分得出. 附录2 TCP通讯规约 网络层数据包格式 数据传输网关和数据中心传输的网络层数据包格式是指通过TCP协议传输时的格式,不但包括应用层的数据包,还包括因为TCP协议特性而增加的附加信息,以保证数据的顺利传输.格式定义如下: Head Type Length Data Head:消息头,2个字节,固定为0x1F1F. Type:消息类型,1个字节: 0x1:身份认证,Data体是明文数据 0x2:心跳信息,Data体是明文数据 0x3:能耗数据,Data体是通过AES加密后的数据 Length:4个字节,Integer整型,指明消息体Data长度,采用网络字节顺序(高位字节在前). Data:应用层数据包,明文或是经过AES加密后的数据,原始数据是变长字符串,xml格式的消息,UTF-8编码,格式见附录4. 身份认证过程 数据中心使用MD5算法进行数据传输网关认证,具体过程如下: (1)TCP连接建立成功后,数据采集器向数据中心发送身份认证请求;
(2)数据中心向数据采集器发送一个随机序列;
(3)数据采集器将本地存储的认证密钥(AES加密密钥)和接收到的随机序列组合成一连接串,计算连接串的MD5值并发送给数据中心;
(4)数据中心将接收到的MD5值和本地计算结果相比较,如果一致则认证成功,否则认证失败. 认证密钥存储在数据中心和数据传输网关的本地文件系统中,密钥长度128bit. 数据传输网关和数据中心通信过程如附图1所示. 附图1 数据传输网关和数据中心通信过程 2.数据加密 使用AES加密算法对XML数据包进行加密,加密密钥和认证密钥相同,长度为128bit.AES采用CBC算法模式,PKCS7/PKCS5填充模式,向量和密钥相同. 附录3 WebService通讯规约 数据中心提供WebService服务以方便数据传输网关上传能耗数据和心跳数据. WebService服务名:DataTransmissionService,提供以下方法: 能耗数据传输方法 public string transportEnergyData (string buildingId , string gatewayId , byte[] sequence , byte[] md5, byte[] message) 传输网关将存储的本地密钥(AES加密密钥)加上传输网关生成的随机序列sequence计算出的md5值作为参数,随机序列和能耗数据也作为参数调用transportEnergyData上传能耗数据. 参数说明: sequence:传输网关生成的随机序列;
md5:网关存储的本地密钥加上传输网关生成的随机序列sequence计算出的md5值;
buildingId:楼宇编码;
gatewayId:网关编码;
message:能耗数据,原始格式说明见附录4,需使用AES算法加密,AES AES采用CBC算法模式,PKCS7/PKCS5填充模式,向量和密钥相同;
返回值:如果正确解析,返回OK,否则返回错误描述,详细格式见附录4的能耗数据传输后数据中心的回应消息,xml格式,加密后传输. 心跳数据传输方法 public string transportHeartBeat (string buildingId , string gatewayId) 参数说明: buildingId:楼宇编码 gatewayId:网关编码 返回值:返回授时时间字符串:格式YYYYMMDDHHMMSS,详细格式见附录4,xml格式,明文传输. 附录4 数据传输的XML数据格式 1.身份验证数据包(id_validate) XXXXXX XXX id_validate XXXXXXXX XXXXXXXX pass/fail 说明: 此操作只在使用TCP方式传输时有效. common元素:通用部分,属性说明: building_id:楼栋编号 gateway_id: 网关的ID type:固定为id_validate,指明是身份验证 id_validate元素: operation属性:共有四种: request:采集器请求身份验证(该数据包为采集器发送给服务器),无子元素. sequence:服务器发送一串随机序列,sequence子元素有效(该数据包为服务器发送给采集器). md5:采集器发送计算的MD5,md5子元素有效(该数据包为采集器发送给服务器),注意此处的md5值是转换成16进制后的字符串,参考附录5. result:服务器发送验证结果,result子元素有效(该数据包为服务器发送给采集器) 2.心跳/校时数据包(heart_beat) XXXXXX XXX heart_beat YYYYMMDDHHMMSS 说明: common元素:通用部分,属性说明: building_id:楼栋编号 gateway_id:采集器编号 type:固定为heart_beat,指明是心跳/校时 heart_beat元素:心跳/校时,属性说明: operation:两种操作类型, notify:采集器定期给服务器发送存活通知,无子元素 time:服务器在收到存活通知后发送授时信息,此时子元素time有效 3.能耗远传数据包(data) 数据传输网关发送的信息: XXXXXX XXX energy_data YYYYMMDDHHMMSS 读数值1 读数值2 数据1 数据2 说明: (1)common元素,通用部分,属性说明: building_id:楼栋编号 gateway_id:采集器编号 type:type: energy_data,指明是能耗数据 (2)data元素,远传数据: operation属性:两种操作类型, report:采集器定时上报的能耗数据 continuous:断点续传的历史能耗数据 finish: 断点续传的历史能耗数据全部发送完成,无子元素 energy_items元素:能耗分项数据, energy_item元素:上传的分项h code分项代码,数值是分项下所有仪表运算后的瞬时读数值,需要上传的分项参考附录1 meters元素,仪表组合: total属性: 应该采集的总仪表数,因为采集链路故障,发送的仪表读数可能小于这个值. meter元素,仪表: id属性:仪表的id name属性:仪表名称 function元素:每个计量装置的具体采集功能,具有下列3种属性: error属性:该功能出现错误的描述,空字符串表示没有错误 id属性:计量装置的数据采集功能代码,定义如下,目前只使用WPP: Ua:A相电压,Ub:B相电压,Uc:C相电压,Uab:AB线电压 Ubc:BC线电压,Uca:CA线电压,Ia:A相电流,Ib:B相电流 Ic:C相电流,Iab:AB线电流,Ibc:BC线电流,Ica:CA线电流 Pa:A相有功功率,Pb:B相有功功率,Pc:C相有功功率 Ps:总有功功率, 单位kw Qa:A相无功功率,Qb:B相无功功率,Qc:C相无功功率 Qs:总无功功率,单位kw PFa:A相功率因数,PFb:B相功率因数,PFc:C相功率因数 PFs:总功率因数 Sa:A相视在功率,Sb:B相视在功率,Sc:C相视在功率 Ss:总视在功率 Uavg:相电压均值,ULavg:线电压均值,Lavg:电流均值 WPP:正向有功电能,单位kwh,WQP:正向无功电能,单位kwh,F:频率 数据中心回应的信息: XXXXXX XXX energy_data YYYYMMDDHHMMSS OK/fail… 说明:如果数据格式和内容正确,ack中返回OK,否则返回错误信息.Time是网关发送数据中包含的消息. 4. 如果由于对消息的解密错误或者xml文档格式错误等原因导致文档不能解析,服务端将回应下列消息,错误描述在error元素中. error description 附录5 数据签名/加密算法验证参考 对本通讯规约使用的MD5和AES算法,可使用下列示例进行验证算法是否正确: MD5算法 明文 abc abcdefghijklmnopqrstuvwxyz 密文 byte(-128~127) -112,1,80,-104,60,-46,79,-80,-42,-106,63,125,40,-31,127,114 -61,-4,-45,-41,97,-110,-28,0,125,-5,73,108,-54,103,-31,59 byte(0~256) 144,1,80,152,60,210,79,176,214,150,63,125,40,225,127,114 195,252,211,215,97,146,228,0,125,251,73,108,202,103,225,59 十六进制 900150983cd24fb0d6963f7d28e17f72 c3fcd3d76192e4007dfb496cca67e13b AES算法 AES使用采用CBC算法模式,PKCS5/PKCS7填充模式,向量和密钥相同. 明文 hello,world! 密钥 chinashanghaijky 密文 byte(-128~127) 35,118,54,20,-110,33,-7,92,121,-103,21,52,-119,96,-120,-30 byte(0~256) 35,118,54,20,146,33,149,92,121,153,21,52,137,96,126,226 十六进制 237636149221f95c79991534896088e2 备注:对于byte类型,由于不同言语对应的值范围不同,如C、C++、java是-128~127,C#是0~256,因此对应范围不同的值在不同语言中显示值会有不同,但对结果没有影响. MD5和AES说明 通过Tcp传输,在身份验证时xml格式中的MD5需要转换成16进制字符串,而通过Webservice传输时是byte,不要转换成16进制字符串.在通过Tcp和Webservice传输的 AES加密数据是byte,不要转换成16进制字符串. ........