Bonjour Denis,denisvdb a écrit : ↑09 sept. 2018, 16:40Bonjour,
pour la creation du scenario c'est ok.
mais pour le widget? le getParamByID , $widget ?
bon j'ai créer un virtuel avec une info virtuelle nomée : temp.
dans le scénario j'ai remplacé les $widget par $temp.
après exécution du scénario, la valeur est tj 0.
log du scenario donne:
------------------------------------
[2018-09-09 16:38:34][SCENARIO] Start : Scenario lance manuellement.
[2018-09-09 16:38:34][SCENARIO] Exécution du sous-élément de type [action] : code
[2018-09-09 16:38:34][SCENARIO] Exécution d'un bloc code
[2018-09-09 16:38:36][SCENARIO] La commande n'a pas pu être trouvée : #[Chauffage][Chaudière Viessmann][Température Intérieure]# => #[Chauffage][Chaudière Viessmann][Température Intérieure]#
[2018-09-09 16:38:36][SCENARIO] Fin correcte du scénario
Pourriez-vous m'aider. D'avance merci
Denis
Il ne faut pas modifier la fonction
Il faut modifier les appels à la fonction.
J'ai mis un exemple dans mon post précédent pour plus d'explications.
Par ailleurs, j'ai aussi ajouté un enregistrement ($scenario->setLog($TableauJSON)) de la structure du JSON complet ce qui devrait vous permettre de récupérer toutes les variables correspondant à votre chaudière (ce n'est pas facile à lire).
Le plus simple est de reprendre le fichier php qui avait été posté par Laurentdb et le lancer dans un navigateur équipé d'un plugin JSON
Je le reposte si dessous (encore merci Laurent )
A mettre dans un fichier type index.php et à lire dans un navigateur Chrome par ex. équipe de JSON-handle
Code : Tout sélectionner
<?php
$client_id = '79742319e39245de5f91d15ff4cac2a8';
$client_secret = '8ad97aceb92c5892e102b093c7c083fa';
$isiwebuserid = 'xxx'; //to be modified
$isiwebpasswd = 'xxx'; //to be modified
$authorizeURL = 'https://iam.viessmann.com/idp/v1/authorize';
$token_url = 'https://iam.viessmann.com/idp/v1/token';
$apiURLBase = 'https://api.viessmann-platform.io';
$general = '/general-management/installations?expanded=true&';
$debug = false;
$callback_uri = "vicare://oauth-callback/everest";
// $authorization = base64_encode("$client_id:$client_secret");
// //debug_msg ("autho=$authorization",$debug);
$code = getCode();
//debug_msg("code=$code", $debug);
$access_token = getAccessToken($code);
//debug_msg("access token= $access_token", $debug);
$resource = getResource($access_token, $apiURLBase . $general);
//debug_msg("resource: $resource", $debug);
$installation = json_decode($resource, true)["entities"][0]["properties"]["id"];
//echo "Installation=$installation\n";
$gw = json_decode($resource, true)["entities"][0]["entities"][0]["properties"]["serial"];
//echo "Gateway=$gw\n";
$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features");
//debug_msg("resource: $resource", $debug);
//echo strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo ($resource);
function getCode()
{
global $client_id, $authorizeURL, $callback_uri;
global $isiwebuserid, $isiwebpasswd;
$url = "$authorizeURL?client_id=$client_id&scope=openid&redirect_uri=$callback_uri&response_type=code";
$header = array("Content-Type: application/x-www-form-urlencoded");
$curloptions = array(
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => "$isiwebuserid:$isiwebpasswd",
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_POST => true,
);
$curl = curl_init();
curl_setopt_array($curl, $curloptions);
$response = curl_exec($curl);
curl_close($curl);
$matches = array();
$pattern = '/code=(.*)"/';
preg_match_all($pattern, $response, $matches);
return ($matches[1][0]);
}
function getAccessToken($authorization_code)
{
global $token_url, $client_id, $client_secret, $callback_uri;
global $isiwebuserid, $isiwebpasswd;
$header = array("Content-Type: application/x-www-form-urlencoded;charset=utf-8");
$params = array(
"client_id" => $client_id,
"client_secret" => $client_secret,
"code" => $authorization_code,
"redirect_uri" => $callback_uri,
"grant_type" => "authorization_code");
$curloptions = array(
CURLOPT_URL => $token_url,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => rawurldecode(http_build_query($params)));
$curl = curl_init();
curl_setopt_array($curl, $curloptions);
$response = curl_exec($curl);
curl_getinfo($curl);
curl_close($curl);
if ($response === false) {
//echo "Failed\n";
//echo curl_error($curl);
} elseif (!empty(json_decode($response)->error)) {
//echo "Error:\n";
//echo $authorization_code;
//echo $response;
}
return json_decode($response)->access_token;
}
// we can now use the access_token as much as we want to access protected resources
function getResource($access_token, $api)
{
//echo "ok\n";
$header = array("Authorization: Bearer {$access_token}");
//var_dump($header);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $api,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
));
$response = curl_exec($curl);
curl_close($curl);
//return json_decode($response, true);
return ($response);
}
function debug_msg($message, $debug)
{
if ($debug) {
//echo "$message\n";
}
}