function HkDevice(appKey, appSecret) { this.appKey = appKey; //在萤石云获取 this.appSecret = appSecret; //在萤石云获取 this.accessToken = null; this.livelist = null; this.devicelist = null; this.cameralist = null; this.post = function(url, data, success) { jQuery.ajax({ sender: this, type: "POST", url: url, data: data, dataType: "json", success: function(data) { success(this.sender, data); } }); }; /** * 根据appKey和secret获取accessToken * @param {function} ret 异步回调请求结果 */ this.getAccessToken = function(ret) { this.post( "https://open.ys7.com/api/lapp/token/get", { appKey: this.appKey, appSecret: this.appSecret }, function(sender, data) { if (data.code == "200") { sender.accessToken = data.data.accessToken; } ret(data); } ); }; /** * 获取用户下直播视频列表 * @param {function} ret 异步回调请求结果 */ this.getLiveVideoList = function(ret) { this.post( "https://open.ys7.com/api/lapp/live/video/list", { accessToken: this.accessToken, pageStart: "0", pageSize: "50" }, function(sender, data) { if (data.code == "200") { sender.livelist = data.data; } ret(data); } ); }; /** * 获取设备列表 * @param {function} ret 异步回调请求结果 */ this.getDeviceList = function(ret) { this.post( "https://open.ys7.com/api/lapp/device/list", { accessToken: this.accessToken, pageStart: "0", pageSize: "50" }, function(sender, data) { if (data.code == "200") { sender.devicelist = data.data; } ret(data); } ); }; /** * 获取摄像头列表 * @param {function} ret 异步回调请求结果 */ this.getCamerasList = function(ret) { var mPageStart = "0"; var mPageStartIndex = 0; var mCamerasList = { code: "200", data: [] }; var cl_this = this; function mGetCamerasList() { cl_this.post( "https://open.ys7.com/api/lapp/camera/list", { accessToken: cl_this.accessToken, pageStart: mPageStart, pageSize: "50" }, function(sender, data) { if (data.code == "200") { mCamerasList.data = mCamerasList.data.concat(data.data); mPageStartIndex++; if (data.page.total > mPageStartIndex * 50) { mPageStart = mPageStartIndex + ""; mGetCamerasList(); } else { sender.cameralist = mCamerasList.data; ret(mCamerasList); } } } ); } mGetCamerasList(); }; /** * 开始云台控制 * @param {Object} option * {deviceSerial:设备序列号, * channelNo:通道号, * direction:镜像方向:操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距。 , * speed:云台速度:0-慢,1-适中,2-快} * @param {function} ret 异步回调请求结果 */ this.setPtzTurn = function(option, ret) { if ( !( option.deviceSerial && option.channelNo && option.direction != undefined && option.speed ) ) { ret(); return; } this.post( "https://open.ys7.com/api/lapp/device/ptz/start", { accessToken: this.accessToken, deviceSerial: option.deviceSerial, channelNo: option.channelNo, direction: option.direction, speed: option.speed }, function(sender, data) { if (data.code == "200") { } ret(data); } ); }; /** * 停止云台控制 * @param {Object} option * {deviceSerial:设备序列号, * channelNo:通道号} * @param {function} ret 异步回调请求结果 */ this.setPtzStop = function(option, ret) { if (!(option.deviceSerial && option.channelNo)) { ret(); return; } this.post( "https://open.ys7.com/api/lapp/device/ptz/stop", { accessToken: this.accessToken, deviceSerial: option.deviceSerial, channelNo: option.channelNo }, function(sender, data) { if (data.code == "200") { } ret(data); } ); }; /** * 镜像翻转 * @param {Object} option * {deviceSerial:设备序列号, * channelNo:通道号, * command:镜像方向:0-上下, 1-左右, 2-中心} * @param {function} ret 异步回调请求结果 */ this.setPtzMirror = function(option, ret) { if (!(option.deviceSerial && option.channelNo && option.command)) { ret(); return; } this.post( "https://open.ys7.com/api/lapp/device/ptz/stop", { accessToken: this.accessToken, deviceSerial: option.deviceSerial, channelNo: option.channelNo, command: option.command }, function(sender, data) { if (data.code == "200") { } ret(data); } ); }; /** * 根据时间获取历史影像 * @param {Object} option * {deviceSerial:设备序列号, * channelNo:通道号, * startTime:起始时间,时间格式为:1378345128000。非必选,默认为当天0点 * endTime:结束时间,时间格式为:1378345128000。非必选,默认为当前时间 * recType:回放源,0-系统自动选择,1-云存储,2-本地录像。非必选,默认为0 * @param {function} ret 异步回调请求结果 */ this.getPlaybackRecord = function(option, ret) { if (!option.deviceSerial) { ret(); return; } this.post( "https://open.ys7.com/api/lapp/video/by/time", { accessToken: this.accessToken, deviceSerial: option.deviceSerial, channelNo: option.channelNo, //"startTime":option.startTime, //"endTime":option.endTime, recType: 0 }, function(sender, data) { if (data.code == "200") { } ret(data); } ); }; }