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

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

Message par thetrueavatar » 24 août 2018, 14:11

Dernière édition par thetrueavatar le 12 nov. 2019, 17:15, édité 6 fois.

Avatar de l’utilisateur
banane63
Timide
Messages : 67
Inscription : 15 sept. 2017, 16:27

Re: Script pour Gestion Chaudière Viessmann connecté

Message par banane63 » 24 août 2018, 14:41

A ben pareil pour moi ! Ca ressemble à un blacklistage ou à une fermeture de l'API !
Si je fait :
https://api.viessmann.io/estrella/rest/ ... rs/999999/
Ca me demande bien mon identifiant.

Si je rajoute /datapoints j'ai la même chose que toi :
{"error":"GONE","errorData":{}}
Raspberry Pi 3 Jeedom - RFX433 - HUE - Mobile Alerts La Crosse Technology - Volets SOMFY - Viessmann Vitoconnect - Google Home Chromecast Wifi

Avatar de l’utilisateur
banane63
Timide
Messages : 67
Inscription : 15 sept. 2017, 16:27

Re: Script pour Gestion Chaudière Viessmann connecté

Message par banane63 » 24 août 2018, 15:48

Surveillons la réponse de Viessmann à ce sujet :

https://www.viessmann-community.com/t5/ ... aq-p/83448
Raspberry Pi 3 Jeedom - RFX433 - HUE - Mobile Alerts La Crosse Technology - Volets SOMFY - Viessmann Vitoconnect - Google Home Chromecast Wifi

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 24 août 2018, 16:48

Bon j'ai finalement regarder quelle api vicare appelait et y a du changement !
En gros, l'authentification devient une authentification type iam. On envoie son user/pwd puis on reçoit un token à fournir pour chaque appel subsequent. Le hic c'est que le token expire et donc faut le renouveler. Un peu plus de taf donc...
L'api est structurée de façon complètement différente:
Le GET sur l'url https://api.viessmann-platform.io/opera ... 0/features
me donne(copié sur pastiebin vu la longueur):
https://www.pastiebin.com/5b801a604f93f
La partie intéressante est par exemple:

Code : Tout sélectionner

"class": [
        "heating.boiler.sensors.temperature.main",
        "feature"
      ],
      "properties": {
        "status": {
          "type": "string",
          "value": "connected"
        },
        "value": {
          "type": "number",
          "value": 43
        }
      }
Ca dit que la température de ma chaudière est à 43.
Une autre façon de l'obtenir directement est de faire l'appel:
GET sur https://api.viessmann-platform.io/opera ... ature.main

Donc en gros l'application vicare a accès à toutes les infos. Y a un moyen de configurer cette bouse pour avoir plus que 3 infos ? Ca donne l'impression qu'on peut configurer des widgets soit même mais j'ai vu nul part où on peut le faire...

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 24 août 2018, 19:10

En effet l'api a bien changer.

Pour le token, c'est de l'Oauth2 (token Bearer).

L'URL de connexion est https://iam.viessmann.com/idp/v1/authorize
avec comme paramètre un client_id, isiwebpasswd, isiwebuserid

Pour le token: https://iam.viessmann.com/idp/v1/token
pour le refresh et normalement pour l'avoir.

et pour l'api c'est celle qui a été donnée.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 24 août 2018, 21:12

Oui c'est en effet du classique pour les applications smartphone avec un backend exposé via REST. Bon c'est ptet l'occasion pour moi de passer enfin sur jeedom. Je sais pas trop si hormis ce script y a d'autres plugins jeedom compatible chaudière viessman ou xiaomi ou hue.

renard
Timide
Messages : 3
Inscription : 24 août 2018, 23:21

Re: Script pour Gestion Chaudière Viessmann connecté

Message par renard » 24 août 2018, 23:29

Salut,
i'm sorry but my french is not so good to communicate in a proper way.
I've got the same problem, that the "old" Viessmann API is not available any more.

@thetrueavatar,
is it possible, that you give more details about your solution??
i tried to add ?client-id=...&isiwebuserid=xy@mail.com&isiwebpasswd=12345
with my data to the url: https://iam.viessmann.com/idp/v1/authorize
and to the "token" one.. but nothing happens :-\

it seems, that it might be not so easy ;-)

is there a way to have it done by a python script?


Thank you.

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 25 août 2018, 08:20

Bonjour,

J'ai pu avoir le Token et récupérer des informations depuis l'API. Il manque encore des trucs et je n'ai pas trop le temps aujourd'hui pour aller plus loin, mais je partage ce que j'ai fait.

En faisant du MITM, j'ai pu récupérer le clientid et le secretclientid. Comme je ne sais pas si c'est unique à chaque utilisateur ou c'est pour l'application vicare, je ne pourrais pas publié ce que j'ai utilisé. Mais encore une fois avec du man in the middle on peut facilement retrouver cette information.

Dans un shell, voilà ce que j'ai fait:

Code : Tout sélectionner

export TOKEN_EP=https://iam.viessmann.com/idp/v1/token
export AUTHZ_EP=https://iam.viessmann.com/idp/v1/authorize
# client id
export CLIENTID=XXXXXXXXXXX
# client secret
export CLIENTSECRET=ZZZZZZZZZZZ
export SCOPE=openid
export REDIRECTURI=vicare://oauth-callback/everest
Ensuite il faut récupérer, la variable CODE. Dans un browser, on prend la valeur retournée par :

Code : Tout sélectionner

echo "$AUTHZ_EP?client_id=$CLIENTID&scope=$SCOPE&redirect_uri=$REDIRECTURI&response_type=code"
C'est là que le user et password est demandé. On doit pouvoir faire du curl...

Code : Tout sélectionner

export CODE=code_found
Le token peut être lu par la commande suivante:

Code : Tout sélectionner

curl -k --user "$CLIENTID:$CLIENTSECRET" -d "code=$CODE&grant_type=authorization_code&client_id=$CLIENTID&redirect_uri=$REDIRECTURI" $TOKEN_EP
Un truc du genre est retourné:

Code : Tout sélectionner

{
    "access_token": "TOKEN_TO_BE_TAKEN",
    "id_token": "....",
    "token_type": "Bearer",
    "expires_in": 3600
}
Faire:

Code : Tout sélectionner

export CODE=TOKEN_TO_BE_TAKEN
curl -k  -H "AUTHORIZATION: Bearer $TOKEN" "https://api.viessmann-platform.io/general-management/installations?expanded=true&"  
Et voilà vous avez la liste des APIs et des requêtes à faire.

Encore une fois, il vous manque pour l'instant "$CLIENTID:$CLIENTSECRET", il faut que je regarde si c'est unique par application, normalement c'est le cas dans ce genre d'authentification. Mais il faut que je regarde.

Ensuite on pourra scripteur cela en python, php, ...

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 25 août 2018, 21:27

Je confirme que le clientid et le client secret est une authorisation smartphone commune à iOS et Android
Donc il faut mettre dans une fenêtre shell:

Code : Tout sélectionner

export CLIENTID=8ad97aceb92c5892e102b093c7c083fa
export CLIENTSECRET=8ad97aceb92c5892e102b093c7c083fa
Je vais maintenant scripter tout cela pour faire un truc un peu plus propre.

Edit 27/08/2018 (21:40):
Il y a une erreur ici, il faut mettre :

Code : Tout sélectionner

export CLIENTID=79742319e39245de5f91d15ff4cac2a8
Dernière édition par laurentdb le 27 août 2018, 21:44, édité 1 fois.

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 26 août 2018, 12:18

Bonjour,

J'ai publié un premier script https://github.com/ldb2000/Viessman-API

Il faut juste à mettre le login et le mot de passe

Le script donne le numero de l'installation, le numero de la gateway et donne la température de la sonde extérieure à titre d'exemple.

Merci de me faire un retour.

renard
Timide
Messages : 3
Inscription : 24 août 2018, 23:21

Re: Script pour Gestion Chaudière Viessmann connecté

Message par renard » 26 août 2018, 20:15

Wow, you are great!
i'll gonna try this with my raspberry pi - perhaps it takes some time ;-)

merci beaucoup!!!

edit:
i had some problems, but now it works. Received the same outside temperature (with a huge amount of code, urls, etc..) as the app.

For other people using a raspberry pi. Perhaps you have to install php-curl first:
sudo apt install php-curl
then restart your pi.

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 27 août 2018, 09:40

Hi renard,

I will add the php_curl installation in the Readme.md.

I am planning to make a modification to the script to add all the value that we can retreive.
The next step is to provide documentation and action in the script to READ/WRITE values.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 27 août 2018, 11:58

Bonjour Laurent,

Un grand merci pour ce partage et le travail réalisé.
Je suis un grand consommateur des données issues de ma chaudière pour mes différents scripts et tes avancées vont beaucoup m'aider à retrouver une automatisation pleinement fonctionnelle de mon chauffage !

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 27 août 2018, 21:48

renard a écrit :
26 août 2018, 20:15
Wow, you are great!
i'll gonna try this with my raspberry pi - perhaps it takes some time ;-)

merci beaucoup!!!
Welcome :)
renard a écrit :
26 août 2018, 20:15
For other people using a raspberry pi. Perhaps you have to install php-curl first:
sudo apt install php-curl
then restart your pi.
I will add your comment in the GitHub repo.

ijro
Timide
Messages : 2
Inscription : 22 mars 2017, 22:26

Re: Script pour Gestion Chaudière Viessmann connecté

Message par ijro » 27 août 2018, 22:23

Bonsoir Laurent
Merci beaucoup pour l'excellent travail réalisé.
Ca fonctionne bien chez moi mais sans les variables globales déclarées qui refusent de fonctionner dans les fonctions.
J'ai fait sans pour l'instant.
merci d'avance pour la suite.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Avataar120 » 28 août 2018, 07:45

Bonjour,

J'ai fait quelques manips complémentaires hier soir.
J'ai accès à toutes données en lecture (températures, consignes, état, ...) de la chaudière et j'ai les URL pour les méthodes POST des données sur lesquelles je veux pouvoir agir :)
J'ai pas eu le temps de faire les essais sur ces méthodes POST.
Encore un grand merci !

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 28 août 2018, 13:03

Avataar120 a écrit :
28 août 2018, 07:45
Bonjour,

J'ai fait quelques manips complémentaires hier soir.
J'ai accès à toutes données en lecture (températures, consignes, état, ...) de la chaudière et j'ai les URL pour les méthodes POST des données sur lesquelles je veux pouvoir agir :)
J'ai pas eu le temps de faire les essais sur ces méthodes POST.
Encore un grand merci !
Tu pourras partager tes essayes de type POST ?

Le truc que j'essaye de faire maintenant, c'est la chose suivante:

Code : Tout sélectionner

## Pour avoir la liste des appels supportés par le script
Script.php --list

## Pour lire un état
Script --read entité (temperature eau chaude par exemple)

## Pour actionner une commande
Script.php --action entité etat
On va pouvoir avancer sur le sujet :)

laurentdb
Timide
Messages : 11
Inscription : 22 août 2018, 08:09

Re: Script pour Gestion Chaudière Viessmann connecté

Message par laurentdb » 28 août 2018, 13:05

Pour info, dans le repository github, j'ai également ajouté un script bash pour récupérer des info APIs.
https://github.com/ldb2000/Viessman-API

Le script est disponible ici : https://github.com/ldb2000/Viessman-API ... essmann.sh

pilou_54170
Timide
Messages : 6
Inscription : 31 mai 2018, 22:14

Re: Script pour Gestion Chaudière Viessmann connecté

Message par pilou_54170 » 29 août 2018, 12:44

Bonjour Laurentdb,

Avant tout je souhaiterais te remercier pour ce partage qui est très intéressant pour tous ceux qui souhaitent interfacer leur chaudière avec Jeedom.
Je viens de remplacer mon script json qui ne fonctionne plus par celui que tu viens de partager et celui-ci me retourne bien la température Extérieure mais j'ai une erreur avant comme le montre cette image.
Capture.JPG
erreur à la ligne 94
Capture.JPG (225.92 Kio) Consulté 1552 fois
J'ai quelques notions en php mais là j'avoue ne pas comprendre cette erreur.

D'avance merci pour cette analyse.

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

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 29 août 2018, 18:36

J'ai la même erreur sur mon raspberry pi.
EDIT: remplace la ligne 94 par ceci:

Code : Tout sélectionner

    } elseif (!empty(json_decode($response)->error)) {
J'ai fait un pull request pour intégrer ce changement.

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

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