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, 多個類型用逗號隔開*/
}
]
}