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

Visiblement Viessmann a fait le changement et depuis aujourd’hui l’API ne fonctionne plus pour moi avec Viessmann-Api-1.3.3.phar)

Je vais vérifier demain. J’ai remarqué que sur la dernière version de l’application vicare certains paramètres de l’authentification ont changé.
Au pire la version 2.0.0 est en grande partie fonctionnelle

J’ai réanalyzé le comportement de l’application ViCare.
Il s’avère qu’elle est passée sur la nouvelle api IOT. Du coup le passage à la version 2.0.0-SNAPSHOT
semble obligatoire.
La bonne nouvelle, c’est que si c’est dispo dans ViCare ça devrait l’être(moyennant peut-être quelques adaptations) dans l’API.

Bonjour,
les fichiers de la branche master sont à jours? Quel est la structure du fichier credential.properties?

Merci d’avance
Denis

Test ce jour : passage sur branche develop du github et mise à jour en version 2.1.0-SNAPSHOT (?)
Récupération du ClientId sur le site Viessmann en desactivant captcha. Mais quelle url mettre ?
Modif de credentials.properties avec dans l’ordre
user=
pwd=
installationId=
gatewayId=
clientId=
deviceId=0
circuitId=0
Mais quand je lance Main.php par exemple : Message : Error during authentication process. Please review your username/password

Bonjour

Sur le site de Viessmann, il faut mettre l’URI suivante: http://localhost:4200/ Elle est utilisée dans l’API.

A renseigner dans credentials.properties ainsi que les user, password, installationId et gatewayId
Ces 4 derniers paramètres sont ceux qui étaient utilisés avec l’API 1.4

Merci pour ton aide. Ok pour l’url, mais pour credentials.properties les renseignements sont mis dans quel ordre ? J’ai essayé monemail, monpwd, instalid, gatewayid puis Clientid directement et même problème

Il suffit de compléter le credentials.properties.
user=monemail
pwd=monpwd

Il n’y a plus d’ordre. Chaque ligne c’est du clef=valeur.

Merci True et jpty
J’utilise l’API de la façon la plus simple, à savoir je lance des Get… depuis un RPI et ça ne marche plus depuis le 15/7. J’avais la version 1.3.3 et je suis maintenant en 2.1.0. J’ai tout viré et réinstallé avec la branche develop par un gitclone https://github.com/thetrueavatar/Viessmann-Api.git
Demande ClientId auprès de Viessmann
Paramétrage de credentials comme indiqué
puis php Main.php ne fonctionne pas
J’ai vu sur un tuto qu’il faut installer composer comme ça :
cd /home/pi/Viessmann-Api
curl -sS https://getcomposer.org/installer | php
php composer.phar install
cd /home/pi/Viessmann-Api/script
./createPhar.sh
Je ne le faisais pas pour la 1.3.3, est ce nécessaire ?

Bonjour,

Chez moi php Main.php donne des résultats. Quelles erreurs avez-vous?
Je n’ai pas installé composer et je n’ai pas lancé la commande de création du phar.

J’ai les erreurs suivantes :
Message : Error during authentication process. Please review your username/passwo rd
Code: 0
Message: response didn’t contains code to get token probably due to an error in authentication process.

En recherchant l’erreur dans le code, on tombe sur la fonction getCode dans le fichier src/Oauth/ViessmannOauthImpl.php

  • Il faut vérifier les user=monemail, pwd=monpass et clientId=monIdClient dans le credentials.properties du répertoire example
  • Lors de la génération du clientId sur le site de Viessmann, l’URI http://localhost:4200/ doit etre dans les Redirect URIs.

N’avez-vous pas tronqué le message d’erreur?
Suivant la fonction getCode, il devrait se terminer par Response: suivi du diagnostic de Viessmann

Bonjour à tous,
Merci True pour cette mise à jour. L’authentification marche à nouveau.

Je récupère à nouveau mes données sauf pour :

  • $viessmannApi->getHeatingBurnerModulation()
  • $viessmannApi->getHeatingBurnerStatistics(« hours »)
  • $viessmannApi->getHeatingBurnerStatistics(« starts »)

Je récupère au total 40 valeurs de ma chaudière, donc 3 sur 40 en échec.

Ma chaudière est en veille pendant l’été. C’était déjà le cas avant
Oui je n’ai pas copié tout le message d’erreur la suite est :

`<!DOCTYPE html>
<html>
        <head>
                <title>Viessmann Login</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF- 8">
        <link rel="icon" href="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/images/favicon.png" type="image/png">
                <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"/>
                <link rel="stylesheet" href="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/css/material.min.css"/>
        <link rel="stylesheet" href="/login/resources/nevislogrend/applications/                                                                                             IDM_OIDC_IDP_V2/webdata/css/customerRegistration.css"/>
        <script src="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/js/material.min.js"></script>
        <script src="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/js/showpw.js"></script>
                <meta name="viewport" content="width=device-width, initial-scale =1.0">
        </head>
        <body>
        <div class="b2b-main-background">           <div class="font-size-20px b2b-regestration-headline">             <div class="mdl-grid mdl-grid--no-spacing                                                                                             ">                 <div class="b2b-regestration-headline-item" style="margin-left:24px">Login</div>
            </div>         </div>
        <div class="b2b-main-container">             <div class="b2b-sub-container">                 <div class="mdl-grid mdl-grid--no-spacing">                                                                                                                  <div class="mdl-layout-spacer"></div>
                    <img src="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/images/viessmann-logo.png" alt="viessmann-logo" class="b2b-vi-i                                                                                             mage"/>
                    <div class="mdl-layout-spacer"></div>
                </div>                 <form class="b2b-form-space" id="AuthUidPwDialog" name="AuthUidPwDialog" method="POST" target="_self" action="https://iam                                                                                             .viessmann.com/idp/v2/authorize?client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;scope=IoT%20User&amp;redirect_uri=http://localhost:4200/&amp;response_type=code&amp;code_challenge=2e21faa1-db2c-4d0b-a10f-575fd372bc8c-575fd372bc8c" autocomplet                                                                                             e="off" accept-charset="UTF-8">
<div class="mdl-grid mdl-grid--no-spacing">
    <div class="mdl-layout-spacer"></div>
        <div class="error-color normal-text font-size-26px opacity-87 b2b-form-space b2b-line-height"><p>Login failed; please check the details you have entered                                                                                             .</p></div>
    <div class="mdl-layout-spacer"></div>
</div>



<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">   <input class="mdl-textfield__input" autocorrect="off" autocapitalize="off" autocomp                                                                                             lete="off" spellcheck="false"
      type="text" id="isiwebuserid" name="isiwebuserid" size="20" maxlength="255" tabindex="2">
  <label class="mdl-textfield__label" for="isiwebuserid">User name</label>
</div>



<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">   <input type="password" name="hidden-password" value="00" tabindex="-1" style="displ                                                                                             ay:none" autocomplete="off">
  <input class="mdl-textfield__input" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false"
      type="password" id="isiwebpasswd" name="isiwebpasswd" size="20" maxlength= "255" tabindex="3">
  <label class="mdl-textfield__label" for="isiwebpasswd">Password</label>
  <i class="material-icons mdl-textfield__label__icon" ontouchstart="spez.changePWType('isiwebpasswd', 'click', this);" ontouchend="spez.changePWType('isiwebpas                                                                                             swd', 'focus', this);" onmousedown="spez.changePWType('isiwebpasswd', 'click', this);" onmouseup="spez.changePWType('isiwebpasswd', 'focus', this);" onmouseout=  "spez.changePWType('isiwebpasswd', 'focus', this);">visibility_off</i>
</div>



<div class="mdl-grid mdl-grid--no-spacing" style="padding-top:16px">   <div class="mdl-cell" style="width:auto">   <label class="mdl-checkbox mdl-js-checkbox md                                                                                             l-js-ripple-effect" for="checkbox">     <input type="checkbox" name="stayloggedin" value="Stay logged on" tabindex="4" class="mdl-checkbox__input" id="checkbox"                                                                                              style="margin-left:0">
    <span class="mdl-checkbox__label">Stay logged on</span>
  </label>   </div>




                                                <div class="mdl-layout-spacer"><  /div>
        <div class="mdl-cell" style="width:auto;margin-top:5px">   <a class="forgot-username-password" id="link_pwlost" title="Forgotten password" href=                                                                                             "/selfservice/passwordlost">Forgotten password</a>
        </div>         </div>


<div class="mdl-grid mdl-grid--no-spacing" style="padding-top:60px">   <div class="mdl-layout-spacer"></div>
  <div class="mdl-cell" style="width:auto">     <button class="mdl-button mdl-js -button mdl-button--raised mdl-button--colored login-button" type="submit" name=                                                                                             "submit" value="LOGIN" id="loginButton">LOGIN</button>
  </div> </div>


                </form>                 <script type="text/javascript">document.forms['AuthUidPwDialog'].elements[0].focus()</script>
            </div>         </div>         <div class="mdl-layout-spacer"></div>                                                                                                  </div>
                                <script src="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/js/jquery-3.3.1.min.js"></script>
                <script src="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/js/dropdown.js"></script>
        <script src="/login/resources/nevislogrend/applications/IDM_OIDC_IDP_V2/webdata/js/nevislogrend.js"></script>
        </body> </html>


Code: 0`

J’utilise les fichiers de True et ça marche très bien. Moi non plus, je ne recompile pas.

Ma chaudière ne fonctionne sur la période d’été que pour l’ECS. Le chauffage est éteint.

Le diagnostic de Viessmann dans le message:
Login failed; please check the details you have entered .

Pas de caractère spécial dans le login ou le mot de passe ?
:?& …

Si il y en a. Je me souviens que lors de l’installation du boitier Vitoconnect 100OPT01 Viessmann m’avait imposé de mettre des caractères spéciaux. J’ai utilisé le même email et mdp sur le site pour obtenir le ClientId. Puis je créer un autre compte avec un autre mot de passe ?

À tout hasard essayé vos params en url encoded.
Vous pouvez les traduire via le site
: