oki, pas de soucis, et merci vraiment pour la tentative. A moi de migrer maintenantthetrueavatar a écrit : ↑24 sept. 2018, 16:03Il 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.
Api Viessmann pour récupération de données avec Vitoconnect
Re: Script pour Gestion Chaudière Viessmann connecté
Re: Script pour Gestion Chaudière Viessmann connecté
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
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
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Dans le Main.php et sur le wiki il y a l'exemple suivant
En fait les méthode "simplifiée" font appel à setRawJsonData et getRawJsonData.
L'implémentation de la méthode setDhwTemperature fait est simplement:
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.
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";
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);
}
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.
Re: Script pour Gestion Chaudière Viessmann connecté
OK, merci beaucoup pour ces explications.
je vais tester et j'essaye de préparer quelque chose sur github d'ici quelques jours
je vais tester et j'essaye de préparer quelque chose sur github d'ici quelques jours
-
- Timide
- Messages : 1
- Inscription : 27 sept. 2018, 13:20
Re: Script pour Gestion Chaudière Viessmann connecté
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 :
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 ...
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 )
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 ...
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
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...
Re: Script pour Gestion Chaudière Viessmann connecté
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é.
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é.
Re: Script pour Gestion Chaudière Viessmann connecté
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 :
m'ais j'ai l'erreur :
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 ?
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"]."";
}
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 )
Si oui, comment l'appeler via le bootstrap ?
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
C'est parce que tu dois juste passer la partie avec les caractères donc et ne pas mettre devant ViessmannAPI::
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Sinon le code est disponible sur le github.
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
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);
Re: Script pour Gestion Chaudière Viessmann connecté
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 :
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")
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";
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")
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
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";
Re: Script pour Gestion Chaudière Viessmann connecté
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
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
Re: Script pour Gestion Chaudière Viessmann connecté
Je viens de tester, mais le résultat n'est pas top :thetrueavatar a écrit : ↑04 oct. 2018, 11:38En 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";
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"}]}
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Code : Tout sélectionner
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);
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
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".
Re: Script pour Gestion Chaudière Viessmann connecté
T es trop fort. MERCIthetrueavatar 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".
Envoyé de mon ONEPLUS A5010 en utilisant Tapatalk
Re: Script pour Gestion Chaudière Viessmann connecté
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
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
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Non car j'ai le même problème que toi et je n'arrive pas à trouver pourquoi...
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 24 invités