| | |
| | | |
| | | //GetDevicesByPageNO 按页获取下级设备(平台或摄像机)列表 |
| | | //pageNo (数字) 指定获取第几页,第一次为1,返回总页数,总条数等,再根据这些信息去再次查询,直到取完全部 |
| | | func (api Gb28181Api) GetDevicesByPageNO(pageNo int) (DevicesInOnePage, bool) { |
| | | func (api Gb28181Api) getDevicesByPageNO(pageNo int) (DevicesInOnePage, bool) { |
| | | url := BASIC_URL + DATA_URL_PREFIX + "/get_all_device/" + strconv.Itoa(pageNo) |
| | | client := NewClient() |
| | | |
| | |
| | | //GetAllDevices 获取全部下级设备(平台或摄像机)信息列表 |
| | | func (api Gb28181Api) GetAllDevices() ([]DeviceInfo, bool) { |
| | | var deviceSlice []DeviceInfo |
| | | devicesPerPage, flag := api.GetDevicesByPageNO(1) |
| | | devicesPerPage, flag := api.getDevicesByPageNO(1) |
| | | if !flag { |
| | | log.Println("GetDevicesByPageNO Error, deviceSlice is nil") |
| | | return deviceSlice, false |
| | |
| | | deviceSlice = devicesPerPage.Data |
| | | |
| | | for i := 1; i < devicesPerPage.TotalPage; i++ { |
| | | devicesPerPage, flag := api.GetDevicesByPageNO(i + 1) |
| | | devicesPerPage, flag := api.getDevicesByPageNO(i + 1) |
| | | if !flag { |
| | | log.Println("GetDevicesByPageNO Error,pageno:" + strconv.Itoa(i+1) + " ,deviceSlice is not completed") |
| | | return deviceSlice, false |
| | |
| | | //pageNo (数字) 指定获取第几页,第一次为1,返回总页数,总条数等,再根据这些信息去再次查询,直到取完全部 |
| | | //srcType (字符串) "all"-表示获取设备的所有资源 "node"-父节点下的第一级资源 |
| | | //注意:根据"restype"字段,忽略资源组,只保留通道资源------"restype":(数字)1-通道资源 2-资源组 |
| | | func (api Gb28181Api) GetCamsByDevAndPage(devID string, srcType string, pageNo int) (CamerasInOnePage, bool) { |
| | | func (api Gb28181Api) getCamsByDevAndPage(devID string, srcType string, pageNo int) (CamerasInOnePage, bool) { |
| | | url := BASIC_URL + DATA_URL_PREFIX + "/get_all_channel/" + devID + "/" + srcType + "/" + strconv.Itoa(pageNo) |
| | | client := NewClient() |
| | | |
| | |
| | | //devID (字符串) 注册的设备的20位id |
| | | func (api Gb28181Api) GetAllCamerasByDevID(devID string) ([]CameraInfo, bool) { |
| | | var cameraSlice []CameraInfo |
| | | camerasPerPage, flag := api.GetCamsByDevAndPage(devID, "all", 1) |
| | | camerasPerPage, flag := api.getCamsByDevAndPage(devID, "all", 1) |
| | | if !flag { |
| | | log.Println("GetCamsByDevAndPage Error, deviceSlice is nil") |
| | | return cameraSlice, false |
| | |
| | | cameraSlice = camerasPerPage.Data |
| | | |
| | | for i := 1; i < camerasPerPage.TotalPage; i++ { |
| | | camerasPerPage, flag := api.GetCamsByDevAndPage(devID, "all", i+1) |
| | | camerasPerPage, flag := api.getCamsByDevAndPage(devID, "all", i+1) |
| | | if !flag { |
| | | log.Println("GetCamsByDevAndPage Error! devID:" + devID + ",type:all,pageno:" + strconv.Itoa(i+1) + " ,cameraSlice is not completed") |
| | | return cameraSlice, false |
| | |
| | | } |
| | | |
| | | //GetAllCamerasByDomainUnit get all cameras by domainunit 获取所有行政区域下的设备 |
| | | func (api Gb28181Api) GetAllCamerasByDomainUnitAndPage(domainpubid string, pageNo int) (CamerasInOnePage, bool) { |
| | | func (api Gb28181Api) getAllCamerasByDomainUnitAndPage(domainpubid string, pageNo int) (CamerasInOnePage, bool) { |
| | | url := BASIC_URL + DATA_URL_PREFIX + "/get_domainunit_channel/" + domainpubid + "/" + strconv.Itoa(pageNo) |
| | | client := NewClient() |
| | | |
| | |
| | | //GetAllCamerasByDevID 获取指定行政区域的摄像机列表 |
| | | func (api Gb28181Api) GetAllCamerasByDomainUnit(domainpubid string) ([]CameraInfo, bool) { |
| | | var cameraSlice []CameraInfo |
| | | camerasPerPage, flag := api.GetAllCamerasByDomainUnitAndPage(domainpubid, 1) |
| | | camerasPerPage, flag := api.getAllCamerasByDomainUnitAndPage(domainpubid, 1) |
| | | if !flag { |
| | | log.Println("GetCamsByDevAndPage Error, deviceSlice is nil") |
| | | return cameraSlice, false |
| | |
| | | cameraSlice = camerasPerPage.Data |
| | | |
| | | for i := 1; i < camerasPerPage.TotalPage; i++ { |
| | | camerasPerPage, flag := api.GetAllCamerasByDomainUnitAndPage(domainpubid, i+1) |
| | | camerasPerPage, flag := api.getAllCamerasByDomainUnitAndPage(domainpubid, i+1) |
| | | if !flag { |
| | | log.Println("GetCamsByDevAndPage Error! devID:" + domainpubid + ",type:all,pageno:" + strconv.Itoa(i+1) + " ,cameraSlice is not completed") |
| | | return cameraSlice, false |
| | |
| | | return cameraSlice, true |
| | | } |
| | | |
| | | //updateResourceByID 更新下级平台资源 |
| | | func (api Gb28181Api) updateResourceByID(devID string) bool { |
| | | url := BASIC_URL + "/vss/get_catalog/" + devID |
| | | client := NewClient() |
| | | |
| | | body, err := client.DoGetRequest(url, nil, nil) |
| | | if err != nil { |
| | | log.Println("err:", err) |
| | | return false |
| | | } |
| | | |
| | | var res GbResult |
| | | if err = json.Unmarshal(body, &res); err != nil { |
| | | log.Println("jsonErr:", err) |
| | | return false |
| | | } |
| | | if res.ErrCode != 0 { |
| | | log.Println("errcode: ", res.ErrCode, " errdesc: ", res.ErrDesc) |
| | | return false |
| | | } |
| | | |
| | | return true |
| | | } |
| | | |
| | | func (api Gb28181Api) UpdateAllResource() { |
| | | devices, b := api.GetAllDevices() |
| | | if b && len(devices) > 0 { |
| | | for _, device := range devices { |
| | | api.updateResourceByID(device.PublicID) |
| | | } |
| | | } |
| | | } |
| | | |
| | | //SetCameraPtz 2.3 PTZ云台控制 |
| | | //"channelid": (字符串) 通道20位编号 |
| | | //"ptztype": (字符串) 控制类型:上"up",下"down",左"left",右"right",左上"leftup",左下"leftdown",右上"rightup",右下"rightdown",镜头近"zoomin",镜头远"zoomout", |
| | |
| | | return false |
| | | } |
| | | |
| | | //解析 CamerasInOnePage |
| | | var res GbResult |
| | | if err = json.Unmarshal(body, &res); err != nil { |
| | | log.Println("jsonErr:", err) |