JSON-APIs auswerten

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

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

Re: JSON-APIs auswerten

Beitrag von tk1809 » 18.01.2023, 22:37

wie krieg ich den code ordentlich geladen?

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

Re: JSON-APIs auswerten

Beitrag von tk1809 » 18.01.2023, 22:39

Code: Alles auswählen

[string url = "https://interop.ondilo.com/api/customer/v1/pools/48640/lastmeasures?types[]=temperature";
url = "wget --header=Authorization: Bearer 66d1d961e4a5ce834a5599c0b00981c72f7c0215, Accept: application/json, Accept-Charset: utf-8, Accept-Encoding: gzip, deflate, Content-Type: application/x-www-form-urlencoded "#url#"'";]

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

Re: JSON-APIs auswerten

Beitrag von tk1809 » 18.01.2023, 22:40

hab die Pool-ID und den Token zum spielen dringelassen

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 18.01.2023, 22:50

Man kann seine Beiträge editieren...

Aber bei Problemen mit HTTP Authentifizierung kann ich nicht weiter helfen. Die Lösung würde mich zwar prinzipiell interessieren, da es immer öfter API gibt, die eine Methode zur Authentifizierung nutzen, aber das ist nicht das Thema dieses 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 +++

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

Re: JSON-APIs auswerten

Beitrag von tk1809 » 18.01.2023, 22:55

Danke.
Authentifizierung sollte funktionieren, weil Ondilo über Pool-ID und den Access-Token authentifiziert.
Das habe ich erfolgreich auslesen können.
Die Header Einträge sind wohl das Problem, das restliche script ist unverändert.
Leider findet man nicht viel über Ondilo mit Homematic, deshalb die Bitte an die Experten.
Vielen Dank!

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 19.01.2023, 19:52

Du brauchst da einen Experten für wget, nicht für Homematic
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 +++

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

Re: JSON-APIs auswerten

Beitrag von Baxxy » 19.01.2023, 20:15

Ich hatte dazu gestern ein bisschen mit CURL experimentiert...
Entweder stimmten/passten Pool-ID / Token nicht oder ich habe was falsch gemacht.

Edit: aktualisierte Version mit neuem Token

Code: Alles auswählen

string token = "4157cf8dafc2f9806b208017e4465806f1ecf6e8";
string url = "https://interop.ondilo.com/api/customer/v1/pools/48640/lastmeasures?types[]=temperature%20HTTP/1.1";
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);
Ergab:

Code: Alles auswählen

stdout:
{"error":"invalid_token","error_description":"The access token provided has expired"}

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} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [25 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [4292 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [520 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
> GET /api/customer/v1/pools/48640/lastmeasures?types[]=temperature%20HTTP/1.1 HTTP/1.1
> Host: interop.ondilo.com
> User-Agent: curl/7.86.0
> Authorization: Bearer 4157cf8dafc2f9806b208017e4465806f1ecf6e8
> Accept: application/json
> Accept-Charset: utf-8
> Accept-Encoding: gzip, deflate
> Content-Type: application/x-www-form-urlencoded
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [281 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [281 bytes data]
< HTTP/1.1 401 Unauthorized
< Date: Thu, 19 Jan 2023 21:53:00 GMT
< Server: Apache/2.4.41 (Ubuntu)
< WWW-Authenticate: Bearer realm="Service"
< WWW-Authenticate: error="invalid_token"
< WWW-Authenticate: error_description="The access token provided has expired"
< 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: 85
< Content-Type: text/html; charset=UTF-8
< 
{ [85 bytes data]

100    85  100    85    0     0    249      0 --:--:-- --:--:-- --:--:--   249
100    85  100    85    0     0    249      0 --:--:-- --:--:-- --:--:--   249


@Micha: am besten abtrennen lassen
Zuletzt geändert von Baxxy am 19.01.2023, 22:56, insgesamt 1-mal geändert.

Benutzeravatar
Henke
Beiträge: 1521
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 140 Mal
Danksagung erhalten: 306 Mal

Re: JSON-APIs auswerten

Beitrag von Henke » 19.01.2023, 20:18

Ein paar "'" hier und da...

Code: Alles auswählen

string url = "https://interop.ondilo.com/api/customer/v1/pools/48640/lastmeasures?types[]=temperature";
string exe = "wget --header='Authorization: Bearer 66d1d961e4a5ce834a5599c0b00981c72f7c0215, Accept: application/json, Accept-Charset: utf-8, Accept-Encoding: gzip, deflate, Content-Type: application/x-www-form-urlencoded' '"#url#"'";
!WriteLine(url);
string stdout; string stderr;
system.Exec(exe, &stdout,&stderr);
WriteLine (  "stdout: " #            stdout );
if ( stderr ){WriteLine (  "stderr: " #            stderr ); }
Liefert

Code: Alles auswählen

stderr: --2023-01-19 20:16:27--  https://interop.ondilo.com/api/customer/v1/pools/48640/lastmeasures?types[]=temperature
Resolving interop.ondilo.com... 52.208.35.188
Connecting to interop.ondilo.com|52.208.35.188|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized

Username/Password Authentication Failed.

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 19.01.2023, 21:05

Baxxy hat geschrieben:
19.01.2023, 20:15
am besten abtrennen lassen
Ne, lass mal. Das sind ja durchaus Infos die sich noch als nützlich erweisen können.
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 +++

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

Re: JSON-APIs auswerten

Beitrag von tk1809 » 19.01.2023, 22:27

Vielen Dank erstmal für eure Mühe!

Ist die Kommaabtrennung zwischen den Headerfeldern richtig?

Token ist der richtige, hier die Daten der Auhorisierung:
{'access_token': '4157cf8dafc2f9806b208017e4465806f1ecf6e8', 'expires_in': 3600, 'token_type': 'Bearer', 'scope': ['api'], 'refresh_token': '66d1d961e4a5ce834a5599c0b00981c72f7c0215', 'expires_at': 1674051387.1826448}
Found all those pools: [{'id': 48640, ect...

Hier habe ich noch korrigiert lt. Ondilo Anleitung:

Code: Alles auswählen

string url = "https://interop.ondilo.com/api/customer/v1/pools/48640/lastmeasures?types[]=temperature HTTP/1.1";

Antworten

Zurück zu „Projektvorstellungen“