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 » 24.08.2023, 06:56

Nein, es würden trotzdem lesbare Zeichen gesendet. Das was du zeigst ist aber kein plain text sondern irgendwas binär codiertes.

Wenn du die URL im Browser aufrufst, musst du ein JSON angezeigt bekommen.
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 +++

PHundhausen
Beiträge: 107
Registriert: 20.02.2019, 10:42
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 4 Mal

Re: JSON-APIs auswerten

Beitrag von PHundhausen » 04.09.2023, 10:50

Hallo MichaelN,

ein tolles Skript, danke schön dafür !

Ich lese damit meine Sonnenbatterie (Photovoltaik) aus und das klappt wirklich phänomenal gut.

Im Gegensatz zu deiner Erklärung im Eingangspost mußte ich aber eine weitere Zeile anpassen:

alt: url = "wget --no-check-certificate --timeout=2 -O - '"#url#"'";
neu: url = "wget --header 'Auth-Token: xxxxxxxx-asdfghjk-11199b7-frghis4523' --timeout=2 -O - '"#url#"'";

In der "alten" Version bekam ich einen Authentifizierungsfehler, mit dem Token funzte es auf Anhieb.

Herzliche Grüße
PHundhausen

Edit: Der Token muß natürlich auf das jeweilige System angepaßt sein !
------------------------------------------
Stand 27.01.2024:

Home (RaspberryMatic auf RP4 mit HB-RF-ETH): 1203 Kanäle in 202 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten
Office (RaspberryMatic auf CCU3): 359 Kanäle in 51 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
------------------------------------------

Dani3000
Beiträge: 82
Registriert: 14.03.2020, 16:47
Hat sich bedankt: 11 Mal
Danksagung erhalten: 1 Mal

Re: JSON-APIs auswerten

Beitrag von Dani3000 » 05.09.2023, 11:18

Hallo,

ich lese mit dem Script meinen Fronius Wechselrichter aus. Das funktioniert bis auf eine Sache sehr gut.
Wo ich ein Problem habe ist folgendes:
Wenn die Solarleistung auf 0 sinkt (Abends), dann ist der Wert nicht mehr in der API vorhanden und wird vom Script auch nicht mehr gefunden.
Damit bleibt die ausgelesenen Solarleistung, die in eine SV geschrieben wird, auf dem zuletzt ausgelesenem Wert. Wie bekomme ich den Wert sinnvoll auf 0 geschrieben wenn die Solarleistung nicht mehr in der API steht?
Ich hoffe ich habe das verständlich beschrieben?!
Danke schon mal für Eure Hilfe und Hinweise. Danke!

Gruß,
Dani3000

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 » 05.09.2023, 11:33

Da muss ich erstmal drüber nachdenken.
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 +++

PHundhausen
Beiträge: 107
Registriert: 20.02.2019, 10:42
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 4 Mal

Re: JSON-APIs auswerten

Beitrag von PHundhausen » 05.09.2023, 11:33

In so einem Fall würde ich, bevor ich das Verarbeitungsskript aufrufe, die Variable manuell auf 0 oder einen Dummywert setzen, den ich dann klar von echt gelieferten Werten unterscheiden kann
------------------------------------------
Stand 27.01.2024:

Home (RaspberryMatic auf RP4 mit HB-RF-ETH): 1203 Kanäle in 202 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten
Office (RaspberryMatic auf CCU3): 359 Kanäle in 51 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
------------------------------------------

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 » 05.09.2023, 11:38

dann hast du aber immer einen zusätzlichen null Wert. das könnte stören. oder, man setzt den mit Verzögerung. und wenn ein Wert ausgelesen wird, wird die Verzögerung dadurch überschrieben.

das könntest du mal ausprobieren
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 +++

Dani3000
Beiträge: 82
Registriert: 14.03.2020, 16:47
Hat sich bedankt: 11 Mal
Danksagung erhalten: 1 Mal

Re: JSON-APIs auswerten

Beitrag von Dani3000 » 07.09.2023, 11:07

MichaelN hat geschrieben:
05.09.2023, 11:38
dann hast du aber immer einen zusätzlichen null Wert. das könnte stören. oder, man setzt den mit Verzögerung. und wenn ein Wert ausgelesen wird, wird die Verzögerung dadurch überschrieben.

das könntest du mal ausprobieren
Ja der zusätzliche Nullwert stört mich dann in der Historian Auswertung (Die Kurve ist dann nur gezackel)
Mit Verzögert auf Null setzen. Hmm ich weiß was du meinst, aber wie ich das jetzt umsetze weiß grad auch nicht.

Ich stelle mir so was im API-Script vor wie: Wenn "Wert" nicht (mehr) vorhanden dann "0"
Aber das scheint mir ja auch nicht ganz so einfach, prinzipiell weiß das Script ja nicht was an "Daten" kommen soll. Hmmm.

Zusatz: Ich lasse das Sript nur zw. SA und SU laufen (Astrozeit) Vielleicht geht ja da was. (Gut ich könnte es nach der SU-Zeit einfach auf Null setzen.
Aber es könnte auch tagsüber mal keine Sonne (Solarleistung) da ein.

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

Re: JSON-APIs auswerten

Beitrag von Baxxy » 07.09.2023, 11:25

Du kannst ja mal das vollständige JSON posten.
Einmal für den Tag und einmal für die Nacht.

Das kann man dann als Testdaten nehmen und ein bisschen mit "spielen". Vielleicht findest sich dann was.

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 » 07.09.2023, 11:29

Dani3000 hat geschrieben:
07.09.2023, 11:07
Mit Verzögert auf Null setzen. Hmm ich weiß was du meinst, aber wie ich das jetzt umsetze weiß grad auch nicht.

Code: Alles auswählen

WENN xxx
DANN SV JSON_xyz verzöget um 1 Minute auf 0 
          Skript ausführen
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 » 02.01.2024, 17:15

Ich denke/hoffe, mit dem Script von MichaelN auf dem richtigen Weg zu sein, um den Füllstand meines Heizöltanks in eine Systemvariable einzulesen.

Offensichtlich scheitere ich an den im Eingangsthread aufgeführten, benötigten Fähigkeiten:
Grundkenntnisse in der WebUI-Programmierung (Anlegen und Ändern von Programmen, Einfügen und Anpassen von Skripten)
Anlegen von Systemvariablen
Skripte unter "Skript testen" laufen lassen und die Ausgaben verstehen und intepretieren
grundlegendes Logik-Verständnis / Abstraktionsvermögen um die beschriebenen Lösungen ggf. auf eigene Bedürfnisse anzupassen
Die dazugehörige Azure API habe ich diesem Thread angehängt. Anhand der Azure API, habe ich das Script zunächst wie folgt angepasst:
!JSON universell auslesen
!V1.11 MichaelN viewtopic.php?f=18&t=68762
!GPL-3.0-or-later
string url = "https://devapiext.azurewebsites.net/api ... Fu_4PDnA==";
url = "--header 'Content-Type: text/plain' --data-raw '{"DeviceRequest":{"Username":"admin_pn@proteus.news","accountID":"2","SecurityStamp":"0bee5f07-c919-4ee6-935d-4b7bc5ae63e2","DeviceID":"5155888"}}'";
string prefix = "JSON_";
...
Die für meinen Account individuellen Eintragungen unter Username, accountID, SecurityStamp und DeviceID habe ich natürlich vorgenommen, aber hier nicht aufgeführt, da es sich um Zugangsdaten handelt. Leider mündet die Ausgabe des Scripts in:
Error 1 at row 5 col 84 near ^":{"Username":"admin_pn@proteus.news","accountID":"2","SecurityStamp":"0bee5f07-
Parse following code failed:
!JSON universell auslesen
...
Mir gelingt es also leider noch nicht wirklich die Beschreibung der API in das Script zu adaptieren. Vielleicht kann mir jemand auf die Sprünge helfen?
Dateianhänge
2023-03-13_Azure_API_20Beschreibung_v02.pdf
(334.92 KiB) 17-mal heruntergeladen

Antworten

Zurück zu „Projektvorstellungen“