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
thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 17 oct. 2018, 12:51

Bonjour, pour info, les méthodes en question sont sur la branche Feature/MethodNotYetTest dispo içi:https://github.com/thetrueavatar/Viessm ... tYetTested

Je te conseille de prendre le phar Viessmann-Api-0.4-SNAPSHOT.phar de cet branch alors pour être avoir les méthodes que j'ai listée.
Pour le problème d'affichage, je ne comprend pas vraiment où est le probème. Lors de l'appel php ou dans jeedom ?
Perso je n'ai aucune prise sur jeedom.
Pour info, en php, quand un résultat est un tableau, il ne faut pas utiliser la fonction echo mais bien print_r pour afficher les informations. C'est notamment le cas des schedule

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par djorg08 » 17 oct. 2018, 13:55

Bonjour
j'utilise bien le phar Viessmann-Api-0.4-SNAPSHOT.phar de cette branche (retéléchargé)

J'ai comme erreur
"Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Fatal error: Uncaught Viessmann\API\ViessmannApiException: Unable to get data for feature heating.burner.statistics Reason: FEATURE_NOT_FOUND in phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api/example/Viessmann-Api-0.4-SNAPSHOT.phar/src/API/ViessmannAPI.php:280 Stack trace: #0 phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api/example/Viessmann-Api-0.4-SNAPSHOT.phar/src/API/ViessmannAPI.php(187): Viessmann\API\ViessmannAPI->getEntity('heating.burner....') #1 /var/www/html/plugins/script/core/ressources/Viessmann-Api/example/GetBoilerStatistics.php(3): Viessmann\API\ViessmannAPI->getHeatingBurnerStatistics('hours') #2 {main} thrown in phar:///var/www/html/plugins/script/core/ressources/Viessmann-Api/example/Viessmann-Api-0.4-SNAPSHOT.phar/src/API/ViessmannAPI.php on line 280 ) "

Le json est-il stocké en local ? si oui où ?

Concernant echo ou print_r, j'utilise tes scripts.

RQ : chez moi un
echo $viessmannApi->getBoilerTemperature(); fonctionne avec un script info numérique, j'ai "38" par ex en retour
mais un
echo "Température boiler " . $viessmannApi->getBoilerTemperature() . "\n"; ne fonctionne pas avec un script info autres (ou numérique) ?
j'ai "" (rien) en retour

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 17 oct. 2018, 14:30

Reason: FEATURE_NOT_FOUND veut dire simplement que l'information n'est pas exposé sur le serveur viessmann pour ton équipement. Ca peut être temporaire ou juste pas prévu.
Dans ce cas là je throw une ViessmannApiException qui contient le message d'erreur.
J'ai mis dans le fichier GetActiveModeErrorHandling.php un exemple de gestion d'erreur:

Code : Tout sélectionner

<?php
include __DIR__.'/bootstrap.php';
use Viessmann\API\ViessmannApiException;
try {
    echo "Active mode for default circuit(): " . $viessmannApi->getActiveMode(3) . "\n";
} catch (ViessmannApiException $e) {
    echo "Message: " . $e->getMessage() . "\n";
    echo "Code: " . $e->getCode() . "\n";
    echo "Trace:" . $e->getTraceAsString() . "\n";
}
En pratique:
$e->getMessage() renverra

Code : Tout sélectionner

Message: Unable to get data for feature heating.circuits.3.operating.modes.active
Reason: FEATURE_NOT_FOUND
$e->getCode renverrra 1
$e->getTraceAsString() renverra

Code : Tout sélectionner

Trace:#0 phar:///home/clibois/personnel/git/Viessmann-API/example/Viessmann-Api-0.4-SNAPSHOT.phar/src/API/ViessmannAPI.php(82): Viessmann\API\ViessmannAPI->getEntity('heating.circuit...')
#1 /home/clibois/personnel/git/Viessmann-API/example/GetActiveModeErrorHandling.php(7): Viessmann\API\ViessmannAPI->getActiveMode(3)
#2 {main}

Pour jeedom et le plugin script, celui-ci prend comme valeur ce qui est renvoyé le script et donc dans notre cas la fonction echo.
Donc si c'est echo "Température boiler " . $viessmannApi->getBoilerTemperature() . "\n"; il reçoit "Température boiler 38." au lieu de 38.

Pour rappel, mes scripts dans le répertoire exampel, sont des examples de l'utilisation de l'API. Ils sont à adapter en fonction de l'outils domotique(domoticz,jeedom,...). En pratique, la plupart fonctionne tel quel pour plugin script jeedom mais on peut faire autrement.
Dernière édition par thetrueavatar le 17 oct. 2018, 14:39, édité 1 fois.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 17 oct. 2018, 14:38

Hello,

Je n'utilise pas ton script thetrueavatar, mais en tout cas, j'ai accès aux données de statistiques via les mêmes appel aux API que toi.
Je confirme donc que cela fonctionne depuis le 9 octobre 16:00 heure de la mise à jour du serveur Viessmann me concernant.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 17 oct. 2018, 14:41

Merci pour le retour. Néanmoins, J'essaye plus de tester mon "parsing" des données que leur disponibilité effective.Le problème c'est que ça dépend d'un équipement à l'autre. Perso j'avais pas accès aux données de temp eau chaude alors que d'autres oui. Depuis 2-3 jours la donnée est enfin dispo pour moi aussi...

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 17 oct. 2018, 14:48

Je confirme, les données s'ajoutent au fil de l'eau.
Comment avais-tu récupéré les URL et structure JSON sans avoir les données accessibles sur ton API serveur ?
Veux-tu que je t'envoie mon JSON pour vérifier ton parsing ?

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 17 oct. 2018, 16:26

J'ai découvert en décompilant l'applications ViCare une liste de json d'exemple. Je l'ai rajouté dans mon github sur https://github.com/thetrueavatar/Viessm ... atures.zip
Je me base dessus pour implémenter les fonctionnalités mais je peux pas tester en "live" pour certaines. D'où ma demande.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 17 oct. 2018, 21:15

Bonsoir à tous,
je voulais savoir si la fonction: getDhwTemperature est déja intégrée?
j'ai aussi un souci avec GetHeatingBurnerActive.php, ne donne aucune valeur lors de mon test.

Denis

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 17 oct. 2018, 21:29

denisvdb a écrit :
17 oct. 2018, 21:15
Bonsoir à tous,
je voulais savoir si la fonction: getDhwTemperature est déja intégrée?
j'ai aussi un souci avec GetHeatingBurnerActive.php, ne donne aucune valeur lors de mon test.

Denis
Je l'avais mis dans la branche des méthodes non testées mais ça fonctionne sur mon équipement donc je l'ai rajoutée dans la branche develop.
C'est parce que la méthode renvoie un booléen. Hors en php le booléen false est converti en string vide alors que le true est converti en 1. Donc ça veut juste dire que ton boiler est pas actif. Chez moi jeedom l'interprète correctement.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 17 oct. 2018, 21:33

Que faut il faire dans jeedom pour que ce soit bien interprèté?

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 17 oct. 2018, 21:37

pour le getdhwtemperature: j'ai le message d'erreur suivant:
Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Fatal error: Uncaught Error: Call to undefined method Viessmann\API\ViessmannAPI::getDhwTemperature() in /var/www/html/plugins/script/core/ressources/GetDhwTemperature.php:3 Stack trace: #0 {main} thrown in /var/www/html/plugins/script/core/ressources/GetDhwTemperature.php on line 3 )

fmetz
Timide
Messages : 69
Inscription : 26 oct. 2015, 12:31

Re: Script pour Gestion Chaudière Viessmann connecté

Message par fmetz » 18 oct. 2018, 01:26

Hello,

Bonjour, je suis en train de passer en revue tout ce qui marche chez moi mais j'ai un problème avec le "Viessmann-Api-0.4-SNAPSHOT.phar" car tous les "set" ne marchent plus alors qu'ils marchent très bien avec le phar 0.3 !
Par exemple, j'ai l'erreur suivante sur un SetCurve :

Code : Tout sélectionner

PHP Fatal error:  Uncaught TypeError: Argument 4 passed to Viessmann\Oauth\ViessmannOauthService::request() must be of the type array, string given, called in phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthClientImpl.php on line 113 and defined in phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthService.php:110
Stack trace:
#0 phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthClientImpl.php(113): Viessmann\Oauth\ViessmannOauthService->request('operational-dat...', '{"shift":-5,"sl...', 'POST', '{"shift":-5,"sl...', Array)
#1 phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/API/ViessmannAPI.php(263): Viessmann\Oauth\ViessmannOauthClientImpl->setData('heating.circuit...', 'setCurve', '{"shift":-5,"sl...')
#2 phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessma in phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthService.php on line 110

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 18 oct. 2018, 06:42

denisvdb a écrit :
17 oct. 2018, 21:37
pour le getdhwtemperature: j'ai le message d'erreur suivant:
Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Fatal error: Uncaught Error: Call to undefined method Viessmann\API\ViessmannAPI::getDhwTemperature() in /var/www/html/plugins/script/core/ressources/GetDhwTemperature.php:3 Stack trace: #0 {main} thrown in /var/www/html/plugins/script/core/ressources/GetDhwTemperature.php on line 3 )
Le message indique que le phar de l'API ne contient pas la méthode getDhwTemperature. J'ai revérifié et je l'ai bien poussé dans le github. Peux-tu rétélécharger le phar depuis le github ou faire un git pull ?

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 18 oct. 2018, 06:44

fmetz a écrit :
18 oct. 2018, 01:26
Hello,

Bonjour, je suis en train de passer en revue tout ce qui marche chez moi mais j'ai un problème avec le "Viessmann-Api-0.4-SNAPSHOT.phar" car tous les "set" ne marchent plus alors qu'ils marchent très bien avec le phar 0.3 !
Par exemple, j'ai l'erreur suivante sur un SetCurve :

Code : Tout sélectionner

PHP Fatal error:  Uncaught TypeError: Argument 4 passed to Viessmann\Oauth\ViessmannOauthService::request() must be of the type array, string given, called in phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthClientImpl.php on line 113 and defined in phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthService.php:110
Stack trace:
#0 phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthClientImpl.php(113): Viessmann\Oauth\ViessmannOauthService->request('operational-dat...', '{"shift":-5,"sl...', 'POST', '{"shift":-5,"sl...', Array)
#1 phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/API/ViessmannAPI.php(263): Viessmann\Oauth\ViessmannOauthClientImpl->setData('heating.circuit...', 'setCurve', '{"shift":-5,"sl...')
#2 phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessma in phar:///var/www/html/plugins/script/core/ressources/Viessmann/Viessmann-Api-0.4-SNAPSHOT.phar/src/Oauth/ViessmannOauthService.php on line 110
Ok merci j'ai check et j'ai fait une erreur. C'est corrigé et mis à jour sur le develop. Mon dernier dev avait aussi pour but de mettre en place ce qui est nécessaire pour tester l'api et éviter les régressions. Je vais regarder le problème et quand j'aurais le temps mettre un peu plus de unit test en place.

fmetz
Timide
Messages : 69
Inscription : 26 oct. 2015, 12:31

Re: Script pour Gestion Chaudière Viessmann connecté

Message par fmetz » 18 oct. 2018, 07:44

thetrueavatar a écrit :
18 oct. 2018, 06:44

Ok merci j'ai check et j'ai fait une erreur. C'est corrigé et mis à jour sur le develop. Mon dernier dev avait aussi pour but de mettre en place ce qui est nécessaire pour tester l'api et éviter les régressions. Je vais regarder le problème et quand j'aurais le temps mettre un peu plus de unit test en place.
Ce n'est pas grave et c'est cool que tu confirmes.
Ton boulot est énorme et super utile pour moi.
Merci beaucoup.

baptiste2184
Timide
Messages : 8
Inscription : 03 oct. 2018, 21:17

Re: Script pour Gestion Chaudière Viessmann connecté

Message par baptiste2184 » 18 oct. 2018, 10:36

Bonjour, ça fait un petit moment que je suis ce post et enfin j'arrive récupérer des informations de la chaudière,

Super travail de votre part, je suis novice (Jeedom et langage) l'info sur l’outil de développement dans Jeedom ma permis d'avancer :)
thetrueavatar a écrit :
11 oct. 2018, 16:40
Voila c'est fait. J'ai testé le room supply et ça fonctionne nickel ! Pour l'autre j'ai pas de sonde intérieure donc peut pas dire. Un grand merci pour la contribution ! Je me demande par contre quel est la différence entre le SupplyTemperature et le BoilerTemperature. J'avais remarqué que les 2 valeurs étaient identiques en pratique. A mon avis, la prochaine étape avant une release c'est d'améliorer la gestion d'erreur notamment dans les cas où comme moi l'information n'est juste pas disponible. Pour l'instant ça explose sur la property valeur alors que ça devrait simplement dire qu'il n'y a pas de résultat.
Mon but premier était de récupérer la consigne de température pour le circuit de chauffage, j'ai pour projet d'utiliser un ballon tampon (solaire) et de le piquer entre mon retour plancher chauffant et le retour chaudière afin de chauffer l'eau (via le solaire) à la consigne de la chaudière et ainsi éviter la mise en route du bruleur.

J'ai aussi pensé aux informations "SupplyTemperature et le BoilerTemperature" mais non.
J'ai la formule de calcul pour avoir la valeur de la consigne de température d'eau :
T°départ = T°cons. ambiance + Parallèle - Pente x B x (1,4347 + 0,021 x B + 247,9 x 0,000001 x B x B)
celle-ci est calculable grâce aux info de base disponible. à moins de pouvoir la récupérer directement de la chaudière??

Dommage de devoir utiliser Vicare, il y a plus d'information disponible sur Vitodata 100. En principe Viessmann est en train de développer une application, c'est sans doute pour cela qu'il y a de pus en plus d'info de disponible...
Le fait de ne plus pouvoir utiliser Vitotrol plus est vraiment dommage. (info conso, soleil, apport d’énergie, etc...)

Merci encore pour votre travail et motivation

Baptiste

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 18 oct. 2018, 10:54

ViCare reste la "nouvelle" application Viessmann. Il y a eu une importante régression des fonctionnalités dipo fin Août du à une mauvaise synchro entre le dev de l'application et le dev des services exposant les données. Une toute nouvelle version des services a été déployée par erreur fin Août sans synchro avec l'application ViCare... Du coup, ViCare n'affiche qu'une petite partie des infos. De surcroît, le nouveau service n'est pas encore pleinement mature et certaines infos apparaissent au fur et à mesure. Ils sont donc encore en train de travailler dessus... Au début j'avais 84 feature, depuis une semaine j'en ai 87 dont l'info de température de mon ballon d'eau chaude...
Donc à terme, ça devrait fournir la même chose que Vitotrol. C'est plus une migration technique qu'ils font vers de nouvelles technos(service REST, Siren, Oauth,...)

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par denisvdb » 19 oct. 2018, 22:39

@thetrueavatar ,
bonsoir,
j'ai testé environ 10 examples, ça fonctionne à merveille.
je tenais à te remercier pour le travail fournis.

Denis

fmetz
Timide
Messages : 69
Inscription : 26 oct. 2015, 12:31

Re: Script pour Gestion Chaudière Viessmann connecté

Message par fmetz » 20 oct. 2018, 17:05

Bonjour,

J'ai tout testé de mon côté et il y a beaucoup de trucs qui marchent et ça me rend bien service. Il y a d'autres fonctions qui ne marchent pas encore mais ça viendra c'est certain :)
Si cela intérresse quelqu'un, je peux faire une synthèse de ce qui marche et ne marche pas avec ma chaudière. Dites-moi.
Peut-être qu'il pourrait y avoir un tableau sur ton github thetrueavatar si tu es d'accord ?

Un truc qui marche et pour lequel j'aurais besoin d'un coup de main c'est le schedule du circuit de chauffage.
J'aimerais bien pouvoir changer la programmation du chauffage par jeedom pour pouvoir par exemple faire une programmation inter saisons et une hiver et puis une programmation quand je suis à la maison pendant les vacances.
Mais voilà, il faudrait faire une fonction pour écrire le schedule... Est-ce que cela tente quelqu'un que cela intéresse et qui sait faire parce que moi je n'y connais rien en PHP ?
Voilà ce que me retourne le schedule (c'est un print_r sur le résultat de getHeatingSchedule :

Code : Tout sélectionner

Array
(
    [active] => Array
        (
            [type] => boolean
            [value] => 1
        )

    [entries] => Array
        (
            [type] => Schedule
            [value] => Array
                (
                    [mon] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 04:30
                                    [end] => 07:30
                                    [mode] => normal
                                    [position] => 0
                                )

                            [1] => Array
                                (
                                    [start] => 16:30
                                    [end] => 22:00
                                    [mode] => normal
                                    [position] => 1
                                )

                        )

                    [tue] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 04:30
                                    [end] => 07:30
                                    [mode] => normal
                                    [position] => 0
                                )

                            [1] => Array
                                (
                                    [start] => 16:30
                                    [end] => 22:00
                                    [mode] => normal
                                    [position] => 1
                                )

                        )

                    [wed] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 04:30
                                    [end] => 08:00
                                    [mode] => normal
                                    [position] => 0
                                )

                            [1] => Array
                                (
                                    [start] => 16:30
                                    [end] => 22:00
                                    [mode] => normal
                                    [position] => 1
                                )

                        )

                    [thu] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 04:30
                                    [end] => 07:30
                                    [mode] => normal
                                    [position] => 0
                                )

                            [1] => Array
                                (
                                    [start] => 16:30
                                    [end] => 22:00
                                    [mode] => normal
                                    [position] => 1
                                )

                        )

                    [fri] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 04:30
                                    [end] => 07:30
                                    [mode] => normal
                                    [position] => 0
                                )

                            [1] => Array
                                (
                                    [start] => 16:30
                                    [end] => 23:00
                                    [mode] => normal
                                    [position] => 1
                                )

                        )

                    [sat] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 05:30
                                    [end] => 23:00
                                    [mode] => normal
                                    [position] => 0
                                )

                        )

                    [sun] => Array
                        (
                            [0] => Array
                                (
                                    [start] => 05:30
                                    [end] => 23:00
                                    [mode] => normal
                                    [position] => 0
                                )

                        )

                )

        )

)

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 20 oct. 2018, 17:53

Moi ça m'intéresse pour pouvoir corriger le code en effet :p.
C'est pas bête l'idée du tableau. Pour la documentation, je pense que je vais faire en sorte que les méthodes disponibles soit "auto-documentée" sur base du code. En tant que dev, j'ai l'habitude d'utiliser des Editeur qui quand je fais ctrl+espace me liste les fonctions disponibles. Je me rend compte que pour la plupart ils ont besoin d'avoir une liste documentée.
Pour le schedule je peux écrire la fonction. Je doit juste réfléchir à l'interface à mettre en place. Me semble qu'on peut ajouter un jour donc ça serait du style nom du jour, start, end, ....

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

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