上海市生态环境局
上海市经济和信息化委员会
上海市交通委员会文件
各区生态环境局、经济信息化委、交通委,市生态环境局执法总队、市环境监测中心,各成品油销售、存储、运输企业,各相关单位:
依据生态环境部等11个部委《关于印发<柴油货车污染治理攻坚战行动计划>的通知》(环大气﹝2018﹞179号)的要求,为进一步规范油品储、运、销行业管理,强化油气回收治理的事中事后监管,现将有关工作要求通知如下:
一、工作目标
进一步加强对本市储油库、油罐车和加油站油气回收综合治理,提高油气回收治理水平,减少挥发性有机物排放,改善环境空气质量,到2019年底完成年销售汽油量5000吨以上加油站油气回收在线监控设施安装及联网,力争到2020年底完成年销售汽油量2000吨以上加油站油气回收在线监控设施安装及联网。
二、工作要求
(一)严格新项目准入
新、改、扩建加油站和储油库建设项目应同步配套建设油气回收治理设施,安装油气回收在线监控设备,并与生态环境部门联网。
新建的原油、汽油(含乙醇汽油)、石脑油等装船作业码头全部安装油气回收设施。2020年1月1日以后建造的150总吨以上的国内航行油船应具备码头油气回收条件。
(二)提升现有设施治理水平
1、严格落实油气回收排放标准。
严格按照《储油库大气污染物排放标准》(GB20950-2007)、《汽油运输大气污染物排放标准》(GB20951-2007)、《加油站大气污染物排放标准》(GB20952-2007)及《挥发性有机物无组织排放控制标准》(GB 37822-2019)要求,原油、汽油(含乙醇汽油)、石脑油储油库、企业自备油库、加油站、原油及成品油运输车等应配备油气回收治理设施。
储油库收发汽油过程应采用底部装油方式,装油时产生的油气应进行密闭收集和回收处理。在确保现有油气回收治理设施达标运行和本市成品油稳定供应的基础上,中国石化闵行、高桥油库应于2020年底前完成底部装油方式改造,杨浦油库应于2021年6月底前完成底部装油方式改造。
自文件发布之日起,新增运输汽油的油罐车不得配备上装密闭装油装置,自2021年7月1日以后,原配备上装密闭装油装置的车辆应封停上装密闭装置。
加油站应加强油气回收设施管理,对卸油区、加油区、人工量油井等处的视频监控统一进行可视化管理,确保能清晰观察卸油区油气回收连接部位及末端排口阀门区域。本地视频监控资料保存时间不得少于90天。
2、加快油气回收在线监控系统的安装和联网。
储油库和年销售汽油量≥2000吨的加油站应安装油气回收在线监控设备,按照《加油站油气在线联网工作流程》且符合《加油站油气回收在线监控系统数据传输技术要求》(见附件一、二),与生态环境部门联网。
全市年销售汽油量≥5000吨的加油站应于2019年底完成油气回收在线监控设备安装并与生态环境部门联网;年销售汽油量≥2000吨的加油站力争于2020年底完成油气回收在线监控设备安装并与生态环境部门联网。
油气回收深化治理和油气在线监控系统建设过程中,企业要做好防爆电气改造工作,落实防爆、防火等措施。
三、事中事后监管
(一)落实企业主体责任。各相关企业应推进落实油气回收治理设施和油气回收在线监控系统的建设、运行和维护,应委托具有资质油气排放检测机构对储油库、加油站每半年开展一次油气回收环保检测;对油罐车每年至少开展一次油气回收环保检测。具备油气回收在线监控系统的储油库和加油站企业自检频次可以延长至一年一次。企业应对油气回收设施开展日常巡检并对结果进行记录,台账记录应存档保存2年。
(二)加强油气回收设施日常监管。各区生态环境局要加强对所辖区域内储油库、加油站、油罐车的监督抽查与抽测。重点对加油站、储油库、油罐车油气回收管理台账、环保设备运行状况、自检报告、油气回收在线报警状态处理等实施现场抽查。同时对油气回收设施达标运行开展监督抽测,要求如下:储油库抽测、抽查比例为100%;外环以内的区加油站抽测、抽查比例不低于40%,外环以外(涉及外环的)的区加油站抽测、抽查比例不低于15%。油罐车重点检查企业委托第三方自检报告,报告抽查比例不低于20%。
(三)强化跨部门联合监管。生态环境、经济信息化、交通等部门梳理炼油厂、储油库、加油站及汽油运输企业情况,建立管理名单,加强联合执法,严厉查处不按规定期限完成油气回收治理的行为。
成品油经营企业因环保违法违规行为受到行政处罚的,经济信息化部门应依法将其列入年检不合格名单,并责令其限期整改;经整改仍不合格的,由发证机关撤销其成品油经营资格。
新增运输汽油的油罐车未取得具有资质油气回收检测机构出具的合格报告的,交通部门不予办理年审手续和发放道路运输许可证;在用运输汽油的油罐车应与在营油库同步完成底部装油改造并封停上装密闭装置。未按期完成并取得具有资质油气回收检测机构出具的合格报告的,交通部门不予办理年审手续和发放道路运输许可证
四、保障措施
1、加强组织领导。进一步加强油气回收治理工作,既是本市清洁空气行动计划的重要内容,也是本市加强大气污染防治的重要一步。各级部门要高度重视,加强组织领导和宣传发动,确保取得实效,切实解决群众身边的污染问题。
2、明确职责分工。各区生态环境部门要将属地内的储油库、加油站、油罐车油气回收设施和油气回收在线联网列入日常抽查、抽测和执法计划,并负责企业环保违法行为的立案查处。市环境监测中心做好油气回收在线监控平台运维及联网技术支撑;每月统计上报前月油气回收执法检查情况。市生态环境局执法总队做好执法技术指导。
经济信息化部门依据《成品油市场管理办法》组织开展对本市成品油经营企业年度检查工作,对年检中涉及环保违法违规行为的企业进行查处。
交通部门做好油罐车年审工作,对未出具油气回收合格报告的油罐车运输车辆不予办理年审手续。
3、加强信息报送。各区生态环境局结合柴油货车攻坚战行动计划于每月10日前将上一月油气回收执法检查情况电子版报送市环境监测中心。
联系人:市生态环境局大气处黄伟明
联系方式:021-23115658
联系人:市环境监测中心机动车室卞吉玮
联系方式:021-24011898
电子邮箱:bianjiwei@sheemc.cn
附件:1. 加油站油气在线联网工作流程
2. 加油站油气回收在线监控系统数据传输技术要求
附件1
加油站油气在线联网工作流程
加油站首次完成安装油气在线监控系统后可按照程序办理环保联网。联网流程为:入网申请-受理审核-联网符合性审核-联网。
加油站向机动车环保业务受理窗口(徐汇区三江路55号边门)递交申请材料:(1)《油气在线监控系统入网申请书》(原件盖章,见附件1);(2)当年的《油气在线比对测试报告》(复印件盖章)。
机动车环保业务受理窗口审核申请材料后,申请材料齐全、符合要求的,出具《油气在线监控系统入网申请材料接收凭证》(见附件2);市环境监测中心依据《加油站油气回收在线监控系统数据传输技术要求》组织在5个工作日内完成对加油站油气在线系统联网符合性进行审查,通过审查的予以联网。如审查未通过,则要求企业限期整改。
加油站油气回收治理设施发生变更时可按照联网变更程序办理。联网变更流程为:变更申请-受理变更-联网。
加油站向机动车环保业务受理窗口递交《油气在线监控系统联网变更申请表》(原件盖章,见附件3);市环境监测中心对变更内容进行审核,通过审核后予以联网。
附件2
油气在线监控系统联网申请书
单位名称:(公章)
加油站名称:
加油站地址:
成品油批准证书号:
联系人:
联系电话:
申请日期:
申请人自我承诺
(加油站企业名称)郑重声明并承诺:
一、 本企业所提供的一切资料及数据内容真实,并与填写的相关信息一致。
二、 本企业的油气在线监控系统按照规范要求运行、上传数据并接受生态环境部门监督检查。
加盖公章
年月日
表1 加油站企业基本情况
|
加油站名称 |
| |||
|
法定代表人 |
|
联系电话 |
|
|
|
成品油批准证书号 |
| |||
|
联系人 |
|
联系电话 |
|
|
|
所属成品油销售企业 |
!中国石化!中国石油!中国海油!社会站 | |||
|
成立时间 |
|
最近改造时间 |
|
|
|
注册详细地址 |
| |||
|
注册区域 |
| |||
|
加油站详细地址 |
| |||
|
加油站所属区域 |
| |||
|
地下管路图 |
!有!无 | |||
|
距最近民用建筑物距离(m) |
| |||
|
经营状态 |
!正常!停业 | |||
|
入网条件 |
!具备!不具备!整改后具备 | |||
表2 加油站基本情况
|
年吞吐量(t) |
| ||
|
汽油(t) |
|
柴油(t) |
|
|
罐容总量(t) |
| ||
|
汽油(t) |
|
柴油(t) |
|
|
罐体总量 |
| ||
|
汽油罐体数 |
|
汽油罐体品牌 |
|
|
柴油罐体数 |
|
柴油罐体品牌 |
|
|
加油机总数 |
| ||
|
汽油加油机数 |
|
汽油加油机品牌 |
|
|
柴油加油机数 |
|
柴油加油机品牌 |
|
|
加油枪总数 |
| ||
|
汽油加油枪数 |
|
汽油加油枪品牌 |
|
|
柴油加油枪数 |
|
柴油加油枪品牌 |
|
表3 油气回收基本情况
|
油气回收改造设计单位 |
| ||
|
油气回收改造施工单位 |
| ||
|
一阶段油气回收装置 |
!有!无 |
P/V阀 |
!有!无 |
|
二阶段油气回收装置 |
!有!无 |
汽油枪品牌 |
|
|
真空泵品牌 |
|
油气回收方式 |
!集中!分散 |
|
后处理装置 |
!有!无 |
后处理装置品牌 |
|
|
后处理装置技术类型 |
!吸附+冷凝!吸附!膜+冷凝!冷凝!膜处理 | ||
|
在线监控装置 |
!有!无 | ||
|
在线监控装置品牌 |
| ||
|
在线监控装置型号 |
| ||
|
控制主机型号 |
| ||
|
油气流量控制器型号 |
| ||
|
油气流量传感器型号 |
| ||
|
油气浓度传感器型号 |
| ||
|
温度传感器型号 |
| ||
|
压力传感器型号 |
| ||
附件2
油气在线监控系统联网申请材料接收凭证
编号:2019-YQRW-001
|
序号 |
资料名称 |
份数 |
原/复印件 |
备注 | |||
|
1 |
油气在线监控系统入网申请书 |
1 |
原件 |
| |||
|
2 |
油气在线比对测试报告 |
1 |
复印件 |
| |||
|
|
|
|
|
| |||
|
|
|
|
|
| |||
|
资料签收 | |||||||
|
接收资料单位 |
资料提交单位 | ||||||
|
上海市环境监测中心 |
| ||||||
|
收件人 |
|
提交人 |
| ||||
|
日期 |
|
日期 |
| ||||
|
备注 |
★加油站须自备外网条件并确认具备入网条件。 | ||||||
附件3
油气在线监控系统联网
变更申请表
|
加油站名称 |
| ||
|
法定代表人 |
|
联系电话 |
|
|
成品油批准证书号 |
| ||
|
联系人 |
|
联系电话 |
|
|
变更申请 | |||
|
变更后内容 |
1、 汽油加油机!品牌!数量 2、 柴油加油机!品牌!数量 3、 汽油枪!品牌!数量 4、 柴油枪!品牌!数量 5、 在线监控装置!品牌!型号 !流量传感器型号 !压力传感器型号 !浓度传感器型号 !温度传感器型号 6、 后处理装置!品牌 !技术类型 | ||
|
备注 |
| ||
申请单位(盖公章):日期:
附件二:
加油站油气回收在线监控系统数据传输技术要求
为贯彻《中华人民共和国环境保护法》,指导油气在线监控系统的建设,规范数据传输,保证各种污染物监控监测仪器设备、传输网络和环保部门应用软件系统之间的连通,制定本技术要求。
1 适用范围
本技术要求适用于加油站油气回收在线监控系统与监控中心之间的数据传输,规定了传输的过程及参数命令、交互命令和数据命令的格式,给出了代码定义。
本技术要求还规定了加油站油气回收在线监控仪器仪表和数据采集传输之间的数据传输格式,同时给出了代码定义。
2 规范性引用文件
本技术要求内容引用了下列文件或其中的条款。凡是不注明日期的引用文件,其有效版本适用于本技术要求。
GB 20952-2007 加油站大气污染物排放标准
HJ 212-2017 污染物在线监控(监测)系统数据传输标准
3 术语和定义
下述术语和定义适用于本技术要求。
3.1在线监控系统
在线监测加油站油气回收过程中的气液比以及油气回收系统的密闭性和管线液阻是否正常的系统,当发现异常时可提醒人员采取相应的措施,并能记录、存储、处理和传输监测数据。
3.2监控中心
安装在各级环保部门、通过传输网络与自动监控设备连接并对其发出查询和控制等指令的数据接收和数据处理系统,包括计算机及计算机软件等。
4 数据上传协议
4.1 数据传输方式
4.1.1技术选择
数据传输技术:标准的WebSocket通信技术。
数据安全技术:基于动态令牌的HmacSHA256加密的安全报文(密钥第三方保密)。消息内容采用Base64编码传输。采用HTTPS安全通道建立连接。
4.1.2网络需求
加油站在线监控系统通过公网和信息中心建立网络连接。为了确保网络稳定性,加油站在线监控系统可以采用3G/4G或有线网络方式接入网络并且确保网络稳定可靠。
4.1.3数据传输频率
由加油站在线监控系统定期向信息中心进行数据上传操作。在线监控系统上传A/L数据时,应同时上传加油开始时间、加油结束时间和数据上传时间;上传压力数据时,应同时上传压力数据的生成时间和上传时间;上传预警和报警数据时,应同时上传预警和报警数据的生成时间和上传时间。每次上传数据的时间间隔应不大于1h。在线监控系统应能以时间间隔应不大于30s的间隔采集环境数据,并按照2到10min左右的时间间隔打包上传环境数据。
4.1.4数据传输接口
数据上传接口:socket.io client。
4.2 身份令牌说明
在线监测系统与监控平台建立长连接之前需要获取身份令牌。在线监测系统拿到accessToken之后,在和服务端建立socket连接时,应带上参数(token)值为accessToken对应的值。
1) 令牌获取方式:
http(s)+POST
URL: http(s)://xxxx/eldf.portal-service/auth/equipmentLogin
2) 参数:
companyCode:企业代码
username :用户名
password :密码
3) 正常响应:
{"success":true,"errorCode":"","accessToken":"xxxxxxx"}
4) 失败响应:
{"success":false,"errorCode":"XXXX"}
errorCode对应表:
1001 : 企业代码不能为空
1002 :用户名不能为空
1003 :密码不能为空
2001 :用户不存在
2002 :密码不正确
4.3密钥说明
密钥由监控平台配置管理,每个加油站在线监测系统分配一个密钥。
4.4报文结构
4.4.1请求报文格式
请求报文数据定义:
|
序号 |
数据项 |
数据格式 |
说明 |
|
1 |
message |
Json |
|
|
1.1 |
messageId |
Varchar |
消息ID,32位UUID+年月日时分秒毫秒 不能为空,采用Base64编码 |
|
1.2 |
busObject |
Varchar |
业务报文(数据需转化为base64编码) |
|
2 |
hmac |
Varchar |
动态令牌(根据message对应的json字符串计算) |
|
3 |
time |
Time |
系统当前时间(年月日时分yyyy-MM-dd HH:mm) |
|
4 |
version |
Varchar |
通信协议版本(注:1为当前版本) |
报文数据定义示例(JSON字符串):
{
"message": {
"messageId": "xxx",
"busObject": "业务json数据"
},
"hmac": "",
"time": "yyyy-MM-dd HH:mm",
"version": ""
}
4.4.2返回报文格式
返回数据用于通知上传操作的执行结果,并根据业务需要将控制数据和升级数据返回给加油站在线监控系统。
返回数据定义(数据格式JSON):
|
序号 |
数据项 |
数据格式 |
说明 |
|
1 |
message |
Json |
|
|
1.1 |
messageId |
Varchar |
消息ID,对应输入的messageId,采用base64编码 |
|
1.2 |
busObject |
Varchar |
业务报文(数据需转化为base64编码) |
|
2 |
success |
Boolean |
true/false |
|
3 |
hmac |
Varchar |
动态令牌 |
|
4 |
errorCode |
Varchar |
详见下表错误消息定义 |
|
5 |
errorMessage |
Varchar |
详见下表错误消息定义 |
|
6 |
time |
Varchar |
系统当前时间(年月日时分)yyyy-MM-dd HH:mm |
{
"message": {
"messageId": "xxx",
"busObject": "{}",
},
"success": true,
"hmac": "",
"errorCode": "",
"errorMessage":""
"time": "yyyy-MM-dd HH:mm"
}
错误消息定义:
|
错误类型 |
错误代码errorCode |
错误说明errorMessage |
说明 |
|
系统错误消息 |
SESSION_TIMEOUT |
会话超时,需要重新获取令牌 |
|
|
SYSTEM_ERROR |
系统异常 |
| |
|
VERSION_ERROR |
通讯协议版本错误 |
| |
|
HMAC_ERROR |
HMAC校验错误 |
| |
|
DECODE_ERROR |
base64解码错 |
| |
|
TIME_ERROR |
时钟异常 |
需请求方更新系统时间后重新发送 | |
|
DATA_ERROR |
业务数据解析错误 |
| |
|
DATA_REPETITION |
业务数据已经存在 |
|
4.5接口定义
接口列表:
|
序号 |
接口名称 |
说明 |
|
1 |
GSConfigurationDataEvent |
加油站在线监测系统配置数据上传 |
|
2 |
GSEnvironmentDataEvent |
加油站环境数据上传 |
|
3 |
GSRecycleDataEvent |
加油站油气回收数据上传 |
|
4 |
GSAlarmDataEvent |
加油站报警数据上传 |
4.6业务报文
业务报文分为4类,分别为:在线监测系统配置数据、加油枪油气回收数据、加油站环境数据、报警数据。
4.6.1配置数据
1)上传规则:每当修改参数配置时,实时上传当前参数配置;每日零时后,在线监测系统统计当前参数配置并上传预报警数据。
2)配置数据明细:
|
序号 |
字段名 |
配置明细 |
数据格式 |
示例值(均不含单位) |
|
1 |
monitorTime |
监测时间 |
Time |
2017-6-13 15:15:22 |
|
2 |
qybyjxxz |
气液比预警下限值% |
NUMBER(4,2) |
0.90(即90%) |
|
3 |
qybyjsxz |
气液比预警上限值% |
NUMBER(4,2) |
1.30(即130%) |
|
4 |
yjcsbl |
预警次数比例% |
NUMBER(4,2) |
0.25(即25%) |
|
5 |
qybybjzhsj |
气液比预报警转换时间d |
NUMBER(2) |
7(d) |
|
6 |
hjsjcy |
环境数据采样间隔s |
NUMBER(4) |
30(s) |
|
7 |
zxyl |
PV阀正向压力预警限值Pa |
NUMBER(4) |
1500(Pa) |
|
8 |
fxyl |
PV阀负向压力预警限值Pa |
NUMBER(4) |
-1500(Pa) |
|
9 |
ylzhsj |
PV阀压力预报警转换时间d |
NUMBER(2) |
5(d) |
|
10 |
gyyjsx |
罐压预警上限值Pa |
NUMBER(3) |
50(Pa) |
|
11 |
gyyjxx |
罐压预警下限值Pa |
NUMBER(3) |
-50(Pa) |
|
12 |
gyyjsj |
罐压预警时间h |
NUMBER(2) |
12(h) |
|
13 |
gybjsj |
罐压报警时间d |
NUMBER(2) |
5(d) |
|
14 |
yqnd |
油气浓度报警阈值% |
NUMBER(4,2) |
0.4(即40%) |
3)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
4)报文数据定义示例(JSON字符串):
{
“message”: {
“messageId”: “xxx”,
“busObject”: {
“monitorTime”: “2017-6-13 15:15:22”,
“qybyjxxz”: 0.85,
“qybyjsxz”: 1.35,
“yjcsbl”: 0.25,
“qybybjzhsj”: 5,
“hjsjcy”: 30,
“zxyl”: 1500,
“fxyl”: -1500,
“ylzhsj”: 5,
“gyyjsx”: 50,
“gyyjxx”: -50,
“gyyjsj”: 12,
“gybjsj”: 5,
“yqnd”: 0.4
}
},
“hmac”: “”,
“time”: “2017-6-13 15:15”,
“version”: “1”
}
4.6.2加油枪数据
1)上传规则:当有大于等于15L的加油事件产生时,监测系统实时上传加油数据。
2)数据内容:油气数据记录的是每次加油过程中产生的相关数据,数据内容如下表:
|
元素名称 |
数据格式 |
数据描述 |
数据示例 |
|
monitorTime |
Time |
监测时间yyyy-MM-dd HH:mm:ss |
2017-6-13 15:15:22 |
|
jyjId |
Varchar2(2) |
加油机标识,1~99 |
1 |
|
jyqId |
Varchar2(2) |
加油枪标识,1~99 |
2 |
|
al |
NUMBER(4,2) |
气液比 |
0.86(即86%) |
|
qll |
NUMBER(6,2) |
油气流量(L) |
16.32 |
|
yll |
NUMBER(6,2) |
燃油流量(L) |
18.54 |
其中:每个加油站所有的加油枪顺序编号,不重复,即10把加油枪编号为1-10。
3)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
4)报文数据定义示例(JSON字符串):
如果不存在某项数据则在数据域中填写空字符串;
报文中,每个{}代表每一次加油数据,内容如下:
{
"message": {
"messageId": "xxx",
"busObject": [
{
"monitorTime": "2017-05-25 15:15:22",
"jyjId": "",
"jyqId": "",
"al": 1.23,
"qll": 22332.23,
"yll": 121.32
},
{
"monitorTime": "2017-05-25 15:15:22",
"jyjId": "",
"jyqId": "",
"al": 1232.23,
"qll": 22332.23,
"yll": 121.32
}
]
},
"hmac": "",
"time": "2017-6-1315: 15",
"version": "1"
}
4.6.3环境数据
环境数据的采集时间间隔应不大于30s。
1)上传规则:按照5min的时间间隔,打包上传环境数据。
2)环境数据内容如下表:
|
元素名称 |
数据格式 |
是否可空 |
数据描述 |
数据示例 |
|
monitorTime |
Time |
否 |
监测时间yyyy-MM-dd HH:mm:ss |
2017-6-13 15:15:22 |
|
ygyl |
Number(4) |
否 |
油罐压力,单位Pa |
1000 |
|
yzyl |
Number(4) |
否 |
液阻压力,单位Pa |
1200 |
|
xnd |
Number(5,2) |
否 |
卸油区油气浓度,单位% |
100% |
|
ywd |
Number(3,1) |
否 |
油罐温度,单位℃ |
25.1 |
3)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
4)报文数据定义示例(JSON字符串):
如果不存在某项数据则在数据域中填写空字符串;
报文中,每个{}代表每一次采集的环境信息,内容如下:
{
“message”: {
“messageId”: “xxx”,
“busObject”: [
{
“monitorTime”: “2017-05-25 15:15:22”,
“ygyl”: 122,
“yzyl”: 122.32,
“xnd”: 1212.23,
“ywd”: 123.22
}
]
},
“hmac”: “”,
“time”: “2017-6-1315: 15”,
“version”: “1”
}
4.6.4报警数据
1)上传规则:每日零时后,上位机(在线监测系统)统计前一日预报警结果并上传预报警数据。
2)报警标识:使用四个数值标识四种状态: 0表示正常,1表示预警,2表示报警,N表示无效。
3)报警数据内容如下表:
|
元素名称 |
数据格式 |
是否可空 |
数据描述 |
|
monitorTime |
Time |
否 |
监测时间yyyy-MM-dd HH:mm:ss |
|
al |
Varchar2(500) |
否 |
气液比(0、1、2、N) |
|
mb |
Varchar2(1) |
否 |
密闭性(0、1、2、N) |
|
yz |
Varchar2(1) |
否 |
液阻(0、1、2、N) |
|
ygyl |
Varchar2(1) |
否 |
油罐压力(0、1、2、N) |
|
clzznd |
Varchar2(1) |
否 |
处理装置排放浓度(0、1、2、N) |
|
pv |
Varchar2(1) |
否 |
P/V阀状态(0、1、2、N) |
|
clzzqd |
Varchar2(1) |
否 |
处理装置启动状态(0、1、2、N) |
|
clzztz |
Varchar2(1) |
否 |
处理装置停止状态(0、1、2、N) |
|
xyhqg |
Varchar2(1) |
否 |
卸油回气管状态(0、1、2、N) |
气液比字段,在上传报警状态的同时还需要上传该报警状态所属的加油枪号。油枪号和预报警状态的上传数据规则为:
加油枪号 + 冒号 + 预报警状态 + 分号;
范例:
假设加油站共有8把枪。当天统计完预报警状态的结果是,1号枪报警、2号枪预警、3号枪报警,其他枪正常。AL字段的内容应该为:
< AL>1:2;2:1;3:2;4:0;5:0;6:0;7:0;8:0;</AL>
4)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
5)报文示例:
{
"message": {
"messageId": "xxx",
"busObject": {
"monitorTime": "2017-05-25 15:15:22",
"al": "1:2;2:1;3:2;4:0;5:0;6:0;7:0;8:0;",
"mb": "0",
"yz": "1",
"ygyl": "1",
" clzznd": "1",
"pv": "0",
" clzzqd": "0",
" clzztz": "0",
" xyhqg": "0"
}
},
"hmac": "",
"time": "2017-6-1315: 15",
"version": "1"
}
4.7示例
4.7.1Socket.io调用示例
以JS为例仅供参考(其他语言均采用标准即可)
<script src=”js/socket.io/socket.io.js”></script>
<script>
//连接服务
var socket = io.connect(‘https://xxxx:9093’,{
query: ‘token=’+accessToken
});
//监听服务连接成功后
socket.on(‘connect’, function() {
});
//断开连接监听
socket.on(‘disconnect’, function() {
});
//发送数据到服务器
var sendData = “{\“message\”:{}}”; //推送的数据详见数据示例
socket.emit(‘GSConfigurationDataEvent’, sendData,function(data){
//data为服务器端返回的数据
//GSConfigurationDataEvent事件名称见1.2.5接口定义
});
</script>
4.7.2数据示例
以“GSConfigurationDataEvent”为例(由于字段比较多在此省略了一些字段)
报文的明文结构如下(整个结构以字符串传输):
"{\"message\":{\"messageId\":\"47333c58c62c4d9fb6e82aa01b0e15f820170616161301369\",\"busObject\":{\"monitorTime\":\"2017-6-16\",\"qybyjxxz\":0.85,\"qybyjsxz\":1.35,\"yjcsbl\":0.25}},\"hmac\":\"\",\"time\":\"yyyy-MM-dd HH:mm\",\"version\":\"1\"}"
以上结构中的hmac值在messageId字段和busObject字段所对应的值进行Base64编码后,根据整个message对应的json字符串计算出动态令牌
message对应结构Base64编码后:
"{\"messageId\":\"NDczMzNjNThjNjJjNGQ5ZmI2ZTgyYWEwMWIwZTE1ZjgyMDE3MDYxNjE2MTMwMTM2OQ==\",\"busObject\":\"eyJtb25pdG9yVGltZSI6IjIwMTctNi0xNiIsInF5YnlqeHh6IjowLjg1LCJxeWJ5anN4eiI6MS4zNSwieWpjc2JsIjowLjI1fQ==\"}"
根据如上字符串计算出的hmac令牌为(密钥:aEUjjsauUjK93):
94af2dac094880b9ebf2412fab4efbb12052bc7a931eef15046d86e1ac133a89
最终发送到服务器端的json字符串为:
"{\"message\":{\"messageId\":\"NDczMzNjNThjNjJjNGQ5ZmI2ZTgyYWEwMWIwZTE1ZjgyMDE3MDYxNjE2MTMwMTM2OQ==\",\"busObject\":\"eyJtb25pdG9yVGltZSI6IjIwMTctNi0xNiIsInF5YnlqeHh6IjowLjg1LCJxeWJ5anN4eiI6MS4zNSwieWpjc2JsIjowLjI1fQ==\"},\"hmac\":\"94af2dac094880b9ebf2412fab4efbb12052bc7a931eef15046d86e1ac133a89\",\"time\":\"yyyy-MM-dd HH:mm\",\"version\":\"1\"}"
以下为其他测试字符串的hmac计算结果
密钥:aEUjjsauUjK93
消息内容:hello
hmac令牌:9f6e44b830fdab6a2a3f034be281286bc7f8e344720147fb16a3d4f5f9157ccf
上海市生态环境局 上海市经济和信息化委
上海市交通委
2019年11月7日