Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Api Viessmann pour récupération de données avec Vitoconnect

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
Avataar120
Timide
Messages : 20
Inscription : 25 août 2018, 12:26

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 09 sept. 2018, 20:45

denisvdb a écrit :
09 sept. 2018, 16:40
Bonjour,

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
Bonjour Denis,

Il ne faut pas modifier la fonction :lol:
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";
    }
}
Dernière édition par Avataar120 le 09 sept. 2018, 20:56, édité 3 fois.

Avataar120
Timide
Messages : 20
Inscription : 25 août 2018, 12:26

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 09 sept. 2018, 20:47

denisvdb a écrit :
09 sept. 2018, 18:01
Bonjour,
je souhaiterai plus de détail pour la partie écriture.
j'ai créer un deuxième scénario.
Que faut il faire dans jeedom pour la partie:
//Mise en mode chauffage + eau chaude
$data = '{"mode":"dhwAndHeating"}';
$tableauJSONBrut = $setResource($access_token, "https://api.viessmann-platform.io/opera ... ve/setMode", $data);

D'avance merci.
Rien, normalement, tu as juste à appeler le scenario et ça met la chaudière en mode Eau Chaude + Chauffage.
Pour le mode arrêt, tu changes $data = '{"mode":"dhwAndHeating"}'; par $data = '{"mode":"standby"}';
Pour le mode eau chaude seulement : $data = '{"mode":"dhw"}';

Avataar120
Timide
Messages : 20
Inscription : 25 août 2018, 12:26

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 09 sept. 2018, 20:58

Franck54550 a écrit :
09 sept. 2018, 13:30
Tout d'abord merci de partager vos compétences de dév ce qui n'est pas mon cas malheureusement. J'étais arrivé à mettre en place le script avec les requêtes sur le json et tout était ok. Bref cette version simplifiée dans un scénario avec un bloc de type code, ça devrait être de mon petit niveau, mais sans succès. J'ai modifié userid et passwd, modifié les $id en fonction de l'ordre chronologique de mon json et ajusté les noms d'info de mon virtuel, mais je n'ai aucune valeur remonté. En debug scénario j'ai

Code : Tout sélectionner

ok
array(1) {
  [0]=>
  string(1295) "Authorization: Bearer eyJlbmMiOiJBMjU2R0......
  }
Ma chaudière est une Vitoladens 300 avec vitoconnect 100, app ViCare est Ok. Voila si il y a un truc que je loupé ;) Merci de votre aide l'hiver approche à grand pas :D
@Avataar120 Thx

Edit : Pour le second bloc code "Mise en mode chauffage + eau chaude" ça c'est ok ça fonctionne super :D
Edit : Après quelques heures, constat, le script fonctionne ça c'est sur, le problème vient des Id qui ne correspondent plus à l'ancienne version.
Donc : Quid de ce fichier json ?
Essaye de lancer le fichier PHP un peu modifié pour n'afficher que le JSON que j'ai reposté juste ci-dessus.

denisvdb
Timide
Messages : 63
Inscription : 27 janv. 2017, 12:57

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 09 sept. 2018, 21:53

Bonsoir,
les 3 modes en "écriture" fonctionne bien. je pensais que se n'était pas le cas car en lecture les valeur de mode et état du bruleur sont tj à 0 quel que soit le mode utilisé.
est ce posible que les id ne correspondent pas avec une vitodens 200w?
sinon coment je peux lire le fichier complet (json) pour ma chaudière?
d'avance merci.

denisvdb
Timide
Messages : 63
Inscription : 27 janv. 2017, 12:57

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 09 sept. 2018, 21:54

encore une autre question, comment je peux créer un bouton sur le dashboard pour commander un scenario?

Denis

Franck54550
Timide
Messages : 103
Inscription : 19 janv. 2017, 20:40
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Franck54550 » 09 sept. 2018, 22:14

@Avataar120 Merci pour le php, j'ai récupéré le json, :o pour le coup il y a de l'info. Par contre il reste à comprendre comment l'exploiter...
DIY RPI 3 B / SSD : Jeedom 3.3.x / Strecth

denisvdb
Timide
Messages : 63
Inscription : 27 janv. 2017, 12:57

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 09 sept. 2018, 22:17

@ Franck54550 ,
comment faut il procéder pour récupérer le json?
merci d'avance
Denis

Avataar120
Timide
Messages : 20
Inscription : 25 août 2018, 12:26

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 09 sept. 2018, 22:30

Franck54550 a écrit :
09 sept. 2018, 22:14
@Avataar120 Merci pour le php, j'ai récupéré le json, :o pour le coup il y a de l'info. Par contre il reste à comprendre comment l'exploiter...
Tu verras c'est pas compliqué, surtout si tu regardes l'exemple que je vous ai laissé dans mon code :)

Franck54550
Timide
Messages : 103
Inscription : 19 janv. 2017, 20:40
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Franck54550 » 09 sept. 2018, 22:56

Avataar120 a écrit :
09 sept. 2018, 22:30
Franck54550 a écrit :
09 sept. 2018, 22:14
@Avataar120 Merci pour le php, j'ai récupéré le json, :o pour le coup il y a de l'info. Par contre il reste à comprendre comment l'exploiter...
Tu verras c'est pas compliqué, surtout si tu regardes l'exemple que je vous ai laissé dans mon code :)
Oui je commence à comprendre... j'ai récupéré tmp ext, tmp chaudière, pente et parallèle, je ne suis pas couché :lol:
En tout cas super boulot, je suis toujours en respect devant vos dev

Edit : Dommage j'ai perdu la durée de fonctionnement et le nombre d'allumage
Pièces jointes
2018-09-10.png
2018-09-10.png (106.1 Kio) Consulté 509 fois
DIY RPI 3 B / SSD : Jeedom 3.3.x / Strecth

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 10 sept. 2018, 10:28

Bon j'ai corrigé les problèmes de mon script.
Pour rappel, le code se trouver sur https://github.com/thetrueavatar/Viessmann-API.
Pour le récupérer un "git clone https://github.com/thetrueavatar/Viessmann-Api.git" suffit.
Ensuite, il suffit de mettre son user password dans le fichier resources/credentials.properties en mettant le user à la première ligne et le password à la seconde.
Il y a un exemple d'appel dans src/Main.php. Si vous faite

Code : Tout sélectionner

php Main.php
vous devriez récupérer pas mal d'info.

Code : Tout sélectionner

<?php
/**
 * Created by PhpStorm.
 * User: thetrueavatar
 * Date: 30/08/18
 * Time: 15:46
 */

require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/bootstrap.php';
use Viessmann\API\ViessmannAPI;
$credentials = file("../resources/credentials.properties");
$params=[
    "user"=>trim("$credentials[0]","\n"),
    "pwd"=>trim("$credentials[1]","\n"),
    "uri"=>"vicare://oauth-callback/everest"
];
$viessmanApi=new ViessmannAPI($params);
echo $viessmanApi->getFeatures();
echo "Température extérieure ".$viessmanApi->getOutsideTemperature()."\n";
echo "Température boiler ".$viessmanApi->getBoilerTemperature()."\n";
echo "Pente ".$viessmanApi->getSlope()."\n";
echo "Parallèle ".$viessmanApi->getShift()."\n";
echo "Mode chaudière ".$viessmanApi->getActiveMode()."\n";
echo "Programme actif ".$viessmanApi->getActiveProgram()."\n";
echo "Is Heating Burner active ? ".$viessmanApi->isHeatingBurnerActive()."\n";//in php false bool is converted into empty string
echo "Is Dhw mode active ? ".$viessmanApi->isDhwModeActive()."\n";
echo "Température de confort ".$viessmanApi->getComfortProgramTemperature()."\n";
echo "Température écho ".$viessmanApi->getEchoProgramTemperature()."\n";
echo "Température externe ".$viessmanApi->getExternalProgramTemperature()."\n";
echo "Température réduit ".$viessmanApi->getReducedProgramTemperature()."\n";
echo "Température supply ".$viessmanApi->getSupplyProgramTemperature()."\n";
echo "Est en veille ? ".$viessmanApi->isInStandbyMode()."\n";
echo "Appelle resources ".$viessmanApi->getRawData(ViessmannAPI::HEATING_PROGRAM_ACTIVE);
J'ai implémenté quelques fonctions de base qui retourne directement la bonne valeur.
La méthode getFeatures() renvoie toutes les infos en format brut comme le script de laurentdb.
Si vous voulez récupérer le json d'une valeur spécial il suffit d'appeler la méthode getRawData.
Voici la liste des valeurs que j'ai découvertes jusqu'à présent:

Code : Tout sélectionner

heating
heating.boiler
heating.boiler.sensors
heating.boiler.sensors.temperature.main
heating.burner
heating.burner.automatic
heating.circuits
heating.circuits.0
heating.circuits.1
heating.circuits.0.circulation
heating.circuits.1.circulation
heating.circuits.0.circulation.schedule
heating.circuits.1.circulation.schedule
heating.circuits.0.dhw
heating.circuits.1.dhw
heating.circuits.0.dhw.schedule
heating.circuits.1.dhw.schedule
heating.circuits.0.frostprotection
heating.circuits.1.frostprotection
heating.circuits.0.heating
heating.circuits.1.heating
heating.circuits.0.heating.curve
heating.circuits.1.heating.curve
heating.circuits.0.heating.schedule
heating.circuits.1.heating.schedule
heating.circuits.0.operating
heating.circuits.1.operating
heating.circuits.0.operating.modes
heating.circuits.1.operating.modes
heating.circuits.0.operating.modes.active
heating.circuits.1.operating.modes.active
heating.circuits.0.operating.modes.dhw
heating.circuits.1.operating.modes.dhw
heating.circuits.0.operating.modes.dhwAndHeating
heating.circuits.1.operating.modes.dhwAndHeating
heating.circuits.0.operating.modes.forcedNormal
heating.circuits.1.operating.modes.forcedNormal
heating.circuits.0.operating.modes.forcedReduced
heating.circuits.1.operating.modes.forcedReduced
heating.circuits.0.operating.modes.standby
heating.circuits.1.operating.modes.standby
heating.circuits.0.operating.programs
heating.circuits.1.operating.programs
heating.circuits.0.operating.programs.active
heating.circuits.1.operating.programs.active
heating.circuits.0.operating.programs.comfort
heating.circuits.1.operating.programs.comfort
heating.circuits.0.operating.programs.eco
heating.circuits.1.operating.programs.eco
heating.circuits.0.operating.programs.external
heating.circuits.1.operating.programs.external
heating.circuits.0.operating.programs.holiday
heating.circuits.1.operating.programs.holiday
heating.circuits.0.operating.programs.normal
heating.circuits.1.operating.programs.normal
heating.circuits.0.operating.programs.reduced
heating.circuits.1.operating.programs.reduced
heating.circuits.0.operating.programs.standby
heating.circuits.1.operating.programs.standby
heating.circuits.0.sensors
heating.circuits.1.sensors
heating.circuits.0.sensors.temperature
heating.circuits.1.sensors.temperature
heating.circuits.0.sensors.temperature.room
heating.circuits.1.sensors.temperature.room
heating.circuits.0.sensors.temperature.supply
heating.circuits.1.sensors.temperature.supply
heating.configuration.multiFamilyHouse
heating.device
heating.device.time
heating.device.time.offset
heating.dhw
heating.dhw.sensors
heating.dhw.temperature
heating.dhw.schedule
heating.errors
heating.errors.active
heating.errors.history
heating.sensors
heating.sensors.temperature
heating.sensors.temperature.outside
heating.service.timeBased
heating.service.burnerBased
heating.service

Franck54550
Timide
Messages : 103
Inscription : 19 janv. 2017, 20:40
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Franck54550 » 10 sept. 2018, 13:44

Bonjour, pour parfaire la gestion, il faudrait que je puisse modifier les valeurs de température de consigne, je pense à cela :

Code : Tout sélectionner

//Maj Température de consigne mode confort
$data = '{"targetTemperature":"#[Chauffage][Chaudière Viessmann][Commande]#"}';
$tableauJSONBrut = $setResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.comfort/setTemperature", $data);
basé sur le script d'Avataar120
Est ce juste ?, ne rigolez pas j'essaie de me débrouiller ;) mais je préfère votre avis avant de faire la boulette
DIY RPI 3 B / SSD : Jeedom 3.3.x / Strecth

Avataar120
Timide
Messages : 20
Inscription : 25 août 2018, 12:26

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 10 sept. 2018, 15:19

Franck54550 a écrit :
10 sept. 2018, 13:44
Bonjour, pour parfaire la gestion, il faudrait que je puisse modifier les valeurs de température de consigne, je pense à cela :

Code : Tout sélectionner

//Maj Température de consigne mode confort
$data = '{"targetTemperature":"#[Chauffage][Chaudière Viessmann][Commande]#"}';
$tableauJSONBrut = $setResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.comfort/setTemperature", $data);
basé sur le script d'Avataar120
Est ce juste ?, ne rigolez pas j'essaie de me débrouiller ;) mais je préfère votre avis avant de faire la boulette
Hello, je suis au boulot et je ne peux donc pas vérifier mais il te faut une fonction pour récupérer l'info dans ton virtuel.
Je pense que ceci devrait fonctionner :

Code : Tout sélectionner

$cmd=cmd::byString("#[Chauffage][Chaudière Viessmann][Commande]#");
$value = $cmd->execCmd();
$data = '{"targetTemperature":"$value"}';
En prenant comme hypothèse que targetTemperature est le bon nom :)

Franck54550
Timide
Messages : 103
Inscription : 19 janv. 2017, 20:40
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Franck54550 » 10 sept. 2018, 17:50

Avataar120 a écrit :
10 sept. 2018, 15:19
Franck54550 a écrit :
10 sept. 2018, 13:44
Bonjour, pour parfaire la gestion, il faudrait que je puisse modifier les valeurs de température de consigne, je pense à cela :

Code : Tout sélectionner

//Maj Température de consigne mode confort
$data = '{"targetTemperature":"#[Chauffage][Chaudière Viessmann][Commande]#"}';
$tableauJSONBrut = $setResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.comfort/setTemperature", $data);
basé sur le script d'Avataar120
Est ce juste ?, ne rigolez pas j'essaie de me débrouiller ;) mais je préfère votre avis avant de faire la boulette
Hello, je suis au boulot et je ne peux donc pas vérifier mais il te faut une fonction pour récupérer l'info dans ton virtuel.
Je pense que ceci devrait fonctionner :

Code : Tout sélectionner

$cmd=cmd::byString("#[Chauffage][Chaudière Viessmann][Commande]#");
$value = $cmd->execCmd();
$data = '{"targetTemperature":"$value"}';
En prenant comme hypothèse que targetTemperature est le bon nom :)
:o Même au boulot, je viens de faire la modification en fait même deux puisque je me suis trompé ce n'est pas programs.comfort mais programs.normal, testé en remplaçant "TargetTemperature" par "setTemperature" bref la commande n'est pas prise en compte.
Au moins J'aurais essayé et sans rien cassé (à priori)
DIY RPI 3 B / SSD : Jeedom 3.3.x / Strecth

denisvdb
Timide
Messages : 63
Inscription : 27 janv. 2017, 12:57

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 10 sept. 2018, 21:12

Bonsoir,
je bloque sur la lecture du mode de fonctionnement en mode chauffage et aussi pour l'état du bruleur.
Ces deux valeurs sont tj 0 quelque soit le mode choisi.
Je pense que les valeurs sont du texte. Quel sont les adaptation à faire dans mon virtuel?
Pourriez vous m'aider sur cela?
D'avance merci
Denis

Franck54550
Timide
Messages : 103
Inscription : 19 janv. 2017, 20:40
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Franck54550 » 10 sept. 2018, 21:45

denisvdb a écrit :
10 sept. 2018, 21:12
Bonsoir,
je bloque sur la lecture du mode de fonctionnement en mode chauffage et aussi pour l'état du bruleur.
Ces deux valeurs sont tj 0 quelque soit le mode choisi.
Je pense que les valeurs sont du texte. Quel sont les adaptation à faire dans mon virtuel?
Pourriez vous m'aider sur cela?
D'avance merci
Denis
Hello, regarde quelques post au dessus, Avataar120 à donné un script pour trouver les $Id, sans ce json tu ne peux pas faire grand chose.
Dernière édition par Franck54550 le 11 sept. 2018, 18:09, édité 1 fois.
DIY RPI 3 B / SSD : Jeedom 3.3.x / Strecth

denisvdb
Timide
Messages : 63
Inscription : 27 janv. 2017, 12:57

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 10 sept. 2018, 21:53

@ Franck54550
je bloque aussi pour récupérer le json
j'ai créer un fichier index.php avec le script. Dans chrome il me donne le code du script (celui du index.php) et dans json handle j'ai presque rien.
Pour l'affichage des modes il récupère bien les bons états. ( marche , eau chaude) mais après le refresh de la page il indique 0 à la place!

Franck54550
Timide
Messages : 103
Inscription : 19 janv. 2017, 20:40
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Franck54550 » 10 sept. 2018, 22:40

denisvdb a écrit :
10 sept. 2018, 21:53
@ Franck54550
je bloque aussi pour récupérer le json
j'ai créer un fichier index.php avec le script. Dans chrome il me donne le code du script (celui du index.php) et dans json handle j'ai presque rien.
Pour l'affichage des modes il récupère bien les bons états. ( marche , eau chaude) mais après le refresh de la page il indique 0 à la place!
Je t'ai répondu en mp pour ne pas trop polluer le fil
DIY RPI 3 B / SSD : Jeedom 3.3.x / Strecth

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 11 sept. 2018, 16:05

Re,
Je continue à déveloper mon API. Je viens de découvrir qu'on pouvait compresser tous les fichiers php en un phar. Il suffit alors d'inclure ce dernier pour utiliser mon dev. En pratique il suffit de l'inclure dans un fichier Main.php comme suit:

Code : Tout sélectionner

<?php
include 'phar://Viessmann-Api-0.1.phar/index.php';
use Viessmann\API\ViessmannAPI;
$params=[
"user"=>"username",
"pwd"=>"password",
"uri"=>"vicare://oauth-callback/everest"
];
$viessmanApi=new ViessmannAPI($params);
echo $viessmanApi->getFeatures();
Il vous suffit de faire php Main.php pour avoir toutes les données.
Donc en pratique, il vous suffira désormais de prendre le .phar du répertoire bin dans github si vous voulez la version en dev ou depuis https://github.com/thetrueavatar/Viessmann-Api/releases si vous voulez les release. Ensuite, vous faites un

Code : Tout sélectionner

include 'phar://Viessmann-Api-0.1.phar/index.php';
Et vous pourrez utiliser mon API.
Le fichier Main.php est désormais dans example.

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 12 sept. 2018, 22:10

Version 0.2 sur https://github.com/thetrueavatar/Viessm ... i-0.2.phar
Ajout de l'écriture des valeurs avec la méthode

Code : Tout sélectionner

setRawJsonData($feature, $action, $data) 
Exemple d'appel:

Code : Tout sélectionner

$viessmanApi->setRawJsonData(ViessmannAPI::HEATING_DWH_TEMPERATURE,"setTargetTemperature","{"temperature":60.0}")

djorg08
Timide
Messages : 19
Inscription : 21 avr. 2017, 10:36

Re: Script pour Gestion Chaudière Viessmann connecté

Message par djorg08 » 13 sept. 2018, 13:40

Bonjour
J'ai l'erreur suivante :
Erreur exécution de la commande [garage][Viessmann-new][donnees] : Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Warning: include(phar://../bin/Viessmann-Api-0.2.phar/index.php): failed to open stream: phar error: invalid url or non-existent phar "phar://../bin/Viessmann-Api-0.2.phar/index.php" in /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2/Main.php on line 2 PHP Warning: include(): Failed opening 'phar://../bin/Viessmann-Api-0.2.phar/index.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2/Main.php on line 2 PHP Warning: file(../resources/credentials.properties): failed to open stream: No such file or directory in /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2/Main.php on line 6 PHP Fatal error: Uncaught Error: Class 'Viessmann\API\ViessmannAPI' not found in /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2/Main.php:12 Stack trace: #0 {main} thrown in /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2/Main.php on line 12 )

le dossier "Viessmann-Api-0.2" est installé dans /var/www/html/plugins/script/core/ressources/
le fichier Main.php dans /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2
Main.php est appelé par la requête /var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2/Main.php dans un script type action

Merci pour votre aide
Didier

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités