Ankündigung

Einklappen
Keine Ankündigung bisher.

Viessmann API - HowTo Token

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Viessmann API - HowTo Token

    Hallo,

    irgenwie stehe ich wie der Ochs vor'm Berg vor der Schwierigkeit, die Viessmann API zu verwenden. Wahrscheinlich isses recht einfach und ich müsste nur mal die Füsse von der sprichwörtlichen Leitung nehmen, aber ich weiß aktuell noch so gar nicht, was die Dokumentation (https://documentation.viessmann.com/...etting-started) von mir will ...

    Eigentlich ist mein größtes Problem diese URI. Könnte mich da bitte mal jemand mal aufs richtige Pferd setzen? Mit was genau kommuniziert denn die API nun - mit dem Viessmann-Server, wie ich vermute ... aber was trage ich bei der URI ein - und wie geht es dann weiter? Mit cURL?

    Danke schon 'mal für Eure Tipps und bitte nicht prügeln - bin da echt Anfänger, was das angeht.

    Viele Grüße,

    Stefan
    Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

    #2
    Wie willst du die API denn verwenden? Also mit welcher Programmiersprache oder nur händisch die Abfragen absetzen?

    Wenn du zB zum Test mit Postman abfragen willst, gibt es hier eine Anleitung:
    Zuerst den API Client erstellen:
    https://github.com/somm15/PyViCare/#prerequisites

    Dann mit Postman abfragen:
    https://github.com/somm15/PyViCare/#...age-in-postman

    Kommentar


      #3
      Entschuldigung - das hatte ich vergessen, zu erwähnen:

      Am Ende will ich zumindest mal lesend zugreifen - über Node-red (https://flows.nodered.org/flow/21ae7...c8430eeae3a29c) - dazu benötige ich eine ClientID und einen RefreshToken.

      Die ClientID ist (so ich das korrekt verstanden habe) allerdings gebunden an diese komische URI. Da weiß ich nicht, was ich eintragen soll. Bei dem von Dir verlinkten API Client soll man z.B. "vicare://oauth-callback/everest​" eintragen. Dann bekomme ich eine Client ID ... das bekomme ich noch hin. Wobei sich hieraus meine Frage aus dem OP ergab: was muss ich denn da wirklich eintragen, damit es mit _meiner_ Anlage funktionieren kann - bzw. wovon ist das abhängig?

      Wo bzw. wie ich den RefreshToken her bekomme (wird wohl in der Viessmann Doku als "access token" bezeichnet), ist mir allerdings auch noch nicht klar, was auch daran liegt, dass ich noch nie eine curl-Abfrage gemacht habe, aber das bekomme ich hin, wenn ich denn wüsste, was ich als "&redirect_uri=http://my-website.com/oauth-callback​" eintragen muss.

      Viele Grüße,

      Stefan
      Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

      Kommentar


        #4
        Die URL sollte eigentlich egal sein, weil du ja keine Webseite entwickelst.
        Wichtig ist nur, dass die übergebene Redirect_Uri und die konfigurierte Url zusammenpassen.

        Refresh Token und Access Token sind zwei verschiedene Dinge und in der Dokumentation entsprechend korrekt beschrieben.

        Kommentar


          #5
          OK - zum Refresh Token habe ich nix in der Dokumentation gefunden. Aber ich sehe jetzt, dass das auch "nur" eine Funktion in der Umsetzung für Node-Red ist, dass man vor Ablauf des Timeouts den Token erneuert.

          Ich bin aber noch nicht ganz da ... ich habe mir auf der Viessmann-Seite eine Client-ID geholt über Angabe eines beliebigen Namens und einer Adresse als: http://localhost:4200/ . Dann im Browser den Request entsprechend geändert und es kommt auch die Passwort-Abfrage und das ReCaptcha. Danach werde ich zu einer Seite umgeleitet, die so etwas ist wie "http://localhost:4200/?code=ca.40-stelligerCode".

          Also ... schon 'mal die halbe Miete

          Diesen "ca.40-stelligerCode" habe ich dann in die CURL-Abfrage gepostet:

          curl -X POST "https://iam.viessmann.com/idp/v2/token" --header "Content-Type: application/x-www-form-urlencoded" --data-urlencode "grant_type=authorization_code" --data-urlencode "code_verifier=2e21faa1-db2c-4d0b-a10f-575fd372bc8c-575fd372bc8c" --data-urlencode "client_id=hierClient-IdEingetragen" --data-urlencode "redirect_uri=http://localhost:4200/" --data-urlencode "code=ca.40-stelligerCode"

          Aber leider bekomme ich immer den Fehler: {"error":"invalid-token-request"} .

          Hast Du da eine Idee? Der Code_verifier ist derselbe wie aus dem Beispiel von Viessmann.

          Viele Grüße,

          Stefan
          Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

          Kommentar


            #6
            Der Refresh Token ist hier beschrieben:
            https://documentation.viessmann.com/...authentication unter "Refreshing the access token"
            Sieht so aus als würde dein verlinkter NodeRed Flow einen Refresh Token wollen um sich damit dann selbst den Access Token zu holen.

            Möglicherweise ist das dein Problem: "Important: Due to security reasons, the authorization code lifetime (TTL) is only 20 seconds. This means that after 20 seconds, the obtained code cannot be used anymore.​"

            Weiters steht auf der Seite oben auch noch "The code verifier is a random code which meets a certain requirement and must be hashed with SHA256 and encoded as base64." Deshalb wundert es mich, dass das erste Sample eine einfache Guid als Code verifier verwendet.

            Kommentar


              #7
              Oh Ha! Tatsächlich habe ich nur das Tutorial auf der Startseite gelesen - ich dachte, damit müsste es gehen. Aber tatsächlich ist auf der Unterseite zum Access token der wichtige Hinweis mit den 20 Sekunden versteckt. Das war nicht so einfach, den CURL Request innerhalb von 20 s abzuschicken, aber ich hab's hinbekommen.
              Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

              Kommentar


                #8
                Für "Mitleser":

                Wer (so wie ich) Node-red im Einsatz hat, kann sich die Tokens automatisch generieren lassen, so wie hier:

                https://www.viessmann-community.com/...ic/td-p/261034

                Im Prinzip kann man die Tokens dann auch über Variablen teilen.

                Viele Grüße,

                Stefan
                Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                Kommentar


                  #9
                  Hallo zusammen,
                  Hier ist eine schöne Anleitung für Node Red, funktioniert bei mir perfekt.
                  https://www.rustimation.eu/index.php...-und-node-red/

                  Im Anschluss sende ich mir die Werte mittels Gira Endpoint Node in den HS, was inzwischen auch einwandfrei läuft.

                  Kommentar

                  Lädt...
                  X