JSON-APIs auswerten

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Re: JSON-APIs auswerten

Beitrag von Dome_2001 » 01.10.2021, 14:29

Bei mir läuft es auf deinem Raspberrymatic, aber eine relativ alte Version noch
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: JSON-APIs auswerten

Beitrag von Tyfys » 01.10.2021, 14:30

Ich meine auf der CCU2 funktioniert das nicht mit https.

Code: Alles auswählen

string url = 'http://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json';
url = "wget --no-check-certificate --timeout=2 -O - '"#url#"'";
string rueck;
string error;
system.Exec(url , & rueck, & error);
WriteLine(rueck);
klappt bei mir jedenfalls.


und man beachte :
Über den Pfad https://www.dwd.de/DWD/warnungen/warnap ... nings.json wird eine JSONP-Datei zur Verfügung gestellt, in der der Warnstatus für Deutschland dargestellt wird.
Die einzelnen Kreise und Kriterien können über selbst erstellte Scripte ausgelesen und als Text oder Grafik umgesetzt werden.

JSONP wird anstelle von reinem JSON-Code zur Vermeidung von Domainabhängigkeiten verwendet. Im Unterschied gibt es vor dem eigentlich JSON-Code zusätzlich den Präfix "warnWetter.loadWarnings (" und am Ende noch ein " );". Werden die Anfangs- und Endzeichen entfernt (z.B. durch Nutzung einer "Substring"-Funktion) erhält man den reinen JSON-Code, der entsprechend verarbeitet werden kann.
Gruß
Harry
Gruß
Harry

Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Re: JSON-APIs auswerten

Beitrag von Dome_2001 » 01.10.2021, 14:58

so, nun habe ich den RaspberryMatic auf die aktuellste Version gelupft, jetzt läuft das Script bei mir auch ...

Danke für den Support
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

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 » 01.10.2021, 18:07

Dome_2001 hat geschrieben:
01.10.2021, 14:58
so, nun habe ich den RaspberryMatic auf die aktuellste Version gelupft, jetzt läuft das Script bei mir auch ...
Wie alt war die Version denn?

@Baxxy danke für die Unterstützung
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 +++

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 » 04.10.2021, 12:26

Auch wenn es @Dome_2001 nicht mehr interessiert, habe ich mir das jetzt mal selber angeschaut.
Die generierten SV-Namen kann man noch etwas "verschönern", wenn man nach

Code: Alles auswählen

! Array und Payload aufbereiten
einfügt:

Code: Alles auswählen

! Array und Payload aufbereiten
rueck = rueck.Substr(rueck.Find('{"time"'));
Warum beim Inhalt von regionName0 immer der erste Buchstabe abgeschnitten wird, ist mir auch nicht ganz klar.

Erstaunt bin ich aber über
Baxxy hat geschrieben:
01.10.2021, 14:28
Dauert aber 2-3 Sekunden.
im SDV wurden CCU Laufzeit 0.297 sec gemessen
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: 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 » 04.10.2021, 13:16

MichaelN hat geschrieben:
04.10.2021, 12:26
im SDV wurden CCU Laufzeit 0.297 sec gemessen
Ich hatt's direkt im Script testen. Und wie das mit dem Zeitgefühl manchmal so ist kam es mir gefühlt recht lang vor. :wink:
Kann aber auch sein das der Datenabruf an sich länger dauerte weil durch meine Tailscale Experimente ein paar extra Runden (Routen) gedreht wurden. Ich probier's später nochmal. :)

Grüße, Baxxy

Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Re: JSON-APIs auswerten

Beitrag von Dome_2001 » 05.10.2021, 18:41

MichaelN hat geschrieben:
01.10.2021, 18:07
Dome_2001 hat geschrieben:
01.10.2021, 14:58
so, nun habe ich den RaspberryMatic auf die aktuellste Version gelupft, jetzt läuft das Script bei mir auch ...
Wie alt war die Version denn?

@Baxxy danke für die Unterstützung
Doch die war schon sehr alt. 1.47 oder sowas ..... aber jetzt geht alles Top
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

Stramon
Beiträge: 46
Registriert: 29.06.2016, 20:28
Wohnort: Kiel
Hat sich bedankt: 3 Mal

Re: JSON-APIs auswerten

Beitrag von Stramon » 20.10.2021, 20:51

Heute gibt es für ganz Deutschland Sturmwarnungen. Das Script braucht bei mir heute ca.10 Sekunden bis zur Ausgabe. Leider taucht unser Landkreis in der Ausgabe nicht auf und die Variablen werden nicht befüllt, obwohl der Landkreis auf der DWD Seite(https://www.dwd.de/DWD/warnungen/warnap ... nings.json) mit dabei ist. :(

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.10.2021, 22:20

Vielleicht läuft es in einem timeout und bricht ab. Erscheint mir aber auch nicht wirklich sinnig die Warnmeldungen für ganz DE in homematic zu verarbeiten.

EDIT: das ist ein halbes MB an Text! Selbst auf einem PC dauert copy & paste einen Sekundenbruchteil. Da muss man sich nicht wundern, wenn die CCU da sagt danke, mir reichts.
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 +++

Steph74
Beiträge: 13
Registriert: 02.10.2018, 06:05
Hat sich bedankt: 4 Mal

Re: JSON-APIs auswerten

Beitrag von Steph74 » 18.11.2021, 20:26

Hallo @MichaelN,
Erst mal Vorab: Bin begeistert, damit kann ich den Stromverbrauch in meinen Shellys auslesen und in der CCU weiter verarbeiten.

Allerdings hängt es bei mir an einer Stelle - ich habe im Code gesucht, aber da ich Hobby/Laien-Programmierer bin tue ich mir da schwer. Ich habe die aktuelle Version 1.9 (im Output steht noch 1.8 ) des Codes genutzt und wenn ich den Shelly auslese, wird leider eine Stelle "verschluckt":

=== HTTP-Request OK === {"power":75.53,"overpower":0.00,"is_valid":true,"timestamp":1637266006,"counters":[74.550, 73.390, 71.316],"total":383}
=== nach Replace === '"power":75.53,"overpower":0.00,"is-valid":true,"timestamp":1637266006,"counters":[74.550, 73.390, 71.316],"total":383'
=== nach Aufbereitung === 'power:75.53,overpower:0.00,is-valid:true,timestamp:1637266006,counters:[74.550\ 73.390\ 71.316],total:383'
=== Output V1.8 ===
Sy_Messsteckdose_power = '75.53'
Sy_Messsteckdose_overpower = '0.00'
Sy_Messsteckdose_is-valid = 'true'
Sy_Messsteckdose_timestamp = '1637266006'
Sy_Messsteckdose_counters0 = '4.550'
Sy_Messsteckdose_counters1 = '73.390'
Sy_Messsteckdose_counters2 = '71.316'
Sy_Messsteckdose_total = '383'


Replace & Aufbereitung funktionieren - aber beim Schreiben der Variable geht die erste Stelle des ...counters0 verloren.

Ist an und für sich nicht weiter tragisch, da der Shelly in den counters0 bis 2 die Wmin der letzten drei vollen Minuten fortschreibt - zum Daten loggen bin ich auf den counter1 ausgewichen. Da der Power Wert beim Shelly ziemlich unzuverlässig ist, habe ich meine "Wenn - Dann Szenarien" auch auf den Verbrauchscounter basiert. Da die 1. Stelle im Counter 0 "verschluckt" wird muss man hier auch auf den Counter1 ausweichen - der "Dann-Zweig" wird damit aber erst mit einer Minute Verzögerung abgearbeitet :(.

Vielleicht kannst Du das ja in einer der kommenden Versionen mal anschauen ...

Viele Grüße
Stephan

Antworten

Zurück zu „Projektvorstellungen“