[Tuto] Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
-
BornToKill
- Messages : 2
- Inscription : 08 nov. 2016, 18:07
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Pour tester l’optolink :
Mettre l’emetteur et le récepteur face à face puis :
screen /dev/ttyUSB0
Ensuite les commande/ taper au clavier devraient apparaître à l’ecran.
Mettre l’emetteur et le récepteur face à face puis :
screen /dev/ttyUSB0
Ensuite les commande/ taper au clavier devraient apparaître à l’ecran.
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Apparemment le service vitalk s'arrête tout seul (enfin je crois, mes connaissances sont un peu limitées dans ce domaine)
Donne
Je fais un
Suivi de
Donne
Code : Tout sélectionner
sudo service --status-allCode : Tout sélectionner
[+] vitalkCode : Tout sélectionner
sudo vitalk -t /dev/ttyUSB0
Reset Communication to KW Proto......failedCode : Tout sélectionner
sudo service --status-allCode : Tout sélectionner
[-] vitalkRe: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Bonjour,thetrueavatar a écrit :Après quelques test d'api j'arrive à récupérer mes infos de chaudière en json avec l'appel REST suivant:Faut bien sûr passer les credentials sous le format user:password encodé en base64 dans le header "Authorization" ce qui donnerait avec mon exemple "Basic dXNlcjpwYXNzd29yZA=="Code : Tout sélectionner
https://api.viessmann.io/estrella/rest/v2.0/gateways/{gateway_id}/controllers/{controller_id}/datapoints
On a tout pour coder en domoticz ou une app android. Ma femme accouchant bientôt je risque d'avoir du temps à tuer entre 2 bibi :p.
Je suis curieux aussi de savoir ce que /estrella/rest/v2.0/gateways/analytics/{id}/{*path} retourne... J'imagine que c'est les stats mais faut trouver les valeurs de path
Grâce à ta contribution je réussi enfin à accéder aux informations de ma chaudière via le vitoconnect. Merci beaucoup.
Je n’y connais pas grand chose en API et requetes http et je voudrais aussi pouvoir piloter des infos en plus de les lire. Est-ce que tu as réussi à faife une modification de la consigne de température par exemple ? Si oui, peux tu me dire comment faire stp ?
Fred
-
thetrueavatar
- Messages : 71
- Inscription : 04 nov. 2017, 23:41
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Je n'ai pas encore fait quoique ce soit mais l'approche REST se base sur les méthodes HTTP suivantes:
- GET -> récupère les données. En général, on fait https://api.viessmann.io/estrella/rest/v2.0/gateways pour récupérer une liste d'objets(ici gateway). Si on veut récupérer les détails d'un gateway en particulier on passe l'id. Exemple https://api.viessmann.io/estrella/rest/ ... gateway_id}
- POST-> En gros, c'est l'équivalent d'une création de nouvelle donnée qu'on passe dans le body ici sous format json. Par exemple, la création d'un utilisateur. Néanmoins, il est probable que tu n'en n'ai pas besoin.
- PUT-> Comme le POST on passe les données au format json mais là c'est pour les mises à jours de données. C'est selon moi ce que tu vas devoir faire pour changer la température. Maintenant, il faut savoir quelles données envoyer. Je pourrai le découvrir facilement en regardant ce que l'application ViCare /Vitotrol plus envoye comme requête pour mettre à jour les données. Je te tiens au courant quand j'en sais plus
-DELETE-> en gros c'est pour supprimer une donnée. On fait ça en passant l'id dans l'uri genre https://api.viessmann.io/estrella/rest/ ... gateway_id}
EDIT: de ce que je vois, les appels ViCare/Vitotrol plus font une soupe d'appels REST, d'appels SOAP pas très clair.
J'ai néanmoins vu que pour diminuer la température de chaudière il y avait un requête SOAP(donc en POST) sur
https://api.viessmann.io/vitotrol/soap/ ... rvice.asmx
J'ai passé l'eau sanitaire de 60 à 59.
J'ai vu ça après:
J'espère juste qu'il faut pas fournir une sorte de token uniquement dispo par viessman pour demander un changement...
Bref, étonnamment, les application Viessmann semblent utiliser encore une "vieille" api en webservice SOAP/Xml alors qu'il y en a une toute belle en REST/Json.....
EDIT2: Mes craintes étaient confirmée:
Bref, du chipotage qui n'a que peu de sens selon moi. Je vais mettre plutôt mon focus sur l'api REST même si elle n'est pas utilisée par les applicaitons ViCare/Vitotrol Plus
- GET -> récupère les données. En général, on fait https://api.viessmann.io/estrella/rest/v2.0/gateways pour récupérer une liste d'objets(ici gateway). Si on veut récupérer les détails d'un gateway en particulier on passe l'id. Exemple https://api.viessmann.io/estrella/rest/ ... gateway_id}
- POST-> En gros, c'est l'équivalent d'une création de nouvelle donnée qu'on passe dans le body ici sous format json. Par exemple, la création d'un utilisateur. Néanmoins, il est probable que tu n'en n'ai pas besoin.
- PUT-> Comme le POST on passe les données au format json mais là c'est pour les mises à jours de données. C'est selon moi ce que tu vas devoir faire pour changer la température. Maintenant, il faut savoir quelles données envoyer. Je pourrai le découvrir facilement en regardant ce que l'application ViCare /Vitotrol plus envoye comme requête pour mettre à jour les données. Je te tiens au courant quand j'en sais plus
-DELETE-> en gros c'est pour supprimer une donnée. On fait ça en passant l'id dans l'uri genre https://api.viessmann.io/estrella/rest/ ... gateway_id}
EDIT: de ce que je vois, les appels ViCare/Vitotrol plus font une soupe d'appels REST, d'appels SOAP pas très clair.
J'ai néanmoins vu que pour diminuer la température de chaudière il y avait un requête SOAP(donc en POST) sur
https://api.viessmann.io/vitotrol/soap/ ... rvice.asmx
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.e-controlnet.de/services/vii/">
<soap:Body>
<WriteData>
<DatapointId>51</DatapointId>
<GeraetId>576552</GeraetId>
<AnlageId>263664</AnlageId>
<Wert>59</Wert>
</WriteData>
</soap:Body>
</soap:Envelope>J'ai vu ça après:
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.e-controlnet.de/services/vii/">
<soap:Body>
<RequestWriteStatus>
<AktualisierungsId>8873b149-bde6-48c3-ab47-f086476fe001</AktualisierungsId>
</RequestWriteStatus>
</soap:Body>
</soap:Envelope>Bref, étonnamment, les application Viessmann semblent utiliser encore une "vieille" api en webservice SOAP/Xml alors qu'il y en a une toute belle en REST/Json.....
EDIT2: Mes craintes étaient confirmée:
Code : Tout sélectionner
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WriteDataResponse xmlns="http://www.e-controlnet.de/services/vii/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<WriteDataResult>
<Ergebnis>6</Ergebnis>
<ErgebnisText>Keine aktive/gültige Session</ErgebnisText>
</WriteDataResult>
</WriteDataResponse>
</soap:Body>
</soap:Envelope>-
thetrueavatar
- Messages : 71
- Inscription : 04 nov. 2017, 23:41
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Je m'auto répond pour te donner une très bonne nouvelle Fred. L'interface REST fonctionne très bien et est très simple. En gros voici la façon de procéder:
Il faut faire un PUT sur
https://api.viessmann.io/estrella/rest/ ... apoints_id}
Le datapoints_id se trouve dans la liste que tu as déjà réussi à obtenir et représente un élément de configuration de ta chaudière(t° eau chaude,...)
Donc j'ai fait la requête suivante:
PUT sur https://api.viessmann.io/estrella/rest/ ... apoints/51 avec le body:
Et mon eau chaude sanitaire est passée de 60 à 58(champ value). Le datapointId dans metadata est ce qu'il faut passer dans ton uri.
Avec ça tu pourras changer n'importe quel paramètre à priori. Me reste plus qu'à voir comment gérer ça avec domoticz :p.
C'est tellement simple que je ne comprend pas pourquoi leur applications mobile n'utilisent pas cet api...
Il faut faire un PUT sur
https://api.viessmann.io/estrella/rest/ ... apoints_id}
Le datapoints_id se trouve dans la liste que tu as déjà réussi à obtenir et représente un élément de configuration de ta chaudière(t° eau chaude,...)
Donc j'ai fait la requête suivante:
PUT sur https://api.viessmann.io/estrella/rest/ ... apoints/51 avec le body:
Code : Tout sélectionner
{
"metadata": {
"minimalValue": "10.00",
"maximalValue": "95.00",
"defaultValue": "50",
"unitDesignation": "ecnUnit.Grad C",
"datapointGroup": "HC1",
"heatingCircuitId": "18949",
"datapointId": "51",
"datapointType": "Integer",
"datapointName": "konf_ww_solltemp_rw",
"isWritable": true,
"isReadable": true,
"datapointTypeValue": 0
},
"value": "58",
"dataType": 2,
"datapointType": 0,
"datapointStatus": 0
}Avec ça tu pourras changer n'importe quel paramètre à priori. Me reste plus qu'à voir comment gérer ça avec domoticz :p.
C'est tellement simple que je ne comprend pas pourquoi leur applications mobile n'utilisent pas cet api...
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Merci, je vais regarder tout ça de près donc.thetrueavatar a écrit :Je m'auto répond pour te donner une très bonne nouvelle Fred. L'interface REST fonctionne très bien et est très simple. En gros voici la façon de procéder:
Il faut faire un PUT sur
https://api.viessmann.io/estrella/rest/ ... apoints_id}
Le datapoints_id se trouve dans la liste que tu as déjà réussi à obtenir et représente un élément de configuration de ta chaudière(t° eau chaude,...)
Donc j'ai fait la requête suivante:
PUT sur https://api.viessmann.io/estrella/rest/ ... apoints/51 avec le body:
Et mon eau chaude sanitaire est passée de 60 à 58(champ value). Le datapointId dans metadata est ce qu'il faut passer dans ton uri.
Avec ça tu pourras changer n'importe quel paramètre à priori. Me reste plus qu'à voir comment gérer ça avec domoticz :p.
C'est tellement simple que je ne comprend pas pourquoi leur applications mobile n'utilisent pas cet api...
Et surtout, il faut que j’apprenne à faire des requêtes car je ne sais pas faire de PUT, pour l’instant j’ai fait les requêtes directement en tapant : https://api.viessmann.io/estrella/rest/ ... datapoints dans mon navigateur !
D'ailleurs, j’ai essayé d’avoir une seule data de datapoints en tapant ça : https://api.viessmann.io/estrella/rest/ ... apoints_id} et cela ne marche pas, j’ai ça en retour : {"error":"UNSUPPORTED_METHOD","errorData":{}}
-
thetrueavatar
- Messages : 71
- Inscription : 04 nov. 2017, 23:41
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Install l'extension POSTMAN pour chrome ça te permettra de faire ça facilement.
Ton erreur signifie juste qu'il s'attend à une requête PUT et non GET(d'où le UNSUPPORTED METHOD).
Ca veut dire qu'il n'y a pas de requête disponible pour récupérer les données d'un datapoint en particulier. Néanmoins, no stress car en attaquants l'uri datapoints sans spécifier l'id tu récupères la liste des des datapoints complet.
Donc attaque https://api.viessmann.io/estrella/rest/ ... atapoints/ en GET et tu aurais une liste de datapoint au format json
En gros le json dit, voici les data, le [ ] représente une liste de données. Ici dans data c'est une liste de datapoints qui sont séparés par une virgule.
Chaque datapoint contient un objet metadata qui fournis divers informations dont le datapointId qui nous intéresse pour le PUT.
La suite ce sont les valeurs. Dans mon exemple ci-dessous ce sont les plages horaires.
En gros, il te suffit de rejouer un datapoint dans cette liste via une commande put en ayant adapté les valeurs qu'ils te faut.
Ton erreur signifie juste qu'il s'attend à une requête PUT et non GET(d'où le UNSUPPORTED METHOD).
Ca veut dire qu'il n'y a pas de requête disponible pour récupérer les données d'un datapoint en particulier. Néanmoins, no stress car en attaquants l'uri datapoints sans spécifier l'id tu récupères la liste des des datapoints complet.
Donc attaque https://api.viessmann.io/estrella/rest/ ... atapoints/ en GET et tu aurais une liste de datapoint au format json
En gros le json dit, voici les data, le [ ] représente une liste de données. Ici dans data c'est une liste de datapoints qui sont séparés par une virgule.
Chaque datapoint contient un objet metadata qui fournis divers informations dont le datapointId qui nous intéresse pour le PUT.
La suite ce sont les valeurs. Dans mon exemple ci-dessous ce sont les plages horaires.
En gros, il te suffit de rejouer un datapoint dans cette liste via une commande put en ayant adapté les valeurs qu'ils te faut.
Code : Tout sélectionner
{
"data": [
{
"metadata": {
"datapointGroup": "HC1",
"heatingCircuitId": "18949",
"datapointId": "7191",
"datapointType": "CircuitTime",
"datapointName": "konf_schaltzeiten_hk_rw",
"isWritable": true,
"isReadable": true,
"datapointTypeValue": 1
},
"switchingTimeType": 1,
"switchingTimes": [
{
"weekday": "SUN",
"timeFrom": "0600",
"timeTo": "0830",
"value": 1,
"position": 0
}, .....]
]
}Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Merci pour ton aide thetrueavatar, je vais travailler tout ça dès que possible.
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
thetrueavatar, ton travail est génial !
Des semaines que je cherche comment faire.
il faut peut-être ouvrir un autre sujet pour séparer optolink (infrarouge) et vitoconnect (wifi/web)
Des semaines que je cherche comment faire.
il faut peut-être ouvrir un autre sujet pour séparer optolink (infrarouge) et vitoconnect (wifi/web)
-
thetrueavatar
- Messages : 71
- Inscription : 04 nov. 2017, 23:41
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Ca serait sans doute une bonne idée d'expliciter cette partie dans une partie vitoconnect.
Par contre, de mon côté je suis en train de regarder dans quelle solution domotique intégrer ces appels. J'ai bien entendu regarder domoticz mais j'avoue avoir été un peu rebuté par l'aspet un peu veillot. Je me suis tourné vers jeedom dont j'avais déjà entendu parlé. Là c'est "joli"(du moins si on aime ce qui est sobre) mais pas du tout ergonomique pour moi alors que je suis consultant en informatique. J'essaye juste de trouver une solution qui me permettrait facilement de faire ces query reste et de l'intégrer avec une logique intelligent de gestion de chauffage.
Par contre, de mon côté je suis en train de regarder dans quelle solution domotique intégrer ces appels. J'ai bien entendu regarder domoticz mais j'avoue avoir été un peu rebuté par l'aspet un peu veillot. Je me suis tourné vers jeedom dont j'avais déjà entendu parlé. Là c'est "joli"(du moins si on aime ce qui est sobre) mais pas du tout ergonomique pour moi alors que je suis consultant en informatique. J'essaye juste de trouver une solution qui me permettrait facilement de faire ces query reste et de l'intégrer avec une logique intelligent de gestion de chauffage.