isapi_smart_regionEntrance.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package isapi
  2. import (
  3. "encoding/json"
  4. "encoding/xml"
  5. "fmt"
  6. "github.com/sirupsen/logrus"
  7. )
  8. // RegionEntranceParam 进入区域
  9. type RegionEntranceParam struct {
  10. ID string `xml:"id" json:"id"`
  11. Enabled string `xml:"enabled" json:"enabled"`
  12. NormalizedScreenSize struct {
  13. NormalizedScreenWidth string `xml:"normalizedScreenWidth" json:"normalizedScreenWidth"`
  14. NormalizedScreenHeight string `xml:"normalizedScreenHeight" json:"normalizedScreenHeight"`
  15. } `xml:"normalizedScreenSize" json:"normalizedScreenSize"`
  16. RegionEntranceRegionList struct {
  17. Size string `xml:"size,attr" json:"size"`
  18. RegionEntranceRegion []struct {
  19. ID string `xml:"id" json:"id"`
  20. SensitivityLevel string `xml:"sensitivityLevel" json:"sensitivityLevel"`
  21. DetectionTarget string `xml:"detectionTarget" json:"detectionTarget"`
  22. AlarmConfidence string `xml:"alarmConfidence" json:"alarmConfidence"`
  23. RegionCoordinatesList struct {
  24. RegionCoordinates []struct {
  25. PositionX string `xml:"positionX" json:"positionX"`
  26. PositionY string `xml:"positionY" json:"positionY"`
  27. } `xml:"RegionCoordinates" json:"RegionCoordinates"`
  28. } `xml:"RegionCoordinatesList" json:"RegionCoordinatesList"`
  29. } `xml:"RegionEntranceRegion" json:"RegionEntranceRegion"`
  30. } `xml:"RegionEntranceRegionList" json:"RegionEntranceRegionList"`
  31. IsSupportMultiScene string `xml:"isSupportMultiScene" json:"isSupportMultiScene"`
  32. IsSupportHumanMisinfoFilter string `xml:"isSupportHumanMisinfoFilter" json:"isSupportHumanMisinfoFilter"`
  33. IsSupportVehicleMisinfoFilter string `xml:"isSupportVehicleMisinfoFilter" json:"isSupportVehicleMisinfoFilter"`
  34. IsSupportTargetMultiSelect string `xml:"isSupportTargetMultiSelect" json:"isSupportTargetMultiSelect"`
  35. }
  36. func (c *Client) GetRegionEntranceCap() (resp RegionEntranceCap, err error) {
  37. bytes, err := c.CommonGet("/ISAPI/Smart/regionEntrance/1/capabilities")
  38. if err != nil {
  39. logrus.Error("请求出错", err)
  40. return
  41. }
  42. err = xml.Unmarshal(bytes, &resp)
  43. return
  44. }
  45. func (c *Client) GetSizeRe() (resp SmartCalibrationList, err error) {
  46. bytes, err := c.CommonGet("/ISAPI/Smart/channels/1/calibrations/regionEntrance")
  47. if err != nil {
  48. logrus.Error("请求出错", err)
  49. return
  50. }
  51. err = xml.Unmarshal(bytes, &resp)
  52. return
  53. }
  54. func (c *Client) PutSizeRe(data []byte) (resp ResponseStatus, err error) {
  55. var info SmartCalibrationList
  56. err = json.Unmarshal(data, &info)
  57. if err != nil {
  58. logrus.Error(err)
  59. return ResponseStatus{}, err
  60. }
  61. marshal, err := xml.Marshal(info)
  62. if err != nil {
  63. logrus.Error(err)
  64. return ResponseStatus{}, err
  65. }
  66. respData, err := c.CommonPut(marshal, "/ISAPI/Smart/channels/1/calibrations/regionEntrance")
  67. if err != nil {
  68. logrus.Error(err)
  69. return ResponseStatus{}, err
  70. }
  71. err = xml.Unmarshal(respData, &resp)
  72. if err != nil {
  73. logrus.Error(err)
  74. return ResponseStatus{}, err
  75. }
  76. return
  77. }
  78. // GetRegionEntrance 获取区域侦测参数
  79. func (c *Client) GetRegionEntrance() (resp RegionEntranceParam, err error) {
  80. bytes, err := c.CommonGet("/ISAPI/Smart/regionEntrance/1")
  81. if err != nil {
  82. logrus.Error("请求出错", err)
  83. return
  84. }
  85. err = xml.Unmarshal(bytes, &resp)
  86. marshal, err := json.Marshal(resp)
  87. if err != nil {
  88. logrus.Error("请求出错", err)
  89. return
  90. }
  91. fmt.Println("json数据:", string(marshal))
  92. return
  93. }
  94. // PutRegionEntrance 配置区域侦测参数
  95. func (c *Client) PutRegionEntrance(data []byte) (resp ResponseStatus, err error) {
  96. var info RegionEntranceParam
  97. err = json.Unmarshal(data, &info)
  98. if err != nil {
  99. logrus.Error(err)
  100. return ResponseStatus{}, err
  101. }
  102. marshal, err := xml.Marshal(info)
  103. if err != nil {
  104. logrus.Error(err)
  105. return ResponseStatus{}, err
  106. }
  107. respData, err := c.CommonPut(marshal, "/ISAPI/Smart/regionEntrance/1")
  108. if err != nil {
  109. logrus.Error(err)
  110. return ResponseStatus{}, err
  111. }
  112. err = xml.Unmarshal(respData, &resp)
  113. if err != nil {
  114. logrus.Error(err)
  115. return ResponseStatus{}, err
  116. }
  117. return
  118. }
  119. type RegionEntranceCap struct {
  120. ID string `xml:"id"`
  121. Enabled struct {
  122. Text string `xml:",chardata" json:"value"`
  123. Opt string `xml:"opt,attr" json:"opt"`
  124. } `xml:"enabled" json:"enabled"`
  125. NormalizedScreenSize struct {
  126. NormalizedScreenWidth string `xml:"normalizedScreenWidth" json:"normalizedScreenWidth"`
  127. NormalizedScreenHeight string `xml:"normalizedScreenHeight" json:"normalizedScreenHeight"`
  128. } `xml:"normalizedScreenSize" json:"normalizedScreenSize"`
  129. RegionEntranceRegionList struct {
  130. Size string `xml:"size,attr" json:"size"`
  131. RegionEntranceRegion []struct {
  132. ID string `xml:"id" json:"id"`
  133. SensitivityLevel struct {
  134. Text string `xml:",chardata" json:"value"`
  135. Min string `xml:"min,attr" json:"min"`
  136. Max string `xml:"max,attr" json:"max"`
  137. } `xml:"sensitivityLevel" json:"sensitivityLevel"`
  138. RegionCoordinatesList struct {
  139. RegionCoordinates []struct {
  140. PositionX string `xml:"positionX" json:"positionX"`
  141. PositionY string `xml:"positionY" json:"positionY"`
  142. } `xml:"RegionCoordinates" json:"RegionCoordinates"`
  143. } `xml:"RegionCoordinatesList" json:"RegionCoordinatesList"`
  144. MinRegionCoordinatesNum string `xml:"minRegionCoordinatesNum" json:"minRegionCoordinatesNum"`
  145. MaxRegionCoordinatesNum string `xml:"maxRegionCoordinatesNum" json:"maxRegionCoordinatesNum"`
  146. DetectionTarget struct {
  147. Text string `xml:",chardata" json:"value"`
  148. Opt string `xml:"opt,attr" json:"opt"`
  149. } `xml:"detectionTarget" json:"detectionTarget"`
  150. AlarmConfidence struct {
  151. Text string `xml:",chardata" json:"value"`
  152. Opt string `xml:"opt,attr" json:"opt"`
  153. Def string `xml:"def,attr" json:"def"`
  154. } `xml:"alarmConfidence" json:"alarmConfidence"`
  155. } `xml:"RegionEntranceRegion" json:"RegionEntranceRegion"`
  156. } `xml:"RegionEntranceRegionList" json:"RegionEntranceRegionList"`
  157. IsSupportMultiScene string `xml:"isSupportMultiScene" json:"isSupportMultiScene"`
  158. IsSupportHumanMisinfoFilter string `xml:"isSupportHumanMisinfoFilter" json:"isSupportHumanMisinfoFilter"`
  159. IsSupportVehicleMisinfoFilter string `xml:"isSupportVehicleMisinfoFilter" json:"isSupportVehicleMisinfoFilter"`
  160. IsSupportTargetMultiSelect string `xml:"isSupportTargetMultiSelect" json:"isSupportTargetMultiSelect"`
  161. IsSupportAllDayUpload string `xml:"isSupportAllDayUpload" json:"isSupportAllDayUpload"`
  162. }