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

Tags: #<Tag:0x00007fe31892e8b8>

Voici la version nouveau forum du sujet sur l’api. Au passage j’ai créé un document pour “aider” à ajouter soit-même de nouvelles feature. Il est pour l’instant en anglais:


Je mettrait en attaché le thread d’origine.
Ce post est dédié à l’api que j’ai développée pour récupérer les infos exposée sur le cloud par le VitoConnect 100.
Le développement de cette API à débuter suite à un changement majeur fin Août des services Viessmann.

L’Api est disponible sur https://github.com/thetrueavatar/Viessmann-Api
Elle est écrite en php 7 et fournie sur la forme d’un “phar”(un gros zip contenant les fichiers php). Les release sont dispo https://github.com/thetrueavatar/Viessmann-Api/releases.

Un wiki expliquant comment démarrer est dispo sur:


La documentation du code se trouve sur :
https://htmlpreview.github.io/?https://raw.githubusercontent.com/thetrueavatar/Viessmann-Api/develop/docs/class-Viessmann.API.ViessmannAPI.html

Lien vers l’ancien post:
https://www.jeedom.com/forum/viewtopic.php?f=31&t=43736&p=777325#p777325

1 J'aime

Bonjour,
Je n’ai pas de viesmann mais c’est toujours utile de pouvoir intégrer dans jeedom.
Tu ne veux pas en faire un plug-in ? Cela sera plus simple pour tout le monde non ?

Bonjour,
je ne souhaite pas faire le travail par manque de temps/énergie et intérêt. Je préfère me focaliser sur le fait d’une API indépendante du logiciel de domotique. Je pourrais faire un “plugin” mais ça me demanderais trop d’effort surtout que j’ai un peu du mal avec la logique jeedom. Historiquement, je suis parti dans l’idée de faire quelque chose dans jeedom(d’où le choix du php qui n’était pas naturel pour moi). Je pense que la prochaine étape sera plutôt de rajouter une couche de controller REST sur mon API afin d’être agnostique du langage et faciliter son intégration.

Versions 1.2.0 dispo içi:

Added new feature(thanks to x6vde for the help)

  • isInFixedPrograms: true if fixedProgram enable
  • getHeatingSolarPowerProduction: Return the Heating Solar Power production
  • getHeatingSolarSensorsTemperatureCollector
  • getHeatingPowerConsumption: Return the Heating consumption.
  • getHeatingTemperatureReturn: temperature of the return to the heating
  • getHeatingConfigurationCoolingMode
  • setHeatingConfigurationCoolingMode

Fixed:

  • setRawDhwSchedule

Bonjour,

J’ai téléchargé le phar en 1.2.1.
J’ai modifié le fichier bootstrap.php pour modifié le numéro de version.
Lorsque je lance j’ai 15 erreurs qui apparaissent de ce style là :

Erreur pour [Salle de Bain][Vitoconnect][Disponible] : Erreur sur php /var/www/html/plugins/script/core/ressources/ViessmanAPI/example/GetAvailableFeatures.php 2>&1 valeur retournée : 255. Détails : PHP Warning: require(phar:///var/www/html/plugins/script/core/ressources/ViessmanAPI/example/Viessmann-Api-1.2.1.phar/vendor/autoload.php): failed to open stream: phar error: “vendor/autoload.php” is not a file in phar “/var/www/html/plugins/script/core/ressources/ViessmanAPI/example/Viessmann-Api-1.2.1.phar” in phar:///var/www/html/plugins/script/core/ressources/ViessmanAPI/example/Viessmann-Api-1.2.1.phar/index.php on line 2 PHP Fatal error: require(): Failed opening required ‘phar:///var/www/html/plugins/script/core/ressources/ViessmanAPI/example/Viessmann-Api-1.2.1.phar/vendor/autoload.php’ (include_path=’.:/usr/share/php’) in phar:///var/www/html/plugins/script/core/ressources/ViessmanAPI/example/Viessmann-Api-1.2.1.phar/index.php on line 2

Qu’est ce que j’ai raté ?

Bonjour. Good news. Viessmann a décidé de publier son API. A priori, ça serait la même j’imagine sauf qu’au moins elle sera officiellement documentée/supportée et pourra donc être utilisée sans devoir “deviner” son fonctionnement. Je me suis proposé pour tester:


EDIT: j’ai reçu le lien pour soumettre ma candidature. Clairement, ils veulent s’orienter vers l’intégration dans les logicielles domotiques mais bon ça demande si on serait prêt à payer pour avoir des extra features… J’espère que ça va pas m’attirer d’emmerde maintenant que j’ai déjà développer un truc qui s’intégrait dans les plateforme gratuitement et qu’ils le savent…

1 J'aime

peut-etre que @Mips ferait le plugin ? :wink:

Je vais vérifier car ça semble indiquer que dans le phar généré il n’y a pas le fichier vendor/autoload.php.
J’ai peut-être généré le phar sans faire le compose avant. Je check.

Je confirme que le phar était corrompu. Je l’ai regénéré et ça devrait marché. Désolé pour le délais de réponse. Visiblement, je reçois pas les notifications par mail ou alors je suis passé à côté.

hello. pour quelle raison une modification de la consigne de température (normal + reduit) fonctionnerait mais serait changé qq minutes ou heures après?

je le fais via slider inséré sur mon design. voici le script ci-joint, les 2 dernières commandes en bas sont mes 2 sliders.

scriptvi

ils fonctionnent, la valeur est modifiée pdt qq minutes, mais au bout d’un moment ca revient à des valeurs différentes (celle de l’application? pas sûr) ou comme si la modification d’une valeur (réduit par exemple) reset faussement l’autre valeur (normaltemp) par exemple…

merci

Bonjour,

Je suis équipé d’une chaudière Viessmann.
Qui peut me renseigner afin d’acquérir le vitotronic opto 1 : site e-commerce ?
Je serais davantage intéressé par un plugin plutôt qu’un script.

Est-ce qu’un plugin existe ?

A+
Bernard

Bonjour,

Je n’ai pas encore le vitoconnect.

Mais je suis entrain de développer un POC sur l’utilisation de l’api développée par @thetrueavatar afin de produire un plugin.

Dans le principe, les options sont les suivantes :

Possibilité de définir pour un même équipement de type Viessmann, des équipements (eqLogic Jeedom) différents. Ce qui à la base aujourd’hui dans Jeedom n’existe pas. En sorte du polymorphisme.

Chaque eqLogic/Viessmann est doté par définition de tous les crons qui peuvent être paramètrés au niveau du plugin.

L’utilisateur choisit lui-même les fonctions Viessmann intégrées à l’équipement. Le nombre n’est pas limité , mais attention au délai de traitement et à l’affichage.

Comme pour tout plugin, les infos du plugin sont rafraîchies :
-> suivant la périodicité du cron
-> ou par la commande refresh de la tuile.

L’utilisateur pourra regrouper dans une même tuile des infos issues de l’api et une boite de sélection présentant des commandes avec paramètre qui pourront être envoyées à l’api, par exemple changer la température, etc.

L’affichage de la tuile reste à la charge de l’utilisateur. Le rendu personnalisé peut être réalisé avec la fonction toHtml du plugin. Un rendu minimaliste, sans trop de mise en forme est produit par le plugin.

Si vous avez des suggestions ou questions, allez-y c’est le moment.

A+
Bernard

Bonjour,
Désolé pour les réponses tardives. Il semble que les notifications de nouveau message ne fonctionnent pas systématiquement…
Concernant le plugin je ne prévois pas d’en faire. Mon API est “agnostique” du logiciel de domotique et utilisable potentiellement sur homeassistant, fhem, openhab,… Je n’ai pas la connaissance ni le temps+énergie de faire un plugin donc toute contribution est évidemment la bienvenue.
@1suisse
Je pense que ton problème est que dans ta configuration, la valeur affichée est changée mais celle-ci n’est pas envoyée vers la chaudière viessman. Du coup, lors du refresh par le cron des données ben tu récupères les anciennes. En gros, a aucun moment la chaudière ne reçoit la nouvelle consigne. A vérifier mais je pense qu’il faut que tu changes en dessous de la partie Icone et que tu sélectionnes une valeur. La il est mis “aucune”. Je n’ai pas accès à mon script mais il faut que ça soit cohérent au niveau variable. Je me souviens que j’avais le même problème et que les valeurs à mettre (#slider) étaient peu intuitive. Dès que je retrouve accès à mon jeedom je te dis de quoi il en retourne.

1 J'aime

Bonjour à tous. Je suis en train d’essayer de remettre en route le pilotage de ma chaudière via cette api (merci à Thetrueavatar au passage pour le boulot fourni!!). J’avais réussi à mettre en route le pilotage l’an dernier, avant que l’API ne soit modifiée, mais là je sèche par contre pour remettre le système en route :frowning:

J’aurais vraiment besoin d’un pas à pas de la part de quelqu’un qui fait fonctionner tout ça sous jeedom, étant par ailleurs très novice en code d’une manière générale.

De mon côté j’ai fait:
via putty:
git clone vers /var/www/html/plugins/script/core/ressources/Viessmann
modifier le fichier credential.properties dans example

Puis dans jeedom:
créer un objet chaudière, et lui ajouter les commandes issues du répertoire example.

Lorsque je teste la commande (GetActiveMode par exemple) j’obtiens une fenêtre avec les infos suivantes:
"Résultat de la commande : Message: Error during authentication process. Please review your username/password Code: 0 Message: response didn’t contains code to get token probably due to an error in authentication process. Response :

Login

![viessmann-logo]"
Je précise que j’ai vérifié plusieurs fois mes identifiants parce qu’evidemment avec ce genre de message, le soucis vient souvent d’une erruer de saisie…

Si quelqu’un peut m’aider, ce script est très pratique puisque s’agissant d’une maison en location, ça me permet d’interfacer le fonctionnement de la chaudière sur la base du calendrier d’occupation, et franchement c’était le pied!

On est bien d’accord que tu as dans le même répertoire, le phar, le fichier credentials.properties et le fichier bootstrap.php ?
Tu peux vérifier que tu as pas un retour à la ligne en trop dans credentials ?
Sous linux un “dos2unix credentials.properties” permet de régler les problèmes de retour à la ligne windows qui ne sont pas compris sous linux…
Sinon tu peux essayer de “hardcoder” ton user-pwd dans le bootstrap.php histoire de vérifier si c’est lié au fichier credentials ?
$params = [
“user” => “username”,
“pwd” =>“password”,
“deviceId” => “0”,
“circuitId” => “0”
];

Merci pour le retour, j’ai visiblement trouvé la solution: certes mes identifiants étaient corrects, mais je les avais écrit dans le fichier credential.properties et non credentials.properties…

Merci d’avoir prit le temps de me répondre en tous les cas :slight_smile:

Bonjour, en fin de compte j’ai toujours un soucis: les scripts contenus dans le répertoire examples permettant de récupérer des infos numériques fonctionnent bien, je peux par exemple connaître la consigne en mode eco.

Par contre ceux permettant de lancer des actions, comme passer en mode confort, ne fonctionnent pas.
Par exemple, lorsque je cherche à passer en mode eco, j’obtiens la réponse suivante dans le log du plugin:
[2020-02-26 08:53:57][DEBUG] : Execution de : php /var/www/html/plugins/script/core/ressources/Viessmann/example/ActivateEcoProgram.php 2>&1
[[2020-02-26 08:54:17][DEBUG] : Result : Message: Unable to set data for featureheating.circuits.0.operating.programs.eco and action activate and data{“temperature”:20} Reason: DEVICE_COMMUNICATION_ERROR Code: 1

Quelle version du phar utilises-tu ?
Peux-tu faire un

echo $viessmannApi->getRawJsonData("featureheating.circuits.0.operating.programs.eco");

et me donner le résultat ?

Pour info, il est probable que l’api ne fonctionne plus. En effet, Viessmann a mis une limite en place pour l’accès de la nouvelle API et de l’ancienne.
Voici le texte que j’ai vu passé sur openhab que certains utilisateurs auraient reçu.

From the coming week on, a threshold will become active that prevents from unauthorized use of the API** . This will affect all third-party solutions, which can thereby no longer be used.
We are aware that the demand for APIs to our technologies for integration
into other solutions and third-party systems is increasing.
To provide you with an opportunity for this, we will launch a portal in the next two months for all developers to get access to our API. With the Viessmann Developer Portal , we intend to open ourselves up, release a documentation of the interface and co-develop new solutions together with you

Reçu également ce matin par email :frowning: