////////////////////////////////////////
// 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;
}