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
Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 24 sept. 2018, 16:22

thetrueavatar a écrit :
24 sept. 2018, 16:03
Mikado a écrit :
24 sept. 2018, 14:57
Merci thetrueavatar pour ton retour. Bon déjà je suis pas taré cela me rassure. Avant de migrer, j'essaierai ta nouvelle release 5.6 lorsque tu l'auras mis sur Git.
Il n'y aura au final pas de version compatible php 5.6 parce que les librairies dont je dépend et développées par d'autres ne sont pas compatibles php 5.6.
oki, pas de soucis, et merci vraiment pour la tentative. A moi de migrer maintenant :)

Xavier.g
Timide
Messages : 43
Inscription : 23 juil. 2014, 14:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Xavier.g » 25 sept. 2018, 09:02

Bonjour thetrueavatar,

J'utilise le fichier .phpar qui est tres pratique.
par contre, je voudrais rajouter des fonctions qui ne sont pas dans le fichier API.

J'ai l'impression qu'on peut utiliser les fonctions public function getRawJsonData ($resources) et public function setRawJsonData($feature, $action, $data) depuis un fichier php.

si c'est possible, peux tu tonner un exemple ? merci de ton aide

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 25 sept. 2018, 09:57

Dans le Main.php et sur le wiki il y a l'exemple suivant

Code : Tout sélectionner

echo "Appelle resources " . $viessmannApi->getRawJsonData(ViessmannAPI::HEATING_PROGRAM_ACTIVE). "\n";
#echo "écriture température ecs avec json ".$viessmanApi->setRawJsonData(ViessmannAPI::HEATING_DWH_TEMPERATURE,"setTargetTemperature","{\"temperature\":60.0}"). "\n";
En fait les méthode "simplifiée" font appel à setRawJsonData et getRawJsonData.
L'implémentation de la méthode setDhwTemperature fait est simplement:

Code : Tout sélectionner

public function setDhwTemperature($temperature){
        $data="{\"temperature\": $temperature}";
        $this->viessmanAuthClient->setRawJsonData(ViessmannAPI::HEATING_DWH_TEMPERATURE,"setTargetTemperature",$data);
    }
La seule chose que ça fait c'est mettre pour vous le nom de la feature, le nom de l'action et le json pré-formaté dans lequel j'injecte la valeur.
Si tu remontes quelques post plus haut j'ai expliqué comment trouver les noms des actions, formats. En général tu utilises le getRawJsonData pour la feature. Ca te renvoye un json qui contient une section "actions" et ça défini tous les paramètres pour mettre à jour la donnée.
Si jamais tu as des appels non implémentés de façon simplifiée dans l'API je serai ravi de les rajouter afin de faciliter son utilisation. N'ayant qu'une seule chaudière je n'ai pas accès à toutes les informations possibles. Il y a bien des schémas défini dans le json mais ils ne sont pas accessibles. J'imagine que seul le personnel sur l'intranet viessmann a accès à ces fichiers...

Si tu te sens la motivation de contribuer tu peux faire un pull request via github. En gros, tu fais un fork de mon répository git, tu ajoutes dans le code source tes modifications et tu fais un pull request. Je reçois la demande je check que c'est ok et ça l'intègre dans mon développement. C'est comme ça que fonctionne les projets open-source.

Xavier.g
Timide
Messages : 43
Inscription : 23 juil. 2014, 14:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Xavier.g » 25 sept. 2018, 13:30

OK, merci beaucoup pour ces explications.
je vais tester et j'essaye de préparer quelque chose sur github d'ici quelques jours

spacecodes1
Timide
Messages : 1
Inscription : 27 sept. 2018, 13:20

Re: Script pour Gestion Chaudière Viessmann connecté

Message par spacecodes1 » 27 sept. 2018, 13:30

Bonjour à tous,

J'ai suivi depuis le début le script avant le changement de Viessmann.
J'ai essayé de comprendre un peu la mise en oeuvre des nouveaux scripts, mais je ne dois pas bien m'y prendre car j'ai des erreurs :

Code : Tout sélectionner

Erreur dans l'exécution du terminal, la valeur retournée est : 255. 
Détails :
Array ( [0] => PHP Fatal error: Uncaught OAuth\Common\Http\Exception\TokenResponseException: 
file_get_contents(https://api.viessmann-platform.io/operational-data/installations/85774/gateways/7571381721889207/devices/0/features/heating.boiler.sensors.temperature.main):
failed to open stream: 
HTTP request failed! HTTP/1.1 502 Bad Gateway in phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.3-SNAPSHOT.phar/vendor/lusitanian/oauth/src/OAuth/Common/Http/Client/StreamClient.php:73 Stack trace:
#0 phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.3-SNAPSHOT.phar/vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/AbstractService.php(183):
 OAuth\Common\Http\Client\StreamClient->retrieveResponse(Object(OAuth\Common\Http\Uri\Uri), NULL, Array, 'GET') 
 #1 phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.3-SNAPSHOT.phar/src/Oauth/ViessmannOauthService.php(118):
OAuth\OAuth2\Service\AbstractService->request('operational-dat...', 'GET', NULL, Array) 
#2 phar:///var/www/html/plugins/script/core/ressource in phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.3-SNAPSHOT.phar/vendor/lusitanian/oauth/src/OAuth/Common/Http/Client/StreamClient.php on line 73 )
J'ai bien configuré mes Logins et Mdp, copié le .phar et l'ensemble du dossier exemple dans le répertoire ressources, mais je n'y arrive pas.
En appel j'ai dans le script mis info puis j'ai appelé : GetBoilerTemperature.php pour essayer.

Quelqu'un pourrait me venir en aide svp ?
Peut être une mauvaise mise en oeuvre de ma part ... :roll:

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 27 sept. 2018, 19:50

bizarre bad gateway signifie en général qu'il y a un problème avec le format de la requête. J'ai testé en dev ça fonctionne chez moi le GetBoilerTemperature.php. Le problème c'est que le serveur viessmann ne dit pas en quoi...

Avatar de l’utilisateur
herigs
Timide
Messages : 42
Inscription : 10 avr. 2016, 12:44

Re: Script pour Gestion Chaudière Viessmann connecté

Message par herigs » 28 sept. 2018, 08:59

Bonjour à tous,

ma petite experience.
J'ai essayé la procédure proposée par Xavier.g. Cela fonctionne maintenant mais j'avais aussi des soucis dus au fait que j'avais un VPN actif. Aprés l'avoir désactivé tout a fonctionné.

Xavier.g
Timide
Messages : 43
Inscription : 23 juil. 2014, 14:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Xavier.g » 01 oct. 2018, 17:53

Bonjour,

j'essaie de rajouter des fonctions pour lire le 2° circuit de ma chaudiere.
(J'y connais rien en php)

j'ai créé GetActiveMode2.php dans Exemple :

Code : Tout sélectionner

<?php
include __DIR__.'/bootstrap.php';
echo $viessmannApi->getActiveMode2();

function getActiveMode2():string{
        $activeModeEntity=$this->getEntity(ViessmannAPI::"heating.circuits.1.operating.modes.active");
        return $activeModeEntity->getProperty("value")["value"]."";
}
m'ais j'ai l'erreur :

Code : Tout sélectionner

Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Parse error: syntax error, unexpected '"heating.circuits.1.operating.' (T_CONSTANT_ENCAPSED_STRING) in /var/www/html/plugins/script/core/ressources/Viessmann-Api/GetActiveMode2.php on line 6 )
Est-il possible de copier le fichier ViessmannAPI.php en dehors du fichier phpar afin de tester le rajout de fonctions ?
Si oui, comment l'appeler via le bootstrap ?

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 01 oct. 2018, 19:27

C'est parce que tu dois juste passer la partie avec les caractères donc et ne pas mettre devant ViessmannAPI::

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 01 oct. 2018, 19:28

Sinon le code est disponible sur le github.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 02 oct. 2018, 09:27

Pour être plus précis, si tu souhaites modifier mon code et l'appeler depuis example/main.php tu dois juste faire l'include de l'index.php du code et non du phar dans le fichier bootstrap.php du répertoire example:

Code : Tout sélectionner

<?php
include __DIR__.'/../index.php';
use Viessmann\API\ViessmannAPI;
$credentials = file(__DIR__."/credentials.properties");
$params = [
    "user" => trim("$credentials[0]", "\n"),
    "pwd" => trim("$credentials[1]", "\n"),
    "uri" => "vicare://oauth-callback/everest"
];
$viessmannApi = new ViessmannAPI($params);

Xavier.g
Timide
Messages : 43
Inscription : 23 juil. 2014, 14:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Xavier.g » 04 oct. 2018, 10:17

je te remercie de ton aide, mais mes connaissance en php sont trop limitées ... je n'y arrive pas.

par contre, en prenant exemple sur les fichiers existants, peux tu me donner la syntaxe pour appeler une fonction que tu n'a pas définie en constante. exemple :

Code : Tout sélectionner

<?php
include __DIR__.'/bootstrap.php';
echo $viessmannApi->getRawJsonData(ViessmannAPI::"heating.circuits.1.operating.modes.active"). "\n";
j'ai l'erreur suivante en retour :
Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Parse error: syntax error, unexpected '"heating.circuits.1.operating.' (T_CONSTANT_ENCAPSED_STRING) in /var/www/html/plugins/script/core/ressources/Viessmann-Api/GetActiveMode2.php on line 3 )

la fonction existe pourtant chez moi car j'ai un résultat en faisant une extraction globale du JSon ("value":"dhwAndHeating")

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 04 oct. 2018, 11:38

En fait mes constante contiennent juste des chaines de caractères. Donc il te suffit de paseser directement la chaine de caractèr:

Code : Tout sélectionner

<?php
include __DIR__.'/bootstrap.php';
echo $viessmannApi->getRawJsonData("heating.circuits.1.operating.modes.active"). "\n";

e014945
Timide
Messages : 15
Inscription : 16 mars 2018, 21:25

Re: Script pour Gestion Chaudière Viessmann connecté

Message par e014945 » 05 oct. 2018, 09:00

Bonjour à tous,

je viens d'installer le boitier sur ma chaudière et de télécharger l'application sur mon iphone, je vois bien les infos de chaudière comme la température eau, absence, présence. Mais dès que je fais une manipulation pour par example changer la temperature demandée via l'app rien ne se produit. Avez vous déjà eu ce problème? je suppose que je dois d'abord regler le probleme ci dessus avant de me lancer dans l'utilisation de votre script.

D'avance, merci beaucoup.

Gary

Xavier.g
Timide
Messages : 43
Inscription : 23 juil. 2014, 14:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Xavier.g » 05 oct. 2018, 13:25

thetrueavatar a écrit :
04 oct. 2018, 11:38
En fait mes constante contiennent juste des chaines de caractères. Donc il te suffit de paseser directement la chaine de caractèr:

Code : Tout sélectionner

<?php
include __DIR__.'/bootstrap.php';
echo $viessmannApi->getRawJsonData("heating.circuits.1.operating.modes.active"). "\n";
Je viens de tester, mais le résultat n'est pas top :

Code : Tout sélectionner

Résultat de la commande : {"links":[{"rel":["self"],"href":"https://api.viessmann-platform.io/operational-data/installations/68120/gateways/7571381779544103/devices/0/features/heating.circuits.1.operating.modes.active"},
{"rel":["up"],"href":"https://api.viessmann-platform.io/operational-data/installations/68120/gateways/7571381779544103/devices/0/features"},
{"rel":["http://schema.viessmann.com/link-relations#live-updates","https://wiki.viessmann.com/display/VPL/Relations#Relations-live-updates"],"href":"/operational-data/installations/68120/gateways/7571381779544103/devices/0/features/heating.circuits.1.operating.modes.active"}],"class":["heating.circuits.1.operating.modes.active","feature"],"properties":{"value":{"type":"string","value":"standby"}},"entities":[{"rel":["http://schema.viessmann.com/link-relations#feature-meta-information","https://wiki.viessmann.com/display/VPL/Relations#Relations-feature-meta-information","https://wiki.viessmann.com/display/VPL/Amounts#Amounts-unique"],"properties":{"apiVersion":1,"isEnabled":true,"isReady":true,"gatewayId":"7571381779544103","feature":"heating.circuits.1.operating.modes.active","uri":"/v1/gateways/7571381779544103/devices/0/features/heating.circuits.1.operating.modes.active","deviceId":"0","timestamp":"2018-10-05T11:18:30.974Z"}}],"actions":[{"method":"POST","isExecutable":true,"href":"https://api.viessmann-platform.io/operational-data/installations/68120/gateways/7571381779544103/devices/0/features/heating.circuits.1.operating.modes.active/setMode","name":"setMode","title":"setMode","fields":[{"name":"mode","required":true,"type":"string","enum":["standby","dhw","dhwAndHeating","forcedReduced","forcedNormal"]}],"type":"application/json"}]}
le résultat "properties":{"value":{"type":"string","value":"standby"}} est bien au milieu du texte, mais il doit manquer une instruction.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 05 oct. 2018, 18:24

c'est le résultat attendu pourtant ^^.
Dans les autres méthodes je "parse" le résultat avec une librairie. En fait, j'ai vite fait adapté la méthode getActiveMode(). Par défaut ça va sur le circuit 0 mais si tu passe le numéro du circuit en paramètre ça devrait fonctionner.
Exemple:

Code : Tout sélectionner

<?php
include __DIR__.'/bootstrap.php';
echo "Active mode for default circuit(0): ".$viessmannApi->getActiveMode()."\n";
echo "Active mode for given circuit(1): ".$viessmannApi->getActiveMode(1);
Je vais sans doute faire pareil pour les autres méthodes pour les rendre plus souples.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 06 oct. 2018, 20:40

J'ai mis une nouvelle version sur la branche development où on peut passer en option le numéro de circuit aux méthodex. Comme ça elles sont plus "génériques".

Xavier.g
Timide
Messages : 43
Inscription : 23 juil. 2014, 14:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Xavier.g » 06 oct. 2018, 22:31

thetrueavatar a écrit :J'ai mis une nouvelle version sur la branche development où on peut passer en option le numéro de circuit aux méthodex. Comme ça elles sont plus "génériques".
T es trop fort. MERCI

Envoyé de mon ONEPLUS A5010 en utilisant Tapatalk


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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 06 oct. 2018, 22:42

Bonjour,
@ thetrueavatar

J'essaie de mettre en œuvre l'example DeactivateEcoProgram.php
mon fichire contient:
<?php
include '/var/www/html/plugins/script/core/ressources/bootstrap.php';
$viessmannApi->deActivateEcoProgram();

lors de la sauvegarde dans jeedom, il donne l'erreur suivante:
Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Fatal error: Uncaught OAuth\Common\Http\Exception\TokenResponseException: file_get_contents(https://api.viessmann-platform.io/opera ... deactivate): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2.1.phar/vendor/lusitanian/oauth/src/OAuth/Common/Http/Client/StreamClient.php:73 Stack trace: #0 phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2.1.phar/vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/AbstractService.php(183): OAuth\Common\Http\Client\StreamClient->retrieveResponse(Object(OAuth\Common\Http\Uri\Uri), NULL, Array, 'POST') #1 phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2.1.phar/src/Oauth/ViessmannOauthService.php(118): OAuth\OAuth2\Service\AbstractService->request('operational-dat...', 'POST', NULL, Array) #2 phar:///var/www/html/plugins/script/core/ressources/Vies in phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api-0.2.1.phar/vendor/lusitanian/oauth/src/OAuth/Common/Http/Client/StreamClient.php on line 73 )

peux tu m'aider?
merci
Denis

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 06 oct. 2018, 23:15

Non car j'ai le même problème que toi et je n'arrive pas à trouver pourquoi...

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité