NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[Erfahrungsbericht] [V3.5.1]/[V4.0 IP3] Viessmann API - Erfahrungsbericht und Fragen

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Benutzeravatar

Ersteller
speckenbuettel
Reactions:
Beiträge: 212
Registriert: Mo Jun 27, 2022 9:30 am
Hat sich bedankt: 193 Mal
Danksagung erhalten: 121 Mal

#11

Beitrag von speckenbuettel »

Hallo Willy,

vielen Dank für den Hinweis auf die Postman-Templates von Viessmann. Ich habe nun weitere Erkenntnisse :D

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:
Bild

(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:
Bild

Und die Response ist ein JSON mit access_token und refresh_token:
Bild

Damit kann ich dann in Postman auch einfach das Token erneuern (drittes Template, Authorization code exchange - Refresh Token)
Bild


So, nun in den Timberwolf damit.

1. Einen neuen HTTP-API-Server anlegen:
Bild
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:
Bild

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
Zuletzt geändert von speckenbuettel am Do Mai 18, 2023 1:52 pm, insgesamt 1-mal geändert.
Vielen Dank und viele Grüße
Falk

TWS 3500M ID:810 - VPN aktiv - Reboot nach Absprache
1-Wire, KNX (MDT u. a.), EnOcean (Eltako u. a.), Gira TKS, ekey multi

MrWilson
Reactions:
Beiträge: 232
Registriert: Do Dez 27, 2018 2:19 pm
Wohnort: Borgsdorf
Hat sich bedankt: 44 Mal
Danksagung erhalten: 146 Mal

#12

Beitrag von MrWilson »

Ich komme an der Stelle momentan auch nicht weiter. Die Authorization Anfrage im Header benötigst du nicht und versuche mal die Daten nicht im Header, sondern in der URI mitzugebne. Wenn ich mehr Zeit habe probiere ich noch ein wenig.
TWS 2500 ID: 341 + PBM ID: 463, VPN offen, Reboot nur nach Absprache
Benutzeravatar

Ersteller
speckenbuettel
Reactions:
Beiträge: 212
Registriert: Mo Jun 27, 2022 9:30 am
Hat sich bedankt: 193 Mal
Danksagung erhalten: 121 Mal

#13

Beitrag von speckenbuettel »

HEUREKA!

Ich hab's gefunden :D

Das Problem war ein fehlender Parameter im Header: die Anfrage funktioniert - auch in Postman - nur dann, wenn im Header

Code: Alles auswählen

Content-Type:application/x-www-form-urlencoded
übergeben wird.

Zwar kann man beim Erstellen der Ressource im Feld Request Content Type den Wert application/x-www-form-urlencoded auswählen, aber dieser wird im Header nicht übergeben.

@StefanW Ist das vielleicht ein Minor Bug? Man kann in diesem Feld unter drei Werten auswählen, aber diese werden offensichtlich dem Header der Anfrage nicht hinzugefügt.

Nachdem ich den Parameter über eine zusätzliche Abfrage hinzugefügt habe, bekomme ich endlich mein JSON mit Access Token und Refresh Token.
Und daraus die beiden Werte mit jeweils einer HTTP-Antwort zu Objekten zu machen ist ja relativ einfach:
Bild

Schon lauert aber das nächste Problem: das String-Objekt mit dem Access Token habe ich nun, aber dass muss der nächsten Ressource (zum Abfragen von Heizungsparametern) im Header übergeben werden:
Bild

Der Feldname lautet "Authorization", der Wert muss dann lauten "Bearer xxxxx". Leider bekomme ich keinen String zusammengebastet, der dem eigentlichen Token die Zeichen "Bearer " (mit einem Leerzeichen nach Bearer) voranstellt.
Mit dem erweiterten Logikmanager aus V4 IP3 kann man zwar Strings verketten, aber das Leerzeichen geht immer verloren, der neue Parameter sieht dann so aus:
BearereyJraWQ anstatt Bearer eyJraWQ

Vermutlich muss ich in der String-Logikzelle ein anderes Zeichen für das Leerzeichen verwenden, aber welches? :confusion-scratchheadyellow:

Vielen Dank und viele Grüße
Falk
Vielen Dank und viele Grüße
Falk

TWS 3500M ID:810 - VPN aktiv - Reboot nach Absprache
1-Wire, KNX (MDT u. a.), EnOcean (Eltako u. a.), Gira TKS, ekey multi

StefanW
Elaborated Networks
Reactions:
Beiträge: 9775
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4879 Mal
Danksagung erhalten: 7820 Mal
Kontaktdaten:

#14

Beitrag von StefanW »

Hi Falk,

muss ich klären.

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Benutzeravatar

Ersteller
speckenbuettel
Reactions:
Beiträge: 212
Registriert: Mo Jun 27, 2022 9:30 am
Hat sich bedankt: 193 Mal
Danksagung erhalten: 121 Mal

#15

Beitrag von speckenbuettel »

Hallo Stefan,

ich habe inzwischen ein bisschen weiter mit den Stringmodulen experimentiert.

Egal was ich versuche, wenn ein String am Anfang oder am Ende ein Leerzeichen hat, dann wird dieses Leerzeichen beim Konkatenieren abgeschnitten.
Auch ein zusätzlicher String nur aus einem Leerzeichen hilft nicht. Und ein String aus drei Leerzeichen (in der Hoffnung, dass das zumindest das Leerzeichen in der Mitte übrig bleibt) wird zu einem leeren String.

Ich frage mich gerade ob dieser Teil des Threads noch hierher gehört oder eher ins Insider-Forum, weil es ja nun eher ein Problem mit den Stringmodulen von V4.0 IP3 ist.
Falls dem so ist, soll ich dort einen neuen Thread eröffnen?

Vielen Dank und viele Grüße
Falk
Vielen Dank und viele Grüße
Falk

TWS 3500M ID:810 - VPN aktiv - Reboot nach Absprache
1-Wire, KNX (MDT u. a.), EnOcean (Eltako u. a.), Gira TKS, ekey multi

StefanW
Elaborated Networks
Reactions:
Beiträge: 9775
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4879 Mal
Danksagung erhalten: 7820 Mal
Kontaktdaten:

#16

Beitrag von StefanW »

Hi Falk,

ist schon auf der Liste, wir sehen uns das an

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

StefanW
Elaborated Networks
Reactions:
Beiträge: 9775
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4879 Mal
Danksagung erhalten: 7820 Mal
Kontaktdaten:

#17

Beitrag von StefanW »

Ich habe mir das jetzt zweimal durchgelesen.

- Der Thread läuft unter "V 3.5.1"
- Falk hat aber installiert V4 IP3
- Mr. Wilson hat installiert V4 IP1

Für einen Softwarehersteller ist die Version wirklich entscheidend, wenn es darum geht, einen Fehler zu suchen.

Wir helfen gerne dabei, dass der Timberwolf Server mächtiger und kompatibler mit fremden Geräten wird und wir sind für jede Hilfe und Angabe sehr dankbar, weil wir nicht die Summe dessen im Labor haben, was sich bei unseren Kunden findet und es auch keinen internationalen Guide der implementierten Varianten gibt, insbesondere bei HTTP-API gibt es jede Mischung aus URL, Header, Body mit den diversen Requestvarianten die wohl denkbar ist.

Was uns wirklich hilft, sind GLASKLARE Angaben, die für uns auch nachvollziehbar sind. Und eine der wichtigsten Angaben ist die Versionsnummer. Also bitte den Thread mit der richtigen Version veröffentlichen und wenn sich weitere daran beteiligen, dann bitte ERKENNBAR AM ANFANG DES BEITRAGS auf eine ggfls. abweichende SW-Version hinweisen. Selbiges gilt auch, wenn z.b. inmitten eines Threads vom TE die SW-Version gewechselt werden sollte.

Weil wir uns jetzt gerade schwer mit der Identifizierung der betreffenden SW Version. Weil zur Threaderstellung hatte Falk wohl noch die V 3.5.1 und dann drei Tage später die V4 IP3. Hmm.

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Benutzeravatar

Ersteller
speckenbuettel
Reactions:
Beiträge: 212
Registriert: Mo Jun 27, 2022 9:30 am
Hat sich bedankt: 193 Mal
Danksagung erhalten: 121 Mal

#18

Beitrag von speckenbuettel »

Hallo Stefan,

vielen Dank und sorry für die Verwirrung :(

In der Tat, bei Erstellung des Threads hatte ich noch V3.5.1 und im Verlauf habe ich IP dazugebucht und dann auf V4 IP3 aktualisiert. Habe das leider nicht klar genug erwähnt und eine Änderung des Titels ist leider nicht mehr möglich.
Vielen Dank und viele Grüße
Falk

TWS 3500M ID:810 - VPN aktiv - Reboot nach Absprache
1-Wire, KNX (MDT u. a.), EnOcean (Eltako u. a.), Gira TKS, ekey multi
Benutzeravatar

jensgulow
Reactions:
Beiträge: 323
Registriert: Fr Apr 19, 2019 4:37 pm
Hat sich bedankt: 66 Mal
Danksagung erhalten: 136 Mal

#19

Beitrag von jensgulow »

Selbes Verhalten bei mir mit V4 IP4
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
Was wird genutzt? -> TWS, KNX, 1-wire, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“