Re: [V3.5.1] Viessmann API - Erfahrungsbericht und Fragen
Verfasst: Do Mai 18, 2023 9:57 am
Hallo Willy,
vielen Dank für den Hinweis auf die Postman-Templates von Viessmann. Ich habe nun weitere Erkenntnisse
Schritt 1, Authorization request, funktioniert bei mir nur im Browser, nicht in Postman. Im Browser bekommt man mit der GET-Abfrage ja zunächst einmal die Viessmann-Login-Seite, wo man sich mit BN und PW anmelden muss. Ich habe versucht, die Anmeldung über die Authorization von Postman zu machen (Basic Auth mit Username und Password), aber das führt nur zu zum Fehler Error: connect ECONNREFUSED 127.0.0.1:4200.
Aber egal, solange es im Browser funktioniert und ich damit den code für Schritt 2 bekomme.
So sieht die Antwort im Browser aus:
(Ich mache das jetzt absichtlich so ausführlich, damit alle etwas davon haben.)
Schritt 2, Authorization code exchange, in Postman funktioniert dann mit folgenden Parametern:
Und die Response ist ein JSON mit access_token und refresh_token:
Damit kann ich dann in Postman auch einfach das Token erneuern (drittes Template, Authorization code exchange - Refresh Token)
So, nun in den Timberwolf damit.
1. Einen neuen HTTP-API-Server anlegen:
Autorisierung bleibt auf KEINE, denn das Token soll später als Objekt übergeben werden.
2. Dann habe ich, analog zu deiner Anleitung in viewtopic.php?f=82&t=4240&start=20, drei Abfragen angelegt, jeweils mit Lokation = URI, Format = Text, und folgenden Selektoren:
- client_id
- grant_type
- refresh_token
Und eine Abfrage mit Lokation = Header und dem Feldnamen "Authorization".
Die vier Abfragen werden von Objekten aus dem Logikeditor gefüttert, und war von String-Modulen, die alle 10 Sekunden die Parameter aus der Postman-Abfrage bzw. -Antwort senden.
Leider ist das Ergebnis ernüchternd: die Abfrage, die der TWS daraus zusammenbastelt, sie genauso aus wie die Postman-Abfrage:
Die Antwort sieht man hier auch, und die ist leider kein JSON mit einem neuen Token, sondern die Fehlermeldung "invalid_request".
Das Statusobjekt request status code gibt ebenfalls 400 zurück.
Hat jemand eine Idee, wo hier der Fehler liegen könnte? Scheinbar ist ja schon die Anfrage falsch zusammengestellt, obwohl sie genau so aussieht wie die in Postman.
Vielen Dank und viele Grüße
Falk
vielen Dank für den Hinweis auf die Postman-Templates von Viessmann. Ich habe nun weitere Erkenntnisse
Schritt 1, Authorization request, funktioniert bei mir nur im Browser, nicht in Postman. Im Browser bekommt man mit der GET-Abfrage ja zunächst einmal die Viessmann-Login-Seite, wo man sich mit BN und PW anmelden muss. Ich habe versucht, die Anmeldung über die Authorization von Postman zu machen (Basic Auth mit Username und Password), aber das führt nur zu zum Fehler Error: connect ECONNREFUSED 127.0.0.1:4200.
Aber egal, solange es im Browser funktioniert und ich damit den code für Schritt 2 bekomme.
So sieht die Antwort im Browser aus:
(Ich mache das jetzt absichtlich so ausführlich, damit alle etwas davon haben.)
Schritt 2, Authorization code exchange, in Postman funktioniert dann mit folgenden Parametern:
Und die Response ist ein JSON mit access_token und refresh_token:
Damit kann ich dann in Postman auch einfach das Token erneuern (drittes Template, Authorization code exchange - Refresh Token)
So, nun in den Timberwolf damit.
1. Einen neuen HTTP-API-Server anlegen:
Autorisierung bleibt auf KEINE, denn das Token soll später als Objekt übergeben werden.
2. Dann habe ich, analog zu deiner Anleitung in viewtopic.php?f=82&t=4240&start=20, drei Abfragen angelegt, jeweils mit Lokation = URI, Format = Text, und folgenden Selektoren:
- client_id
- grant_type
- refresh_token
Und eine Abfrage mit Lokation = Header und dem Feldnamen "Authorization".
Die vier Abfragen werden von Objekten aus dem Logikeditor gefüttert, und war von String-Modulen, die alle 10 Sekunden die Parameter aus der Postman-Abfrage bzw. -Antwort senden.
Leider ist das Ergebnis ernüchternd: die Abfrage, die der TWS daraus zusammenbastelt, sie genauso aus wie die Postman-Abfrage:
Die Antwort sieht man hier auch, und die ist leider kein JSON mit einem neuen Token, sondern die Fehlermeldung "invalid_request".
Das Statusobjekt request status code gibt ebenfalls 400 zurück.
Hat jemand eine Idee, wo hier der Fehler liegen könnte? Scheinbar ist ja schon die Anfrage falsch zusammengestellt, obwohl sie genau so aussieht wie die in Postman.
Vielen Dank und viele Grüße
Falk