Ysyun.php 4.0 KB
<?php
/**
 * Created by PhpStorm.
 * User: pcl
 * Date: 2023/9/1
 * Time: 9:49
 */

namespace app\api\controller;

use app\common\controller\Api;
use fast\Http;
use think\Db;

/**
 * 验证接口
 */
class Ysyun extends Api
{
    protected $noNeedLogin = '*';
    protected $layout = '';
    protected $error = null;
    protected $appKey;
    protected $appSecret;

    public function _initialize()
    {
        parent::_initialize();//用的楚雄设备
        $this->appKey = 'd1771c36aeed495aa32fca9b1e988353';
        $this->appSecret = '9ad483e23c7c2d9a0973499e789b8f06';
    }

    /***
     * 萤时云定时获得accessToken
     * 每6天执行1次
     */
    public function getaccessToken()
    {
        $url = "https://open.ys7.com/api/lapp/token/get";
        $post_data = [
            'appKey' => $this->appKey,
            'appSecret' => $this->appSecret,
        ];
        $accessToken = send_post($url, $post_data, "POST");
        $accessToken = json_decode($accessToken, true);
        if ($accessToken['code'] == 200) {
            //更新token
            $access_token = $accessToken['data']['accessToken'];
            return $access_token;
        } else {
            //重新执行1次
            $this->getaccessToken();
        }
    }

    /***
     * 定时任务,第5小时执行
     * 更新设备在线状态信息
     */
    public function upHkStatus()
    {
        //获得设备列表
        $list = Db::name('reservoir_hkws_hardware')
            ->field('id,scode')
            ->select();
        if ($list) {
            $token = $this->getaccessToken();
            foreach ($list as $k => $v) {
                //接口获得设备状态
                $res = $this->getHkAllinfo($token, $v['scode']);
                if ($res != -1) {
                    //更新状态
                    $data['updatetime'] = time();
                    $data['status'] = $res['status'] == 1 ? 1 : 2;
                    $rs = Db::name('reservoir_hkws_hardware')
                        ->where(['scode' => $v['scode']])
                        ->update($data);
                }
            }
        }

        $this->success('执行成功', $rs);
    }

    /***
     * 获得指定设备的详细信息
     */
    protected function getHkAllinfo($token, $scode)
    {
        $url = "https://open.ys7.com/api/lapp/device/info";
        $post_data = [
            'accessToken' => $token,
            'deviceSerial' => $scode,
        ];
        $info = send_post($url, $post_data, "POST");
        $info = json_decode($info, true);
        if ($info['code'] == 200) {
            return $info['data'];//['status']在线状态:0-不在线,1-在线
        } else {
            return -1;
        }
    }

    /***
     * 获得指定设备的播放地址
     */
    public function getHkAddress($data)
    {
        $url = "https://open.ys7.com/api/lapp/v2/live/address/get";
        $info = send_post($url, $data, "POST");
        $info = json_decode($info, true);

        return $info;
    }

    public function getplayback($data){
        $url = "https://open.ys7.com/api/lapp/video/by/time";
        $info = send_post($url, $data, "POST");
        $info = json_decode($info, true);

        return $info;
    }


    /***
     * 取消视频加密
     */
    public function Cameraoff($data)
    {
        $url = "https://open.ys7.com/api/lapp/device/encrypt/off";
        $info = send_post($url, $data, "POST");
        $info = json_decode($info, true);

        return $info;
    }

    /***
     * 操作云台开始
     */
    public function ytCenterStart($data)
    {
        $url = "https://open.ys7.com/api/lapp/device/ptz/start";
        $info = send_post($url, $data, "POST");
        $info = json_decode($info, true);

        return $info;
    }

    /***
     * 操作云台结束
     */
    public function ytCenterStop($data)
    {
        $url = "https://open.ys7.com/api/lapp/device/ptz/stop";
        $info = send_post($url, $data, "POST");
        $info = json_decode($info, true);

        return $info;
    }


}