小言_互联网的博客

HIKSDK/RTSP/Ehome视频平台EasyCVR如何通过GB28181协议增加告警功能?

252人阅读  评论(0)

告警功能作为安防视频云服务搭建中的一个新功能,在越来越多的安防场景中发挥了作用。随着TSINGSEE青犀视频开发的国标GB28181协议视频平台EasyGBS内告警功能的成功运用,我们打算逐步在更多的平台内运用告警功能。

因此在EasyCVR的新版本中我们增加了告警功能的调用接口,目前我们开发的告警功能主要是通过GB28181协议进行接收,因此EasyCVR内告警功能同EasyGBS内告警的开发大致相同。EasyCVR接收国标message中的alarm告警消息,然后通过接口展示。

在message添加如下方法:


  
  1. case "alarm":
  2. deviceId := ""
  3. if el := doc.Root().SelectElement( "DeviceID"); el != nil {
  4. deviceId = el.Text()
  5. }
  6. limiter := Limiter.GetLimiter(fmt.Sprintf( "%s:%s", serial, deviceId))
  7. if !limiter.Allow() {
  8. return
  9. }
  10. alarmPriority := ""
  11. if el := doc.Root().SelectElement( "AlarmPriority"); el != nil {
  12. alarmPriority = el.Text()
  13. }
  14. alarmMethod := ""
  15. if el := doc.Root().SelectElement( "AlarmMethod"); el != nil {
  16. alarmMethod = el.Text()
  17. }
  18. alarmType := ""
  19. if el := doc.Root().SelectElement( "Info").SelectElement( "AlarmType"); el != nil {
  20. alarmType = el.Text()
  21. }
  22. alarmTime := ""
  23. if el := doc.Root().SelectElement( "AlarmTime"); el != nil {
  24. alarmTime = el.Text()
  25. }
  26. body := fmt.Sprintf( `<?xml version="1.0" encoding="UTF-8"?>\r
  27. <Response>\r
  28. <CmdType>Alarm</CmdType>\r
  29. <SN>%s</SN>\r
  30. <DeviceID>%s</DeviceID>\r
  31. <Result>OK</Result>\r
  32. </Response>\r`, sn, deviceId)
  33. c.Req.MakeResponse().EnsureToTag().SetHeader( "Content-Type", "Application/MANSCDP+xml")
  34. c.Req.MakeResponse().EnsureToTag().SetBody(body)
  35. channels := models.GetChannel(deviceId, serial)
  36. if channels == nil {
  37. log.Println( "alarm find channel is nil")
  38. return
  39. }

通过以上接口调用查看,可以得到告警列表,测试后满足要求。

EasyCVR的新版本在近期就会上线,到时候大家可以下载试用,如果还想了解更多关于EasyCVR的相关内容,可以关注我们,另外,TSINGSEE青犀视频还开发了多种不同协议的安防视频云服务平台,包括EasyNVR、EasyGBS、EasyDSS等,都可以下载试用,欢迎咨询。


转载:https://blog.csdn.net/TsingSee/article/details/111291329
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场