JSON-APIs auswerten

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 02.01.2024, 19:31

Warum weist Du url 2x einen Text zu?
Und die 2. Zuweisung ist auch kaputt. " und ' sind String Delimeter, die immer paarweise benötigt werden. Also die stehen nicht willkürlich da, sondern haben synkatische Funktion.

Ich habe leider von deiner API keine Ahnung, aber ich habe Zweifel das da so viele " in den String gehören. Vielleicht findet sich ja noch ein HTTP Experte.

Dein erster Ansatz sollte sein die URL so zusammenzusetzen, das Du die im Browser eintragen kannst und einen sinnvollen Output erhältst.
Dann kannst Du versuchen diese dem Skript beizubringen.
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 +++

mittelhessen
Beiträge: 240
Registriert: 24.07.2015, 21:39
Danksagung erhalten: 4 Mal

Re: JSON-APIs auswerten

Beitrag von mittelhessen » 03.01.2024, 14:13

MichaelN hat geschrieben:
02.01.2024, 19:31
Warum weist Du url 2x einen Text zu?
Zunächst vielen Dank für Deine schnelle Rückmeldung. Gute Frage und die Antwort muss wahrscheinlich lauten: weil ich keine Ahnung davon habe. Gehe ich also richtig in der Annahme, dass die zusammengebaute URL nur "string url" zugewiesen werden muss und die Zuweisung von "url" unangetastet bleibe muss, also beispielsweise so:
string url = "https://devapiext.azurewebsites.net/api ... Fu_4PDnA==' --header 'Content-Type: text/plain' --data-raw '{"DeviceRequest":{"Username":"admin_pn@proteus.news","accountID":"2","SecurityStamp":"0bee5f07-919-4ee6-935d-4b7bc5ae63e2","DeviceID":"5155888"}}'";
url = "wget --no-check-certificate --timeout=2 -O - '"#url#"'";

MichaelN hat geschrieben:
02.01.2024, 19:31
Und die 2. Zuweisung ist auch kaputt. " und ' sind String Delimeter, die immer paarweise benötigt werden. Also die stehen nicht willkürlich da, sondern haben synkatische Funktion.
Ich weiß nicht, an welcher Stelle ein " oder ' fehlen sollte, um ein Pärchen zu bilden. Das Ganze hatte ich aus der API-Beschreibung herauskopiert. Dort gibt es aber den expliziten Hinweis aus die korrekten Hochkommas zu achten. Obwohl im darin aufgeführten Beispiel normale Hochkommas (") aufgeführt sind, sind in der Beschreibung andere Hochkommas (“) eingesetzt. Sofern ich “ statt " verwende, kommt zumindest kein Fehler mehr in der Scriptausgabe.
MichaelN hat geschrieben:
02.01.2024, 19:31
Dein erster Ansatz sollte sein die URL so zusammenzusetzen, das Du die im Browser eintragen kannst und einen sinnvollen Output erhältst.
D. h. ich kann eine ganz normale URL zusammenbauen, die ich in die Adresszeile meines Browsers (Firefox) eintrage, absende und dann einen Output bekomme? Die fetten Parameter habe ich soeben noch mal bei meinem Anbieter erfragt, um sicher zu gehen, dass die korrekt sind.
https://devapiext.azurewebsites.net/api ... Fu_4PDnA==' --header 'Content-Type: text/plain' --data-raw'{“DeviceRequest“:{“Username“:“admin_pn@proteus.news“,“accountID“:“2“,"SecurityStamp“:“0bee5f07-c919-4ee6-935d-4b7bc5ae63e2“,“DeviceID“:“5155888“}}'

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 03.01.2024, 14:47

mittelhessen hat geschrieben:
03.01.2024, 14:13
D. h. ich kann eine ganz normale URL zusammenbauen, die ich in die Adresszeile meines Browsers (Firefox) eintrage, absende und dann einen Output bekomme?
Genau
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 +++

mittelhessen
Beiträge: 240
Registriert: 24.07.2015, 21:39
Danksagung erhalten: 4 Mal

Re: JSON-APIs auswerten

Beitrag von mittelhessen » 27.01.2024, 11:47

mittelhessen hat geschrieben:
03.01.2024, 14:13
... eine ganz normale URL zusammenbauen, die ich in die Adresszeile meines Browsers (Firefox) eintrage, absende und dann einen Output bekomme
Meine vollständigen Nutzerdaten habe ich nun zugesendet bekommen, komme damit aber immer noch nicht weiter. Wie setze ich das nun zunächst als URL zusammen, damit im Browser eine Ausgabe erfolgt?
curl --location 'https://devapiext.azurewebsites.net/api ... PDnA%3D%3D' \
--header 'Postman-Token: <calculated when request is sent>' \
--header 'Content-Type: application/json' \
--data-raw '{"DeviceRequest":{"Username":xxx,"accountID":"xxx","SecurityStamp":"xxx","DeviceID":"xxx"}}'
(xxx=persönliche Daten gekürzt)

mittelhessen
Beiträge: 240
Registriert: 24.07.2015, 21:39
Danksagung erhalten: 4 Mal

Re: JSON-APIs auswerten

Beitrag von mittelhessen » 23.03.2024, 14:31

Nach nun 2 Monaten, möchte ich diese Thread noch mal hervor holen. Leider habe ich noch immer keine Möglichkeit gefunden, den von meinem EcoFrog gemessenen Heizölstand in die Homematic einzulesen.

Hat jemand eine Idee, wie ich dies mit den voran beschriebenen Daten bewerkstelligen kann?

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 21.04.2024, 17:32

V1.12
Da immer mal wieder der Wunsch an mich herangetragen wurde doch bestimmte Systemvariablen mit dem Skript zu befüllen, habe ich nun eine "Übersetzungsfunktion" eingebaut. Siehe Code im Beitrag 1.

Dazu lässt man wie im Beitrag 1 beschrieben am besten erst einmal das Skript in "Skript testen" durchlaufen.
Dann sieht man die vom Skript automatisch generierten SV-Namen.

Am Beispiel der Testdaten:

Code: Alles auswählen

JSON_Kinder_Vorname1 = 'Patti'
JSON_Kinder_Nachname1 = 'Davis'
Will man diese Daten nun in eigene Systemvariablen namens xx_Vorname und xx_Nachname einsetzen, dann baut man die Übersetzungstabelle wie folgt ein:

Diesen Code suchen:

Code: Alles auswählen

string Name_original = ""; ! durch Semikolon getrennte SV-Namen eintragen wie sie vom Skript ermittelt werden
string Name_neu = ""; ! durch Semikolon getrennte SV-Namen eintragen die stattdessen genutzt werden sollen 
und ergänzen:

Code: Alles auswählen

string Name_original = "JSON_Kinder_Vorname1;JSON_Kinder_Nachname1"; ! durch Semikolon getrennte SV-Namen eintragen wie sie vom Skript ermittelt werden
string Name_neu = "xx_Vorname;xx_Nachname"; ! durch Semikolon getrennte SV-Namen eintragen die stattdessen genutzt werden sollen 
In Name_original werden also die automatisch generierten Namen eingetragen, jeweils durch ; getrennt.
In Name_neu werden die eigenen Namen eingetragen; ebenfalls durch ; getrennt und in der gleichen Reihenfolge und Anzahl wie in Name_original.

Im Erfolgsfalle - also der automatische erzeugte Name wird gefunden und der neue ist als SV im System angelegt - wird der Wert eingetragen und im Protokoll (im "Skript testen" Fenster) angezeigt:

Code: Alles auswählen

JSON_Kinder_Vorname1 = 'Patti'
0: JSON_Kinder_Vorname1
=== SV xx_Vorname written (1) ===
JSON_Kinder_Nachname1 = 'Davis'
0: JSON_Kinder_Vorname1
1: JSON_Kinder_Nachname1
=== SV xx_Nachname written (1) ===
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 +++

Antworten

Zurück zu „Projektvorstellungen“