注意保密第三方报警统一接入协议一、协议规则1、采用TCP长连接,海康报警服务器在60006端口上监听。2、客户端必须要有重连机制,在断开连接后,需要自动重连。3、客户端需要每隔30s向服务器发送心跳包保活,若超过30s没发,服务器会自动关闭该连接。4、防止粘包,每个消息(客户端请求和服务器响应)必须包含:二进制包头、包内容、二进制包尾。5、为保证海康报警服务器的安全性,客户端必须根据海康提供的认证信息(用户名、密码)组成认证报文,进行登录认证,服务器返回认证结果报文,若通过认证,可以与服务器进行正常交互,否则,服务器断开连接。二、消息组成每个消息必须包含:二进制包头、包内容、二进制包尾。总长度为20+N+4=24+N字节。1、整个消息的格式如下:头标志报文长度报文类型公司编号报文版本加密类型预留位包内容尾标志2、二进制包头(共20字节)格式如下:头标志报文长度报文类型公司编号报文版本加密类型预留位头标志:4字节,值固定为0X7B7B7B7B(即:{{{{)报文长度:4字节,采用网络字节序,是包含头标志和尾标志在内的整个报文长度。报文类型:1字节,值固定为0X01,代表“包内容”为XML格式。根据需要可适配其它格式,默认采用XML格式。公司编号:1字节,值为0X01至0XFF,根据需要分配,默认填0X01。用于区分不同厂家。报文版本:1字节,值为0X01至0XFF,根据需要分配,默认填0X01。加密类型:1字节,值为0X01至0XFF,确定后,根据需要分配,其中0XFF表示不加密。如果加密,那么只是对包内容进行加密,默认不加密,填充0XFF。加密类型(或编码类型)根据具体的类型编号确定。预留位:8字节,8个字节全部填充0XFF。其中,报文长度必须采用网络字节序,报文类型、公司编号、报文版本、加密类型根据实际情况双方协商。“包内容”默认采用XML格式,特殊情况可以双方协商格式。下文均以XML格式叙述。3、包内容包内容为XML格式。具体参见后面的基本XML格式规范。4、二进制包尾(4字节):二进制包尾仅含一个尾标志。尾标志:4字节,值固定为0X7D7D7D7D(即:}}}})三、基本XML格式规范XML信息包含:XML数据包头和XML包体两部分。1、基本格式如下:?xmlversion=1.0encoding=UTF-8?!--XML文件的信息,固定值不可修改--Packet!--文件包开始--PacketHead……!—包头数据--/PacketHeadPacketBody……!--包体数据--/PacketBody/Packet!--文件包结束--2、包头格式样例:PacketHeadCompanyHikvision/Company!—公司字符串,例如海康填写“Hikvision”--Version1.0/Version!—版本号--Sequence123/Sequence!—数据包编号,范围:1至65535,循环编号--CommandTypeRequest/CommandType!—Request:代表请求,Reponse:代表响应--CommandAlarm/Command!—命令类型,登录认证填写:Login,报警:Alarm,心跳:Heartbeat--ReserveReserve/Reserve!—保留字段--/PacketHead3、包体格式样例:3.1登陆认证信息包体格式样例:3.1.1客户端请求包体格式样例:PacketBodyUsernameadmin/Username!—用户名--Password12345/Password!—密码--ReserveReserve/Reserve!—保留字段--/PacketBody3.1.2服务器响应登陆认证包体:PacketBodyResultSUCCESS/Result!—登陆成功:SUCCESS,登陆失败:FAIL--Desc登录认证成功/Desc!—描述信息,如用户名错误,密码错误,登陆成功等等--ReserveReserve/Reserve!—保留字段--/PacketBody3.2报警信息包体格式样例:3.2.1客户端发送报警包体PacketBodyAlarmId987654321201/AlarmId!—报警ID,该值为报警服务器返回--AlarmTime2014-5-2017:50:00/AlarmTime!—报警时间,格式为”yyyy-mm-ddHH:MM:SS中间含一空格--UserName***公司/UserName?用户是指什么?需要和天维尔确认。UserAddr辽阳市******/UserAddr//用户地址PhoneNumber13000000001/PhoneNumber//用户主机电话Account/Account//用户账号!—设备编号,唯一标识一台设备--DeviceId987654321/DeviceId!—设备编号,唯一标识一台设备--DefenceId1/DefenceId!—防区编号,从1开始编号的阿拉伯数字--DefenceArea***商铺门口/DefenceArea!—防区位置--AlarmType100/AlarmType!—报警类型编号,如100代表无此卡号--AlarmDes控制器事件/AlarmDes!—报警描述--AlarmStatusStart/AlarmStatus!—报警状态,开始:Start;结束:Stop;脉冲:Pulse;瞬时报警:Once--HeadOfUnit张三/HeadOfUnit!—单位负责人--HOUPhone单位负责人电话/HOUPhone!—单位负责人联系手机--Station派出所名称/Station!—所属派出所名称--StationNum13199999999/StationNum!—派出所电话--OtherNum13899999999/OtherNum!—其它联系电话--AlarmPlaceX报警点X坐标/AlarmPlaceX!—报警地点X坐标--AlarmPlaceY报警点Y坐标/AlarmPlaceY!—报警地点Y坐标--County区县标志/County!—区县标志?表示是指什么数据什么信息?--PictureDataNONE/PictureData!--BASE64编码图片数据,若无图片数据,该字段填”NONE”--videoUrl/videoUrl!—报警图片或视频保存的地址url--ReserveReserve/Reserve!—保留字段--/PacketBody不能提供的字段设置为空。AlarmStatus:代表报警状态,若报警有开始和结束状态,那么客户端在某个报警发生时,发送Start,代表该报警已经发生,当报警结束时,发送Stop,代表报警停止,如果报警持续时间大于10秒,那么每隔10秒,发送一次脉冲Pulse,防止客户端关闭时没有发送Stop,导致服务器始终认为该报警一直在发生。若报警没有开始和结束状态,属于一次性报警,那么发送Once。即若是有开始、结束状态的报警,一般发送过程是:Start—〉Pulse—〉……--〉Pulse—〉Stop或Start—〉Stop若是一次性(瞬时)报警则是:Once3.2.2服务器响应报警包体:PacketBodyResultSUCCESS/Result!—解析成功:SUCCESS,失败:FAIL--AlarmId123456789/AlarmId!—服务器产生的唯一的随机数--ReserveReserve/Reserve!—保留字段--/PacketBodyAlarmId说明:如果设备在报警的同时会产生视频或图片,为保证报警不延迟则先向报警服务器发送一条没有URL的报警信息。服务端会向客户端返回一个带有AlarmId的响应包。当客户端上传图片完成之后再向服务器发送一条报警。包含AlarmId和URL。如果设备在报警时没有产生图片或视频,则只上传一条即可,可不用填AlarmId和URL。3.3心跳包体格式样例:3.3.1客户端心跳包体PacketBodyDescribeHeartbeat/Describe!—心跳描述,固定值--ReserveReserve/Reserve!—保留字段--/PacketBody3.3.2服务器回复心跳包体PacketBodyResultSUCCESS/Result!—解析成功:SUCCESS,失败:FAIL--ReserveReserve/Reserve!—保留字段--/PacketBody3.5具体XML样例3.5.1客户端请求登陆认证整体XML报文样例?xmlversion=1.0encoding=UTF-8?PacketPacketHeadCompanyHikvision/CompanyVersion1.0/VersionSequence123/SequenceCommandTypeRequest/CommandTypeCommandLogin/CommandReserveReserve/Reserve/PacketHeadPacketBodyUsernameadmin/Username!—用户名--Password12345/Password!—密码--ReserveReserve/Reserve!—保留字段--/PacketBody/Packet3.5.2服务器响应登陆认证报文整体XML样例?xmlversion=1.0encoding=UTF-8?PacketPacketHeadCompanyHikvision/CompanyVersion1.0/VersionSequence123/SequenceCommandTypeReponse/CommandTypeCommandLogin/CommandReserveReserve/Reserve/PacketHeadPacketBodyResultFAIL/Result!—登陆成功:SUCCESS,登陆失败:FAIL--Desc密码错误/Desc!—描述信息,如用户名错误,密码错误,登陆成功等等--ReserveReserve/Reserve!—保留字段--/PacketBody/Packet3.5.3报警信息整体XML样例?xmlversion=1.0encoding=UTF-8?PacketPacketHeadCompanyHikvision/CompanyVersion1.0/VersionSequence123/SequenceCommandTypeRequest/CommandTypeCommandAlarm/CommandReserveReserve/Reserve/PacketHeadPacketBodyAlarmId/AlarmIdAlarmTime2014-5-2017:50:00/AlarmTimeUserName枫叶/UserNameUserAddr辽阳市******/UserAddr