zhongrj
2023-06-27 d74b495736f0c04522ec54274b70fed0ded2878d
public/map/lib/videoPlay/js/hkDeviceControl.js
New file
@@ -0,0 +1,237 @@
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);
      }
    );
  };
}