//////////////////////////////////////// // ACTIVE WEBCAM IMOU RANGER 2C // //////////////////////////////////////// $trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger()); $cmd = cmd::byString($trigger); $cmd_mame = $cmd->getName(); $eqLogicName = $cmd->getEqLogic()->getName(); $eqLogic = eqLogic::byId($cmd->getEqLogic()->getId()); $object = $eqLogic->getObject()->getName(); $cmd_value = $cmd->execCmd(); //$scenario->setLog($object); // nom de l'objet //$scenario->setLog($eqLogicName); // nom de l'équipement //$scenario->setLog($cmd_mame); // nom de la commande Info //$scenario->setLog($cmd_value); // valeur de la commande Info $deviceId=cmd::byString("#[$object][$eqLogicName][deviceID]#")->execCmd(); $camPass=cmd::byString("#[$object][$eqLogicName][CamPass]#")->execCmd(); //$scenario->setLog(cmd::byString("#[$object][$eqLogicName][deviceID]#")->execCmd()); $appId=cmd::byString("#[Système][imouApi][appId]#")->execCmd(); $appSecret=cmd::byString("#[Système][imouApi][appSecret]#")->execCmd(); $deviceID=$deviceId; $CamPass=$camPass; $SubAccount="12345674567"; $APIurl = 'https://openapi-fk.easy4ip.com:443/openapi/'; //////////////////////////////////////// // GET THE ADMIN ACCESS TOKEN // //////////////////////////////////////// $url = $APIurl.'accessToken' ; $system = CreatSystemParams ($appId,$appSecret); $params = [ ]; $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'01' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //echo 'RESULT GET ADMIN TOKEN:
'.nl2br($utf8 ).'
'; $obj = json_decode($utf8); $Token = $obj->result->data->accessToken; echo 'Token:
'.nl2br($Token ).'
'; //////////////////////////////////////// // CREAT A SUB ACCOUNT // //////////////////////////////////////// $url = $APIurl.'createSubAccount' ; $params = [ 'account'=>$SubAccount, 'token'=>$Token ]; $system = CreatSystemParams ($appId,$appSecret); $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'02' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //echo '
RESULT CREAT SUB ACCOUNT:
'.nl2br($utf8 ).'
'; //////////////////////////////////////// // GET SUB ACCOUNT OPENID // //////////////////////////////////////// $url = $APIurl.'getOpenIdByAccount' ; $params = [ 'account'=>$SubAccount, 'token'=>$Token ]; $system = CreatSystemParams ($appId,$appSecret); $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'03' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //echo '
RESULT GET OPEN ID:
'.nl2br($utf8 ).'
'; $obj = json_decode($utf8); $openid = $obj->result->data->openid; //echo 'OpneID:
'.nl2br($openid ).'
'; //////////////////////////////////////// // GET SUB ACCOUNT TOKEN // //////////////////////////////////////// $url = $APIurl.'subAccountToken' ; $params = [ 'openid'=>$openid, 'token'=>$Token ]; $system = CreatSystemParams ($appId,$appSecret); $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'04' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //echo '
RESULT GET SUBID TOKEN:
'.nl2br($utf8 ).'
'; $obj = json_decode($utf8); $openidToken = $obj->result->data->accessToken; echo 'OpneID Token:
'.nl2br($openidToken ).'
'; //////////////////////////////////////// // ADD SUB ACCOUNT POLICY // //////////////////////////////////////// $url = $APIurl.'addPolicy' ; $params = [ 'openid'=>$openid, 'token'=>$Token, 'policy'=> [ 'statement'=> [ [ 'permission'=>'DevControl', 'resource'=> [ 'dev:'.$deviceID, 'cam:'.$deviceID.':1' ] ] ] ] ]; $system = CreatSystemParams ($appId,$appSecret); $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'05' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //echo '
RESULT ADD POLICY:
'.nl2br($utf8 ).'
'; //////////////////////////////////////// // RUN OPEN-CLOSE CAMERA SETTINGS // //////////////////////////////////////// switch ($cmd_value) { // Selon la valeur de la commande qui a déclenché... case 0: // Cache l'objectif $url = $APIurl.'setDeviceCameraStatus' ; $params = [ 'enableType'=>'closeCamera', 'enable'=>true, 'deviceId'=>$deviceID, 'channelId'=>'0', 'token'=>$openidToken ]; break; case 1: // Active l'objectif $url = $APIurl.'setDeviceCameraStatus' ; $params = [ 'enableType'=>'closeCamera', 'enable'=>false, 'deviceId'=>$deviceID, 'channelId'=>'0', 'token'=>$openidToken ]; break; case -1: // Reboot la caméro $url = $APIurl.'restartDevice' ; $params = [ // 'enableType'=>'closeCamera', // 'enable'=>true, 'deviceId'=>$deviceID, // 'channelId'=>'0', 'token'=>$openidToken ]; break; } $system = CreatSystemParams ($appId,$appSecret); $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'06' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); echo '
OPEN/CLOSE CAMERA RESULT:
'.nl2br($utf8 ).'
'; //////////////////////////////////////// // SET LED OFF // //////////////////////////////////////// $url = $APIurl.'setDeviceCameraStatus' ; $params = [ 'enableType'=>'breathingLight', 'enable'=>false, 'deviceId'=>$deviceID, 'channelId'=>'0', 'token'=>$openidToken ]; $system = CreatSystemParams ($appId,$appSecret); $data = json_encode([ 'system'=>empty($system)? new stdClass():$system, 'params'=>empty($params)? new stdClass():$params, 'id'=>'06' ]); $ret = curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //echo '
LIGHT RESULT:
'.nl2br($utf8 ).'
'; //////////////////////////////////////////////////////////////////////////////////// function curl_post($data,$url) { $ch = curl_init(); $res= curl_setopt ($ch, CURLOPT_URL,$url); var_dump($res); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ($ch); curl_close($ch); if ($result == NULL) { return 0; } return $result; } function CreatSystemParams($appId,$appSecret) { $time= strtotime(date('Y-m-d H:i:s',time())); $nonce = rand(); $signStr="time:$time,nonce:$nonce,appSecret:$appSecret"; $sign=md5($signStr); $system = [ 'ver'=>'1.0', 'sign'=>$sign, 'appId'=>$appId, 'time'=>$time, 'nonce'=>$nonce ]; return $system; }