国标GB28181协议IP摄像头/录像机接入视频平台EasyGBS出现告警信息,但是不上报是什么原因?
程序员文章站
2022-06-19 11:31:15
大家知道国标GB28181协议视频平台EasyGBS更新了一个在监控系统中很实用的功能——告警功能。对告警功能不熟悉的用户可以参考此文:EasyGBS实现告警功能快照记录。告警功能更新到现在,我们也一直在对此功能进行内部测试。在EasyGBS查看设备告警信息的时候,出现设备有告警信息,但是信息不上报的情况。经过查询GB28181-2016协议后发现,在新版中设备的部分信息需要通过订阅之后才能够获得,因此我们也在EasyGBS平台中添加了订阅功能。代码实现如下:func (ser...
大家知道国标GB28181协议视频平台EasyGBS更新了一个在监控系统中很实用的功能——告警功能。对告警功能不熟悉的用户可以参考此文:EasyGBS实现告警功能快照记录。
告警功能更新到现在,我们也一直在对此功能进行内部测试。在EasyGBS查看设备告警信息的时候,出现设备有告警信息,但是信息不上报的情况。
经过查询GB28181-2016协议后发现,在新版中设备的部分信息需要通过订阅之后才能够获得,因此我们也在EasyGBS平台中添加了订阅功能。
代码实现如下:
func (server *Server) MakeSubscribeAlarmRequest(toSerial, toRealm, expires string) (req *Request, sn string, err error) {
contact := fmt.Sprintf("<sip:%s@%s:%d>", server.Serial, server.Host, server.Port)
doc := etree.NewDocument()
doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`)
query := doc.CreateElement("Query")
query.CreateElement("CmdType").SetText("Alarm")
sn = GenSN()
query.CreateElement("SN").SetText(sn)
query.CreateElement("DeviceID").SetText(toSerial)
query.CreateElement("StartAlarmPriority").SetText("0")
query.CreateElement("EndAlarmPriority").SetText("0")
query.CreateElement("AlarmMethod").SetText("0")
doc.Indent(4)
body, err := doc.WriteToString()
if err != nil {
return
}
req, err = server.MakeRequest("SUBSCRIBE", fmt.Sprintf("%s@%s", toSerial, toRealm), body)
if err != nil {
return
}
与此同时,当设备的协议版本再次选择2016版gb28181协议的时候,也能够看到上报的告警信息了。
EasyGBS国标流媒体平台支持通过GB28181协议与第三方平台进行级联,也能够与TSINGSEE青犀视频平台EasyNVR进行级联,如果大家对EasyGBS的级联功能或者告警功能比较感兴趣,欢迎联系我们了解,EasyGBS、EasyNVR等视频平台均提供试用版本供大家测试,欢迎咨询。
本文地址:https://blog.csdn.net/EasyGBS/article/details/109636430