package isapi import ( "encoding/json" "encoding/xml" "fmt" "github.com/sirupsen/logrus" ) //能力 //http://192.168.110.165/ISAPI/Smart/FieldDetection/1/capabilities //http://192.168.110.165/ISAPI/Smart/channels/1/calibrations/capabilities // FieldDetection 区域入侵 type FieldDetectionCap struct { XMLName xml.Name `xml:"FieldDetection"json:"FieldDetection"` Xmlns string `xml:"xmlns,attr"json:"xmlns"` Version string `xml:"version,attr"json:"version"` ID string `xml:"id"json:"id"` Enabled string `xml:"enabled"json:"enabled"` StartTriggerTime string `xml:"startTriggerTime"json:"startTriggerTime"` EndTriggerTime string `xml:"endTriggerTime"json:"endTriggerTime"` NormalizedScreenSize struct { NormalizedScreenWidth string `xml:"normalizedScreenWidth"json:"normalizedScreenWidth"` NormalizedScreenHeight string `xml:"normalizedScreenHeight"json:"normalizedScreenHeight"` } `xml:"normalizedScreenSize"json:"normalizedScreenSize"` FieldDetectionRegionList struct { Size string `xml:"size,attr"json:"size"` FieldDetectionRegion []struct { ID string `xml:"id"json:"id"` Enabled string `xml:"enabled"json:"enabled"` SensitivityLevel string `xml:"sensitivityLevel"json:"sensitivityLevel"` TimeThreshold string `xml:"timeThreshold"json:"timeThreshold"` DetectionTarget string `xml:"detectionTarget"json:"detectionTarget"` AlarmConfidence struct { Opt string `xml:"opt,attr"json:"opt"` } `xml:"alarmConfidence"json:"alarmConfidence"` RegionCoordinatesList struct { RegionCoordinates []struct { PositionX string `xml:"positionX"json:"positionX"` PositionY string `xml:"positionY"json:"positionY"` } `xml:"RegionCoordinates"json:"RegionCoordinates"` } `xml:"RegionCoordinatesList"json:"RegionCoordinatesList"` } `xml:"FieldDetectionRegion"json:"FieldDetectionRegion"` } `xml:"FieldDetectionRegionList"json:"FieldDetectionRegionList"` IsSupportMultiScene string `xml:"isSupportMultiScene"json:"isSupportMultiScene"` IsSupportHumanMisinfoFilter string `xml:"isSupportHumanMisinfoFilter"json:"isSupportHumanMisinfoFilter"` IsSupportVehicleMisinfoFilter string `xml:"isSupportVehicleMisinfoFilter"json:"isSupportVehicleMisinfoFilter"` } func (c *Client) GetFieldDetectionCap() (resp FieldDetectionCap, err error) { bytes, err := c.CommonGet("/ISAPI/Smart/FieldDetection/1/capabilities") if err != nil { logrus.Error("请求出错", err) return } err = xml.Unmarshal(bytes, &resp) return } func (c *Client) GetSizeFd() (resp SmartCalibrationList, err error) { bytes, err := c.CommonGet("/ISAPI/Smart/channels/1/calibrations/FieldDetection") if err != nil { logrus.Error("请求出错", err) return } err = xml.Unmarshal(bytes, &resp) fmt.Printf("%+v\n", string(bytes)) fmt.Printf("%+v\n", resp) return } func (c *Client) PutSizeFd(data []byte) (resp ResponseStatus, err error) { var info SmartCalibrationList err = json.Unmarshal(data, &info) if err != nil { logrus.Error(err) return ResponseStatus{}, err } marshal, err := xml.Marshal(info) if err != nil { logrus.Error(err) return ResponseStatus{}, err } respData, err := c.CommonPut(marshal, "/ISAPI/Smart/channels/1/calibrations/FieldDetection") if err != nil { logrus.Error(err) return ResponseStatus{}, err } err = xml.Unmarshal(respData, &resp) if err != nil { logrus.Error(err) return ResponseStatus{}, err } return } // PutFieldDetection 设置区域入侵报警区域 func (c *Client) PutFieldDetection(data []byte) (resp ResponseStatus, err error) { var info FieldDetectionParam err = json.Unmarshal(data, &info) if err != nil { logrus.Error(err) return ResponseStatus{}, err } marshal, err := xml.Marshal(info) if err != nil { logrus.Error(err) return ResponseStatus{}, err } respData, err := c.CommonPut(marshal, "/ISAPI/Smart/FieldDetection/1") if err != nil { logrus.Error(err) return ResponseStatus{}, err } err = xml.Unmarshal(respData, &resp) if err != nil { logrus.Error(err) return ResponseStatus{}, err } return } // GetFieldDetection 获取报警区域 func (c *Client) GetFieldDetection() (resp FieldDetectionParam, err error) { bytes, err := c.CommonGet("/ISAPI/Smart/FieldDetection/1") if err != nil { logrus.Error("请求出错", err) return } err = xml.Unmarshal(bytes, &resp) return } // FieldDetectionParam 查询,配置 进入区域参数 type FieldDetectionParam struct { ID string `xml:"id" json:"id"` Enabled string `xml:"enabled" json:"enabled"` NormalizedScreenSize struct { NormalizedScreenWidth string `xml:"normalizedScreenWidth" json:"normalizedScreenWidth"` NormalizedScreenHeight string `xml:"normalizedScreenHeight" json:"normalizedScreenHeight"` } `xml:"normalizedScreenSize" json:"normalizedScreenSize"` FieldDetectionRegionList struct { Size string `xml:"size,attr" json:"size"` FieldDetectionRegion []struct { ID string `xml:"id" json:"id"` Enabled string `xml:"enabled" json:"enabled"` SensitivityLevel string `xml:"sensitivityLevel" json:"sensitivityLevel"` TimeThreshold string `xml:"timeThreshold" json:"timeThreshold"` DetectionTarget string `xml:"detectionTarget" json:"detectionTarget"` AlarmConfidence string `xml:"alarmConfidence"json:"alarmConfidence"` RegionCoordinatesList struct { RegionCoordinates []struct { PositionX string `xml:"positionX" json:"positionX"` PositionY string `xml:"positionY" json:"positionY"` } `xml:"RegionCoordinates" json:"RegionCoordinates"` } `xml:"RegionCoordinatesList" json:"RegionCoordinatesList"` } `xml:"FieldDetectionRegion" json:"FieldDetectionRegion"` } `xml:"FieldDetectionRegionList" json:"FieldDetectionRegionList"` IsSupportMultiScene string `xml:"isSupportMultiScene" json:"isSupportMultiScene"` IsSupportHumanMisinfoFilter string `xml:"isSupportHumanMisinfoFilter" json:"isSupportHumanMisinfoFilter"` IsSupportVehicleMisinfoFilter string `xml:"isSupportVehicleMisinfoFilter" json:"isSupportVehicleMisinfoFilter"` }