JSON-APIs auswerten

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: JSON-APIs auswerten

Beitrag von Baxxy » 19.01.2023, 22:32

tk1809 hat geschrieben:
19.01.2023, 22:27
Token ist der richtige,
Schon wieder abgelaufen?

Code: Alles auswählen

{"error":"invalid_token","error_description":"The access token provided has expired"}
Du brauchst ja bloß mal das Script von @Henke oder meins mit deinen Daten füttern und dann gucken ob was sinniges rauskommt.
(Also erstmal ohne das JSON Parsing)

tk1809
Beiträge: 15
Registriert: 18.01.2023, 21:38
System: CCU

Re: JSON-APIs auswerten

Beitrag von tk1809 » 19.01.2023, 22:39

Danke, das werde ich morgen machen, ggf. nochmal die Auth. durchlaufen.

tk1809
Beiträge: 15
Registriert: 18.01.2023, 21:38
System: CCU

Re: JSON-APIs auswerten

Beitrag von tk1809 » 20.01.2023, 10:41

Hallo,
neue Auth. durchgeführt, Temperatur konnte jetzt ausgelesen werden. "HTTP/1.1" musste doch raus.
Ich versuche es in einer Stunde nochmal, ob der Token noch live ist.
Gruss
Torsten

Code: Alles auswählen

string token = "bd537133e084112f82772c327211d357b5ce21c0";
string url = "https://interop.ondilo.com/api/customer/v1/pools/48640/lastmeasures?types[]=temperature";
string curlcmd = 'curl -v '
               + url
               + ' -H "Authorization: Bearer ' + token + '"'
               + ' -H "Accept: application/json"'
               + ' -H "Accept-Charset: utf-8"'
               + ' -H "Accept-Encoding: gzip, deflate"'
               + ' -H "Content-Type: application/x-www-form-urlencoded"';

string stdout; string stderr;

system.Exec(curlcmd, &stdout, &stderr);
WriteLine("stdout:\n"#stdout); WriteLine("\nstderr:\n"#stderr);

tk1809
Beiträge: 15
Registriert: 18.01.2023, 21:38
System: CCU

Re: JSON-APIs auswerten

Beitrag von tk1809 » 20.01.2023, 10:47

Ausgabe:

Code: Alles auswählen

stdout:
[{"data_type":"temperature","value":16.4,"value_time":"2023-01-20T09:15:11+0000","is_valid":true,"exclusion_reason":null}]

stderr:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [108 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [4285 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [589 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
> GET /api/customer/v1/pools/48640/lastmeasures?types[]=temperature HTTP/1.1
> Host: interop.ondilo.com
> User-Agent: curl/7.61.1
> Authorization: Bearer bd537133e084112f82772c327211d357b5ce21c0
> Accept: application/json
> Accept-Charset: utf-8
> Accept-Encoding: gzip, deflate
> Content-Type: application/x-www-form-urlencoded
> 
{ [5 bytes data]
< HTTP/1.1 200 OK
< Date: Fri, 20 Jan 2023 09:34:42 GMT
< Server: Apache/2.4.41 (Ubuntu)
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Origin, Authorization
< Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
< Cache-Control: no-store, no-cache, must-revalidate, max-age=0
< Cache-Control: post-check=0, pre-check=0
< Pragma: no-cache
< Content-Length: 122
< Content-Type: application/json
< 
{ [122 bytes data]

100   122  100   122    0     0    428      0 --:--:-- --:--:-- --:--:--   426
100   122  100   122    0     0    426      0 --:--:-- --:--:-- --:--:--   426

tk1809
Beiträge: 15
Registriert: 18.01.2023, 21:38
System: CCU

Re: JSON-APIs auswerten

Beitrag von tk1809 » 20.01.2023, 13:40

Der Access Token muss stündlich mit den Refresh Token erneuert werden...
An dieser Baustelle muss ich erstmal arbeiten.
Vielen Dank für die Hilfe!

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: JSON-APIs auswerten

Beitrag von Baxxy » 20.01.2023, 15:17

Na das sieht ja schon mal ganz gut aus. :)
Brauchst dann aber noch ein (idealerweise separates) Programm/Script was dir den Access Token stündlich aktualisiert und z.B. in eine SysVar ablegt.
(das passt aber dann definitiv nicht mehr in den Thread hier)

Sind die Hürden genommen und die Heirat mit Micha's Script vollzogen sähe das dann anhand der Beispielausgabe beispielhaft so aus:

Code: Alles auswählen

=== Output V1.11 ===
Ondilo | data-type = 'temperature'
Ondilo | value = '16.4'
Ondilo | value-time = '2023-01-20T09 15 11+0000'
Ondilo | is-valid = 'true'
Ondilo | exclusion-reason = 'null'

tk1809
Beiträge: 15
Registriert: 18.01.2023, 21:38
System: CCU

Re: JSON-APIs auswerten

Beitrag von tk1809 » 20.01.2023, 17:11

Und genau das ist die Hürde, da Ondilo auf eine feste URL referenziert.
Die hat die CCU bekanntlich nicht.
Die Erstanmeldung konnte ich mit einem Python script austricksen.
Hier muss ich einen Umweg finden mit einer URL und dann Übergabe/Abfrage mit Homematic.
Vielleicht geht es mit NodeRed, da gibt es eine Anleitung für Ondilo Token Refresh.
Schönes WE!

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 20.01.2023, 19:13

Dafür dann bitte einen extra Thread.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: JSON-APIs auswerten

Beitrag von Fonzo » 20.01.2023, 19:45

tk1809 hat geschrieben:
18.01.2023, 22:55
Leider findet man nicht viel über Ondilo mit Homematic, deshalb die Bitte an die Experten.
Hier das Ondilo Modul habe ich geschrieben für einen anderen User, kannst Du gerne als Vorlage verwenden bzw. für die CCU adaptieren und umschreiben. Wie Du das mit OAuth2 geregelt bekommst, weis ich aber nicht, da ich nicht die CCU für solche Dinge zur Authentifizierung nutzte, man braucht ja eine feste Redirect URL. Wie man das mit einer CCU alleine lösen soll, weis ich beim besten Willen auch nicht.
MichaelN hatte in einem anderen Thread mal erwähnt das er seine persönliche Domain zur Verfügung stellen würde um einen OAuth Dienst für die CCU zu schreiben und kostenlos allen zur Verfügung zu stellen. Vielleicht ist er ja da diesbezüglich schon weiter gekommen.

tk1809
Beiträge: 15
Registriert: 18.01.2023, 21:38
System: CCU

Re: JSON-APIs auswerten

Beitrag von tk1809 » 21.01.2023, 17:08

Am Ende war alles ganz einfach:
- Redmatic auf CCU installiert
- NodeRed-Flow lt. Anleitung eingespielt, Token-Refresh funktioniert:
https://flows.nodered.org/flow/e740cbf1 ... bde35ae02c
- Übergabe der Werte mit der Node Sysvar an CCU Systemvariablen

Gehört nicht hierhin, ich weiss.
Schönes WE!
Und danke

Antworten

Zurück zu „Projektvorstellungen“