市、区两级平台数据通信协议 V2.0
上海市国家机关办公建筑和大型公共建筑能耗监测系统通信协议
市、区两级平台数据通信协议 V2.0
2017.2
为方便上海市国家机关办公建筑和大型公共建筑能耗监测系统市、区两级平台数
据传输和交互,特制订本通信协议。
1 术语
1.1 上海市国家机关办公建筑和大型公共建筑能耗监测系统市级平台
面向全市范围内符合节能监管要求的国家机关办公建筑和大型公共建筑,负责建筑总体用能状况的监测和分析,具有向市级行业主管部门和节能监管部门等提供全市各类建筑用能数据以及统计分析功能的能耗监测平台。
1.2 上海市国家机关办公建筑和大型公共建筑能耗监测系统区级平台
面向全区范围内符合节能监管要求的国家机关办公建筑和大型公共建筑,为区节能主管部门提供建筑能耗监测、分析和管理等功能的能耗监测平台。
1.3 市级机关办公建筑能耗分平台
市级机关办公建筑能耗分平台负责向市级机关节能管理部门提供市级国家机关办公建筑用能状况的实时监测、统计分析和管理功能。
2 数据传输内容和通信方式
2.1 数据传输和交互基于 IP 数据网络,通过 TCP 协议和WebService 协议进行数据传输和交互。
2.2 建筑分类分项能耗数据编码见附录 1。
2.3 区级平台向市级平台上传的能耗数据:
(1) 单幢建筑的时、日、月、年分类分项能耗数据,建筑总能耗、单位建筑能耗、单位空调面积能耗数据;
(2) 按建筑类型和建筑功能市分汇总的时、日、月、年分类分项平均能耗数据;
(3) 区级平台的小时能耗数据每一小时上传 1 次,日、月、年能耗在下一时段开始时刻传输。
2.4 .市级平台向区级平台提供全市平均能耗数据:
(1) 市级平台在接收区级平台上传的能耗数据时,同时向区级平台提供全市按照
建筑类型、建筑功能和能耗分项划分的市级平均值数据;
(2) 区级平台按照附录 4 调用市级平台提供的接口查询全市能耗平均值数据。
2.5 为保证建筑信息数据的统一性,区级平台在增加或修改建筑信息时应调用市级平台的接口对数据进行同步。
2.6 区级平台如因传输网络故障等原因数据未能传输,应在本地缓存数据,则待传输网络恢复正常后数据传输再重新上传。
3 数据传输过程和通信协议
3.1 市、区两级平台能耗数据传输采用 TCP 协议,区级平台查询市级平台全市平均能耗数据采用 WebService 协议;市、区两级平台的建筑信息数据同步采用 WebService 协议。
3.1.1 市、区两级平台能耗数据传输 TCP 协议定义如下,具体通信协议见附录 2:
⚫ 市级平台为服务端,建立 TCP 监听,区级平台发起对数据中心的连接,TCP建立后发送验证信息,市级平台对区级平台进行身份认证验证,验证通过后区级平台发送加密后的能耗数据;
⚫ 区级平台连接后定时发送心跳数据,心跳数据不加密;
⚫ 应用层数据包使用 XML 格式,具体格式见附录 3。
3.2 区级平台可以调用市级平台的 WebService 接口查询全市平均能耗数据,
WebService 协议格式见附录 4。
3.3 市、区两级平台建筑信息数据同步的 WebService 协议定义如下,具体通信协议见附录 5:
⚫ 区级平台在增、删、改建筑信息数据时应调用市级平台的 WebService 接口以保证省市两级平台建筑信息数据的统一性;
⚫ 区级平台在调用市级平台的 WebService 接口进行增、删、改建筑信息数据后,市级平台需要对建筑信息进行审批,审批结果可通过市级平台的 WebService接口查询
⚫ 每幢建筑应有全市唯一的建筑代码,为保证建筑代码的唯一性,区级平台应
按照附录 6 的格式生成建筑代码。
3.4 市、区平台在数据传输时应进行加密,加密使用 AES 加密算法对数据包进行加密,加密密钥和认证密钥相同,长度为 128bit。AES 采用 CBC 算法模式, PKCS7/PKCS5 填充模式,向量和密钥相同。
3.5 程序中涉及到的字符串(string)和字节(byte)之间的转换均采用 UTF-8 编码。
附录 1 建筑分类分项能耗和代码
序号 | 分类分项编码 | 分类分项名称 | 单位 | 计算方法 |
1 | 01000 | 电 | kWh | ★ |
2 | 01A00 | 照明插座系统用电 | kWh | ★ |
3 | 01A10 | 室内照明与插座 | kWh | ☆ |
4 | 01A1A | 室内照明 | kWh | ☆ |
5 | 01A1B | 室内插座 | kWh | ☆ |
6 | 01A20 | 公共区域照明和应急照明 | kWh | ☆ |
7 | 01A2A | 公共区域照明 | kWh | ☆ |
8 | 01A2B | 应急照明 | kWh | ☆ |
9 | 01A30 | 室外景观照明 | kWh | ☆ |
10 | 01B00 | 空调系统用电 | kWh | ★ |
11 | 01B10 | 冷热站 | kWh | ★ |
12 | 01B1A | 冷冻泵 | kWh | ★ |
13 | 01B1B | 冷却泵 | kWh | ★ |
14 | 01B1C | 冷水机组 | kWh | ★ |
15 | 01B1D | 冷却塔 | kWh | ☆ |
16 | 01B1E | 热水泵 | kWh | ★ |
17 | 01B1F | 电锅炉 | kWh | ★ |
18 | 01B20 | 空调末端 | kWh | ☆ |
19 | 01B2A | 空调箱、新风机组 | kWh | ☆ |
20 | 01B2B | 风机盘管 | kWh | ☆ |
21 | 01B2C | 空调市域的通排风设备 | kWh | ☆ |
22 | 01B2D | 多联机/分体式空调器 | kWh | ☆ |
23 | 01C00 | 动力系统用电 | kWh | ★ |
24 | 01C10 | 电梯 | kWh | ☆ |
25 | 01C20 | 水泵 | kWh | ☆ |
26 | 01C30 | 非空调区域通排风设备 | kWh | ☆ |
27 | 01D00 | 特殊系统用电 | kWh | ★ |
28 | 01D10 | 信息中心 | kWh | ☆ |
29 | 01D20 | 厨房餐厅 | kWh | ☆ |
30 | 01D30 | 洗衣房 | kWh | ☆ |
31 | 01D40 | xxx | kWh | ☆ |
35 | 01D50 | 其它 | kWh | ☆ |
36 | 02000 | 水 | m3 | |
37 | 02A00 | 直饮水 | m3 | |
38 | 02B00 | 生活用水 | m3 | |
39 | 02B10 | 厨房餐厅用水 | m3 | |
40 | 02B20 | 盥洗用水 | m3 | |
41 | 02B30 | 洗衣房用水 | m3 | |
42 | 02B40 | 绿化用水 | m3 | |
43 | 02B50 | 水景用水 | m3 | |
44 | 02B60 | 空调用水 | m3 | |
45 | 02B70 | xxx用水 | m3 | |
46 | 02B80 | 洗车用水 | m3 | |
47 | 02B90 | 淋浴用水 | m3 | |
48 | 02BA0 | 锅炉用水 | m3 | |
49 | 02BB0 | 其他用水 | m3 | |
50 | 02C00 | 中水 | m3 | |
51 | 02D00 | 雨水 | m3 | |
52 | 03000 | 燃气 | m3 | |
53 | 03A00 | 天然气 | m3 | |
54 | 03A10 | 冷热源用燃气 | ||
55 | 03A20 | 厨房餐厅用燃气 | ||
56 | 03A30 | 生活热水用燃气 | ||
57 | 03A40 | 其他燃气 | ||
58 | 03B00 | 人工煤气 | m3 | |
59 | 03C00 | 液化气 | m3 | |
60 | 04000 | 燃油 | kg | |
61 | 04A00 | 汽油 | kg |
62 | 04B00 | 煤油 | kg | |
63 | 04C00 | 柴油 | kg | |
64 | 04D00 | 燃料油 | kg | |
65 | 05000 | 集中供热 | kj | |
66 | 06000 | 集中供冷 | kj | |
67 | 07000 | 可再生能源 | kWh | |
68 | 07A00 | 太阳能系统 | kWh | |
69 | 07B00 | 地源热泵系统 | kWh | |
70 | 07C00 | 风力发电系统 | kWh | |
71 | 07D00 | 其他 | kWh | |
72 | 08000 | 其它能源 | kWh |
说明:
★表示应通过实际计量仪表计算得出
☆如果线路允许,应尽量安装计量仪表,否则可以通过拆分得出
附录 2 市、区两级平台能耗数据交互 TCP 通信协议
1. 网络层数据包格式
Head | Type | Length | Data |
市、区平台传输的网络层数据包格式是指通过 TCP 协议网络传输时的格式,不但包括应用层的数据包,还包括因为 TCP 协议特性而增加的附加信息,以保证数据的顺利传输。格式定义如下:
Head:消息头,2 个字节,固定为 0x1F1F。 Type:消息类型,1 个字节:
⚫ 0x1:身份认证,Data 体是明文数据
⚫ 0x2:心跳信息,Data 体是明文数据
⚫ 0x3:能耗数据,Data 体是通过 AES 加密后的数据
Length:4 个字节,Integer 整型,指明消息体 Data 长度,采用网络字节顺序(高位字节在前)。
Data:应用层数据包,明文或是经过 AES 加密后的数据,原始数据是变长字符
串,xml 格式的消息,UTF-8 编码,格式见附录 3。
2. 身份认证过程
市级平台使用 MD5 算法进行对区级平台进行身份认证,具体过程如下:
(1)TCP 连接建立成功后,区级平台向市级平台发送身份认证请求;
(2)市级平台向区级平台发送一个随机序列;
(3)区级平台将本地存储的认证密钥(AES 加密密钥)和接收到的随机序列组合成一连接串,计算连接串的 MD5 值并发送给市级平台;
(4)市级平台将接收到的 MD5 值和本地计算结果相比较,如果一致则认证成功,否则认证失败。
认证密钥存储在市级平台和区级平台的本地文件系统中,密钥长度 128bit。 2.数据加密
使用 AES 加密算法对 XML 数据包进行加密,加密密钥和认证密钥相同,长度为
128bit。AES 采用 CBC 算法模式,PKCS7/PKCS5 填充模式,向量和密钥相同。
附录 3 应用层数据包 XML 数据格式
1.身份验证数据包(id_validate)
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XXXXXX</ platform _id >
<type>id_validate</type>
</common>
<id_validate operation="request/sequence/md5/result">
<sequence>XXXXXXXX </sequence>
<md5>XXXXXXXX</md5>
<result >pass/fail: </result >
</id_validate>
</root>
说明:
common 元素:通用部分,属性说明: platform _id:区级平台代码,详见附录 6 type:固定为 id_validate,指明是身份验证
id_validate 元素:
operation 属性:共有四种:
⚫ request:请求身份验证,该数据包为区级平台(客户端)发送给市级平台(服务端),无子元素。
⚫ sequence:服务端发送一串随机序列,sequence 子元素有效(该数据包为服务器发送给客户端)。
⚫ md5: 客户端发送计算的MD5,md5 子元素有效(该数据包为客户端发送给服务端),注意此处的 md5 值是转换成 16 进制后的字符串,参考附录 5。
⚫ result:服务端发送验证结果,result 子元素有效(该数据包为服务端发送给客户端)
2.心跳/校时数据包(heart_beat)
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XXXXXX</ platform _id >
<type>heart_beat</type>
</common>
<heart_beat operation="notify/time">
<time> yyyy-MM-dd HH:mm:ss </time>
</heart_beat>
</root>
说明:
common 元素:通用部分,属性说明: platform _id:区级平台代码,详见附录 5 type:固定为heart_beat,指明是心跳/校时
heart_beat 元素:心跳/校时,属性说明:
operation:两种操作类型,
⚫ notify: 客户端定期给服务器发送存活通知,无子元素
⚫ time: 服务端在收到存活通知后发送授时信息,此时子元素 time 有效
3.区级平台能耗上传数据包
3.1 区级平台上传的单栋建筑的能耗信息:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XX</ platform _id >
<type>building_energy_data</type>
</common>
<data operation="report ">
<time type=” hour/day /month/year”> yyyy-MM-dd HH:mm:ss </time>
<buildings>
<building id=”XXXXXX”>
<energy_item code=”xxxxx” total=”xxx” unit_area=”xxx” air_area=”xxx” />
<energy_item code=”xxxxx” total=”xxx” unit_area=”xxx” air_area=”xxx” />
……
</building>
......
</buildings>
</data>
</root>
说明:
(1)common 元素,通用部分,属性说明:
⚫ platform _id:区级平台代码,详见附录 5
⚫ type:building_energy_data,指明是建筑能耗数据
(2)data 元素,远传数据:
⚫ operation 属性:操作类型
⚫ buildings 元素,楼宇的汇总
⚫ building 元素,id 属性为建筑代码,见附录 5
⚫ time 元素
◼ type 属性:能耗数据的类型:hour/day /month/year:小时能耗/日能耗/月能耗/年能耗
◼ yyyy-MM-dd HH:mm:ss:时间值
⚫ energy_items 元素:能耗分项数据
◼ energy_item 元素:上传的分项
◆code 属性:分项代码,数值是汇总能耗值
◆total 属性:总能耗
◆unit_area:单位面积能耗
◆air_area:空调面积能耗
市级平台回应的信息:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XX</ platform _id >
<type> builidng_energy_data </type>
</common>
<data operation="report ">
<time type=” hour/day /month/year”> yyyy-MM-dd HH:mm:ss
</time>
<ack> OK/fail:错误信息</ack>
</data>
</root>
说明:如果数据格式和内容正确,ack 中返回 OK,否则返回错误信息。time 是区级平台发送数据中包含的消息。
3.2 区级平台上传的全区建筑能耗汇总信息:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XXXXXX</ platform _id >
<type>district_energy_data</type>
</common>
<data operation="report ">
<time type=” hour/day /month/year”> yyyy-MM-dd HH:mm:ss </time>
<building_type type=”X” function=”X”>
<energy_item code=”xxxxx” total=”xxx” unit_area=”xxx” air_area=”xxx” />
<energy_item code=”xxxxx” total=”xxx” unit_area=”xxx” air_area=”xxx” />
……
</building_type>
<building_type type=”X” function=”X”>
<energy_item code=”xxxxx” total=”xxx” unit_area=”xxx” air_area=”xxx” />
<energy_item code=”xxxxx” total=”xxx” unit_area=”xxx” air_area=”xxx” />
……
</building_type>
……
</data>
</root>
说明:
(1)common 元素,通用部分,属性说明:
⚫ platform _id:区级平台代码,详见附录 5
⚫ type: district_energy_data,市级汇总能耗数据
(2)data 元素,远传数据:
⚫ operation 属性:操作类型
◼ report:定时上报的能耗数据
⚫ time 属性
◼ type 属性:能耗数据的类型:hour/day /month/year:小时能耗/日能耗/月能耗/年能耗
◼ yyyy-MM-dd HH:mm:ss,时间值
⚫ building_type 元素:
◼ type:建筑类型代码,见附录 6
◼ function:建筑功能代码,见附录 6
◼ energy_item 元素:上传的分类分项能耗
◆total 属性:总能耗
◆unit area 属性:单位面积能耗
◆air_area 属性:空调面积能耗
市级平台回应的信息:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XXXXXX</ platform _id >
<type> district_energy_data </type>
</common>
<data operation="report ">
<time type=”hour/day /month/year”> yyyy-MM-dd HH:mm:ss </time>
<ack> OK/fail:错误信息</ack>
</data>
</root>
说明:如果数据格式和内容正确,ack 中返回 OK,否则返回错误信息。time 是市平台发送数据中包含的消息时间类型。
4. 如果由于对消息的解密错误或者 xml 文档格式错误等原因导致文档不能解析,平台将回应下列消息,错误描述在 error 元素中。
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<error>error description</error>
</common>
</root>
附录 4 市级平台提供的全市平均能耗数据查询
WebService 协议
市级平台提供查询省平均能耗数据的 WebService 服务,市级通过 WebService 服务获取制定时间段内的全市平均能耗数据。
WebService 服务名: EnergyDataService,提供下列方法:
1. public byte[] queryEnergyData (string platformId , byte[] sequence , byte[] md5, string startTime,string endTime,string timeType,string buildingType,string buildingFunction)
参数说明:
platformId:区级平台代码,参见附录 6; sequence:区级平台生成的随机码;
md5:区级平台将存储的本地密钥(AES 加密密钥)加上生成的随机码(sequence)计算出的 md5 值;
startTime:起始时间,格式 yyyy-MM-dd HH:mm:ss; endTime:结束时间,格式 yyyy-MM-dd HH:mm:ss; timeType:时间类型:day/ month/year
buildingType:建筑类型代码,参见附录 6 buildingFunction:建筑功能代码,参见附录 6。
返回值: AES 加密后的返回值,原始格式如下:
(1)服务调用正常返回的消息:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<platform_id>XXXXXX</ platform _id>
<type>city_energy_data</type>
</common>
<data operation="query" timeType=”day /month/year”>
<building_type type=” x” function=”x”>
<time value=” yyyy-MM-dd HH:mm:ss”>
<energy_item code=”xxxxx” unit_area=”xxx” air_area=”xxx” />
……
</time>
<time value=” yyyy-MM-dd HH:mm:ss”>
<energy_item code=”xxxxx” unit_area=”xxx” air_area=”xxx” />
……
</time>
……
</ building_type>
</data>
</root>
说明:
(1)common 元素,属性说明:
⚫ platform _id:市级平台代码,详见附录 6
⚫ type: city_energy_data, 市级平均能耗数据
(2)data 元素:
⚫ operation 属性:操作类型
⚫ timeType 属性:时间类型
⚫ building_type 元素:
◼ type 属性:建筑类型代码,详见附录 6
◼ function 属性:建筑功能代码,详见附录 6
◼ time 元素:
◼ value 属性:yyyy-MM-dd HH:mm:ss,时间值
◆energy_item 元素:分类分项能耗
⚫ code:分类分项代码
⚫ unit_area:单位面积能耗
⚫ air_area:单位空调面积能耗
(2)服务调用返回的错误消息:
如果由于对消息的解密错误或者 xml 文档格式错误等原因导致文档不能解析,平台将回应下列消息,错误描述在error 元素中。
<?xml version="1.0" encoding="utf-8" ?>
<root>
<common>
<error>error description</error>
</common>
</root>
附录 5 市、区两级平台建筑信息数据同步
WebService 通信协议
市级平台提供 WebService 服务,区级平台在增加、修改、删除建筑信息数据时应调用市级平台的接口对数据进行同步,以保证数据的统一性。
每幢建筑应有全市唯一的建筑代码,为保证建筑代码的唯一性,区级平台应按照附录 6 的格式生成建筑代码。
1. WebService 协议说明
WebService 服务名:BuildApprovalService,提供下列方法:
1) 增加建筑信息
public string addBuildingInfo(string platformId, byte[] sequence, byte[] md5, byte[] message)
2) 更新建筑信息
public string updateBuildingInfo(string platformId , byte[] sequence , byte[] md5, byte[] message)
参数说明:
platformId:区级平台代码,参见附录 5; sequence:区级平台生成的随机码;
md5:区级平台将存储的本地密钥(AES 加密密钥)加上生成的随机码(sequence)计算出的 md5 值;
message:AES 加密后的建筑信息数据,原始格式详见下面的建筑信息上传报文格式;
返回值:如果正确解析,返回 OK,否则返回错误描述。
3) 删除建筑信息
public string deleteBuildingInfo (string platformId , byte[] sequence , byte[] md5, string buildingId)
参数说明:
platformId:区级平台代码,参见附录 6; sequence:随机码;
md5:计算出的 md5 值;
buildingId:建筑代码,参见附录 6。
返回值:如果正确解析,返回 OK,否则返回错误描述。 4) 查询审批状态
public string getApprovalResult(string platformId, byte[] sequence, byte[] md5, string buildingId)
参数说明:
platformId:区级平台代码,参见附录 6; sequence:随机码;
md5:计算出的 md5 值; buildingId:建筑代码,参见附录 6。返回值:0-待审批,1 同意,2 拒绝
2. 建筑信息上传报文格式
<?xml version="1.0" encoding="utf-8"?>
<root>
<building id="xxx">
<info name="建筑名称" value="xxx" />
<info name="建筑地址" value="xxx" />
<info name="建筑面积" value="xxx" />
<info name="所属区" value="xxx" />
<!—所属区县代码
参考《国家机关办公建筑和大型公共建筑能耗监测系统建设技术导则》中列出的行政区划编码如:
xx区:310101xx区:310104
-->
<info name="竣工日期" value="xxx" />
<!-竣工日期:年份 -->
<info name="报建编号" value="xx" />
<info name="设计单位" value="xx" />
<info name="监理单位" value="xx" />
<info name="实施单位" value="xx" />
<info name="执行节能设计标准" value="A/B/C/D" />
<!--A: GB50189-2005 B: DGJ08-107-2012 C:DGJ08-107-2015 D:其他-->
<info name="项目联系人" value="xx" />
<info name="项目联系人电话" value="xx" />
<info name="上级主管单位" value="xx" />
<info name="物业管理单位" value="xx" />
<info name="物业联系人电话" value="xx" />
<!--如:xx 13800002222-->
<info name="能耗监测系统实施单位" value="xx" />
<info name="能耗监测系统联系人电话" value="xx" />
<info name="地上面积" value="xx" />
<info name="地下面积" value="xx" />
<info name="用电户号" value="xx" />
<!--多个户号用逗号隔开,如:134555,234444,666555-->
<info name="用水户号" value="xx" />
<!--多个户号用逗号隔开,如:134555,234444,666555-->
<info name="用气户号" value="xx" />
<!--多个户号用逗号隔开,如:134555,234444,666555-->
<info name="建筑层数" value="xx" />
<info name="地上层数" value="xx" />
<info name="地下层数" value="xx" />
<info name="建筑高度" value="xx" />
<info name="建筑类型" value="A /B" />
<!--A: 国家机关办公建筑,B: 公共建筑-->
<info name="建筑功能" value="A/B/C/D/E/F/G/H/Z" />
<!—
对于国家机关:
A:办公, B:法院, C:公安, D:检察院,Z:其他对于大型公建:
A: 办公建筑, B: 商场建筑,C: 宾馆饭店建筑,D: 文化建筑
E: 医疗卫生建筑,F: 体育建筑,G: 综合建筑,H:教育建筑,Z: 其它建筑
-->
<info name="办公面积" value="xx" />
<info name="商场面积" value="xx" />
<info name="宾馆饭店" value="xx" />
<info name="室内车库" value="xx" />
<info name="机房面积" value="xx" />
<info name="其它" value="xx" />
<info name="机房等级" value="xx" />
<info name="供电密度" value="xx" />
<info name="设计负荷" value="xx" />
<info name="服务形式" value="1/2" />
<!-- 1:自用
2:托管
-->
<info name="变压器数量" value="xx" />
<info name="变压器装机容量" value="xx" />
<info name="空调形式" value="A/B/C/D " />
<!--A: 集中空调系统 B: 多联式空调系统 C: 分体式空调
D: 其他
如果有多种形式,用逗号隔开,如:A,B,D
-->
<info name="使用能源种类" value="A/B/C/D/E" />
<!--A: 电
B: 油
C: 天然气 D: 煤
E: 其他
如果能源种类有多种,用逗号隔开,如:A,B,D
-->
<info name="能源形式" value="1/2" />
<!-- 1:集中式
2:分布式
-->
<info name="可再生能源" value="A/B/C/D/E/F" />
<!--A: 太阳能光伏 B: 太阳能热水 C: 风力发电 D: 地热
E: 生物质能 F: 其他
-->
</building>
</root>
3. 市级平台数据接收服务器的服务地址:
xxxx://xxx.xxxxxx.xxx/XxxXxxxXxxxxxx/XxxXxxxxxxx/XxxxxXxxxxxxxXxxxxxx/XxxxxXx provalService.asmx
附录 6 平台代码和建筑代码
建筑代码由四部分组成,共 14 位:平台代码、行政市划代码、建筑类型代码、建筑功能代码、建筑识别码。
1) 平台代码
平台代码 2 位,由平台的拼音首字母组成,如下表 1 所示:
表 6-1 区级平台代码
平台名称 | 平台代码 |
虹桥商务区 | HQ |
宝山 | BS |
崇明 | CM |
长宁 | CN |
奉贤 | FX |
市级机关 | GG |
虹口 | HK |
xx | HP |
静安 | JA |
嘉定 | JD |
金山 | JS |
闵行 | MH |
浦东 | PD |
普陀 | PT |
青浦 | QP |
上海市 | SH |
松江 | SJ |
xx | XH |
xx | XX |
闸北 | ZB |
2) 行政市划代码
表 6-2 行政市划代码
行政市划 | 行政市划代码 |
上海市 | 310000 |
xx区 | 310101 |
xx区 | 310104 |
长宁区 | 310105 |
静安区 | 310106 |
普陀区 | 310107 |
闸北区 | 310108 |
虹口区 | 310109 |
xx区 | 310110 |
闵行区 | 310112 |
宝山区 | 310113 |
嘉定区 | 310114 |
浦东新区 | 310115 |
金山区 | 310116 |
松江区 | 310117 |
青浦区 | 310118 |
奉贤区 | 310120 |
虹桥商务区 | 310131 |
崇明县 | 310230 |
3) 建筑类型代码
建筑类型代码 1 位,A:国家机关,B:大型公建。
4) 建筑功能代码
建筑功能代码一位。见表 6-3:
表 6-3 建筑类型代码和建筑功能代码
建筑类型 | 类型编码 | 建筑类别 | 类别/功能编码 |
国家机关 | A | 全部建筑 | 0 |
办公 | A | ||
法院 | B | ||
公安 | C | ||
检察院 | E | ||
其他 | Z | ||
大型公建 | B | 全部建筑 | 0 |
办公建筑 | A | ||
商场建筑 | B | ||
宾馆饭店建筑 | C | ||
文化建筑 | D | ||
医疗卫生建筑 | E | ||
体育建筑 | F | ||
综合建筑 | G | ||
教育建筑 | H | ||
其它建筑 | Z |
5) 建筑识别码
识别码由四位数字组成,例如 0001,0002,…,9999。由区级平台主管部门统一规定,应保证市县内建筑识别编码的唯一性。
6) 建筑代码示例
位数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
编码 | XX | XXXXXX | X | X | XXXX |
建筑识别码
建筑功能代码
建筑类型代码行政市划代码
图 1 建筑代码示例
平台代码
附录 7 数据签名/加密算法验证参考
对本通讯规约使用的MD5 和AES 算法,可使用下列示例进行验证算法是否正确:
1. 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 | |
十六进制 | 900150983cd24fb0d6963f7d28e1 7f72 | c3fcd3d76192e4007dfb496cca67e13b |
2. 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,因此对应范围不同的值在不同语言中显示值会有不同,但对结果没有影响。
3. MD5 和 XXX 说明
通过 TCP 协议传输,在身份验证时 xml 格式中的 MD5 是 16 进制表示的字符串,通过Webservice 传输时是byte,不要转换成 16 进制字符串。在通过 TCP 和WebService传输的 AES 加密数据是 byte,不要转换成 16 进制字符串。