海康HTTP监听报警事件数据
http监听接收报警事件数据
海康获取设备报警事件数据两种方式:
1、sdk 布防监听报警事件数据,服务端布防。(前面文章有示例)
2、http监听接收报警事件数据,设备直接推送。
http监听接收报警事件数据,服务端可以使用netty通过端口来监听获取事件数据。
WEB 端配置远程主机
登录Web管理后台:
设置电脑IP 地址和设备IP 地址在同一网段(例如192.168.1.100)。
在浏览器地址栏输入设备默认IP 地址,例如http://192.168.1.64,回车。
输入用户名和密码。
单击确定。
配置远程主机:
不同版本的设备配置方式不同,交通设备是通过配置ANPR参数进行设置,过程如下:
单击配置—设备配置—系统设置—网口参数
根据实际情况设置ANPR IP和端口
设置完成后点击保存
门禁设备是通过配置HTTP监听参数,过程如下:
单击配置—网络—高级配置—HTTP监听
根据实际情况设置IP、端口、URL、协议类型(http或者https),
设置完成后点击保存
设备一
设备二
ISAPI 协议命令配置远程主机
如果设备支持HTTP监听,Web后台没有选项进行配置,那就需要通过协议命令进行配置。配置工具可以选用Postman或者海康官网设备网络SDK开发包中的ClientDemo 工具调用透传接口进行配置。
说明:实际配置过程中,先调用GET接口获取远程主机配置参数的报文,然后修改其中节点参数,将修改后的报文作为输入,调用PUT操作命令,修改远程主机的参数,实现远程主机的参数配置。
Postman 测试:
前提条件:电脑与设备接入同一网段的局域网内; Postman 测试方式同样也是先调用GET操作,获取输出报文,修改后然后调
用PUT操作进行配置。Postman操作说明如下图所示:
操作类型选择:GET;
组装URL:http://设备IP地址:80/ISAPI命令,例如:http://10.17.35.42:8
0/ISAPI/Event/notification/httpHosts,如果设备是使用 https,端口为 443;
认证方式:ISAPI协议命令认证方式为摘要认证,Postman集成了这种认证方式,在认证方式的选项中选择:Digest Auth,输入设备的用户名和密码;
GET操作命令是没有输入的,所以输入中选择为空;
设置完成后,点击SEND,发送请求到设备中,设备接收到请求后,返回响应,
修改GET操作获取到的配置报文中的IP、端口、URL等节点参数,然后调用PUT操作下发此配置参数到设备中,返回200 OK代表成功。
认证方式为:Digest Auth,可以参考
海康ISAPI对接门禁设备 添加用户信息和下发人脸
如下图代码认证认证方式:
服务器监听接收事件
服务端对指定的端口开启监听,成功开启监听后,可以通过系统命令查看端口监听是否成功,触发设备上对应的事件后,设备会通过POST命令往指定的远程主机端口上推送事件报文。交互的过程可以通过在平台端抓包分析。示例抓包
接收到的报文解析都是具有标准的http协议,解析报警报文需要自行实现,对应事件的JSON或者XML报文说明可以联系我司对接技术同事获取。如果配置正常,设备正常触发报警,平台未收到上传的报警事件,首先通过抓包确定设备是否上传到指定端口,如果抓包中有设备上传事件,平台侧没有接收到报文,重点排查一下平台接收解析报文代码、端口监听是否被占用和防火墙是否阻挡。监听机制设备会推送历史事件,刚开启监听后,设备中会将存储的历史事件先上。
报文解析可以参考另一个博主文章
配置远程主机参数报文
配置远程主机参数报文:
{ "requestURL": "test", /*ro, opt, string, 请求URL, range:[,]*/ "statusCode": 1, /*ro, req, int, 状态码, range:[,], step:, unit:, unitType:*/ "statusString": "test", /*ro, req, string, 状态描述, range:[,]*/ "subStatusCode": "test", /*ro, req, string, 子状态码, range:[,]*/ "errorCode": 1, /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1
时,错误码,与subStatusCode对应*/ "errorMsg": "ok", /*ro, opt, string, 错误详细信息, range:[,], desc:当statusCode不为1时,错误详
细信息,能具体到某一个参数的错*/ "HttpHostNotification": [ /*ro, req, array, 报警主机信息列表, subType:object, range:[,]*/ { "id": "1", /*ro, req, string, 序号, range:[,], desc:最大长度为128*/ "url": "http://10.7.35.19:9000/alarm", /*ro, opt, string, URL, range:[,]*/ "protocolType": "HTTP", /*ro, req, enum, 协议类型, subType:string,
[HTTP#HTTP,HTTPS#HTTPS], desc:最大长度为32*/ "parameterFormatType ": "json", /*ro, req, enum, 参数格式类型, subType:string,
[json#json,XML#XML,querystring#querystring], desc:最大长度为32*/ "addressingFormatType": "ipaddress", /*ro, req, enum, 地址格式类型, subType:string, [ipaddress#IP地
址,hostname#域名], desc:最大长度为32*/ "ipAddress": "ipv4", /*ro, opt, enum, IP地址类型, subType:string, [ipv4#ipv4,ipv6#ipv6],
desc:最大长度为32*/ "ipv6Address": "test", /*ro, opt, string, ipv6地址, range:[,], desc:最大长度为128*/ "portNo": 7200, /*ro, opt, int, 报警通信端口号, range:[,], step:, unit:, unitType:*/ "httpAuthenticationMethod": "MD5digest", /*ro, req, string, HTTP认证方法, range:[,], desc:最大长度为32,
MD5digest或none(不认证)*/ "uploadImagesDataType": "URL", /*ro, opt, string, 上传图片数据类型, range:[,], desc:URL-图片存储
URL(需要支持并且配置云存储), binary-图片二进制数据, 最大长度为32*/ "format": "json",
/*ro, opt, string, 协议交互格式, range:[,]*/
"eventType": "alarmResult"
/*ro, req, string, 触发的事件类型, range:[,],
desc:alarmResult-人脸比对报警上报,
captureResult-人脸抓拍上报,
HFPD -高频人员检测事件,
behaviorResult-行为分析结果上报,
executeControlResult-车牌布控,
LFPD-低频人员侦测,
AIOP_Video-AI 开放平台视频分析任务结果上报,
string 类型, 最大长度为64, 多个类型用逗号隔开*/
}
]
}