abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 
Beantwortet! Gehe zur Lösung.

Java Client zum Auslesen von Anlagendaten aus VitoConnect

Hallo Community, 

 

ich möchte gerne eine dauerhaftes Monitoring und eine Visualisierung der Anlagendaten programmieren. 

Dazu sollen Java / Spring für backend und React / Angular für das frontend eingesetzt werden. 

 

Ich habe eine API Client ID angelegt. 

 

Nachdem es mit Spring OAuth2 nicht ohne weiteres möglich war ein Login nachzubauen bin ich eine Ebene 'runter'

 

Vielleicht für andere Interessant: Java bekommt mit den von api.viessmann.com derzeit angebotenen Ciphern ohne Weiteres keinen Handshake hin. Es funktioniert, wenn man das sslProtocoll auf TLSv1.2 festlegt. 

 

Ich stelle mir den Ablauf grob so vor

 

  • Jede Stunde
    • Authorisiere
    • Hole Token
    • Lese Datenpunkte aus
    • Speichere Datenpunkte in lokaler DB /

 

Die Dokumentation https://developer.viessmann.com/de/doc/authentication gibt erste Hinweise. 

 

'Schritt 1' besteht aus 2 Teilschritten:

1a) dem eigentlichen Authorisation Request und

1b) der formbasierten Login

Ich führe  -programmatisch- per HttpRequest Schritt 1 / 1a Authorisation Request aus , HTTP Status 200.

Bei Schritt 1b erhalte ich ebenfalls einen HTTP Status 200, aber in der Antwort ist stets nur das Formular enthalten. 

In den Headern kann ich keinen Code bzw. einen Rediret mit ?code=123 entdecken, den ich für Schritt 2 Authorization Code exchange benötigen würde. 

 

Meine Frage lautet

 

Gibt es ein OAuth2 basiertes, automatisches Login, entweder unter Verwendung der Spring Standard-Mechnismen, oder auch als Eigenentwicklung? 

 

Best, 

tkh

 

1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen

HI @tkh,

wie ich sehe hast du den anderen Beitrag schon gefunden 🙂

 

In InfluxDB werden die Daten dauerhaft gespeichert und ist dafür recht gut geeignet.

Aber das Script kann natürlich nach belieben angepasst werden und eine MariaDB oder MySQL DB füllen 🙂

Da würde ich dann aber vllt eine Umwandlung in eine CSV Datei einbauen und diese dann hochladen anstelle von hunderten SQLs pro API-Call.

Sowas muss ich noch schauen ob es für das Publizieren zu MQTT nicht auch geht..

 

Grüsse

Andreas

Lösung in ursprünglichem Beitrag anzeigen

5 ANTWORTEN 5

Hi @tkh ,

 

hmm, ich habe ja was ähnliches beabsichtigt und wie folgt umgesetzt:

 

Auf einem RaspberryPi läuft ein Shell Script welches alle 5 Minuten alle Endpoints abfragt und an MosQuiTTo verteilt. Von dort werden per Telefgraf bestimmte Topics an eine InfluxDB weitergeleitet welche dann per Grafana visualisiert werden. Monitoring könnte man entsprechend umsetzen.
Dieses Script läuft seit ca. 36h ohne Probleme, alle 59 Minuten wird der Schlüssel erneuert. 

Das wollte ich demnächst veröffentlichen zumal es kaum zusätzliche Tools braucht, den Umweg per MQTT/Telegraf.. kann man sicherlich leicht anpassen.

 

Grüsse

Andreas

Hallo Andreas, 

ok, dann bist du offenbar schon einige Schritte weiter. Schlanker als ein Skript wird es kaum gehen. Wenn du das Skript irgendwo veröffentlichst würden mich dabei die ersten Schritte interessieren. Für das Eigentliche, Speichern und Visualisieren, der Daten dachte ich an etwas für die Persistenz (lange Reihen, im einfachsten Fall MariaDB), was für den schnellen Zugriff (elasticsearch) und etwas für die komfortable Auswertung (kibana). Steuerung ist für mich nicht vorrangig, da finde ich die ViCare App OK. 

 

Wenn du Snippets der initialen Sequenz bis zur ersten Datenabfrage teilen kannst, schaue ich das gern an. 

 

HI @tkh,

wie ich sehe hast du den anderen Beitrag schon gefunden 🙂

 

In InfluxDB werden die Daten dauerhaft gespeichert und ist dafür recht gut geeignet.

Aber das Script kann natürlich nach belieben angepasst werden und eine MariaDB oder MySQL DB füllen 🙂

Da würde ich dann aber vllt eine Umwandlung in eine CSV Datei einbauen und diese dann hochladen anstelle von hunderten SQLs pro API-Call.

Sowas muss ich noch schauen ob es für das Publizieren zu MQTT nicht auch geht..

 

Grüsse

Andreas

Ja, gleich nach dem Absenden. Mittlerweile funktioniert die Authorisierung, Token holen und Erneuern bei Bedarf. Der Blick auf Dein Skript hat geholfen  (AuthBasic). 

Die Abfrage der Anlagendaten installations, gateways und devices ist auch soweit, allerdings scheint die API instabil zu sein. Ich erhalte bei geschätzt jedem 5 request HTTP 500. Ist das üblich?

Gibt es auch die Möglichkeit, ohne Internetverbindung an die Vitoconnect und die Daten zu kommen? 

Best,

Tkh

 

Offline geht das leider nicht. Keine Ports sind erreichbar (zumindest sichtbar).

 

Ungefähr einmal am Tag hab ich ein "504 Bad Gateway" Fehler, ansonsten läuft das Script bisher sehr zu meiner Zufriedenheit.

 

Da du ja an eine App auf React/Angular Basis gedacht hast, bei Angular könnte ich unterstützen 🙂 

Ich benutze bei meinen Angular Apps immer AdminLTE als Layout. 

Das ganze dann als PWA (progressive web app) und eine Installation auf dem Handy ist dann auch kein Problem.

 

// Andreas

Top-Lösungsautoren