JSON-APIs auswerten

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

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

Re: JSON-APIs auswerten

Beitrag von Baxxy » 21.08.2021, 16:28

Michael... Hut Ab vor deiner Arbeit! :)

Die 1.7 dröselt jetzt alle Rückgaben der OpenWeather One Call API (in allen getesteten Konstellationen) korrekt auf.

Hier mal 2 Beispielausgaben:
7-Tage Vorschau:

Code: Alles auswählen

https://api.openweathermap.org/data/2.5/onecall?lat=52.520008&lon=13.404954&units=metric&lang=de&exclude=current,minutely,hourly&appid=9xxxxxxxxxxx

Code: Alles auswählen

=== Output V1.7 ===
JSON_lat = '52.52'
JSON_lon = '13.405'
JSON_timezone = 'Europe/Berlin'
JSON_timezone-offset = '7200'
JSON_daily_dt0 = '629543600'
JSON_daily_sunrise0 = '1629518349'
JSON_daily_sunset0 = '1629570015'
JSON_daily_moonrise0 = '1629570600'
JSON_daily_moonset0 = '1629510840'
JSON_daily_moon-phase0 = '0.46'
JSON_daily_temp_day0 = '21.97'
JSON_daily_temp_min0 = '15.65'
JSON_daily_temp_max0 = '23.79'
JSON_daily_temp_night0 = '19.07'
JSON_daily_temp_eve0 = '22.88'
JSON_daily_temp_morn0 = '15.71'
JSON_daily_feels-like_day1 = '21.76'
JSON_daily_feels-like_night1 = '18.57'
JSON_daily_feels-like_eve1 = '22.66'
JSON_daily_feels-like_morn1 = '15.61'
JSON_daily_pressure2 = '1016'
JSON_daily_humidity2 = '59'
JSON_daily_dew-point2 = '13.6'
JSON_daily_wind-speed2 = '3.28'
JSON_daily_wind-deg2 = '80'
JSON_daily_wind-gust2 = '6.33'
JSON_daily_weather_id2 = '500'
JSON_daily_weather_main2 = 'Rain'
JSON_daily_weather_description2 = 'Leichter Regen'
JSON_daily_weather_icon2 = '10d'
JSON_clouds = '67'
JSON_pop = '0.2'
JSON_rain = '0.18'
JSON_uvi = '4.95'
JSON_1_dt = '1629630000'
JSON_1_sunrise = '1629604850'
JSON_1_sunset = '1629656285'
JSON_1_moonrise = '1629658320'
JSON_1_moonset = '1629602280'
JSON_1_moon-phase = '0.5'
JSON_1_temp_day = '17.78'
JSON_1_temp_min = '17.04'
JSON_1_temp_max = '21.74'
JSON_1_temp_night = '17.04'
JSON_1_temp_eve = '18.39'
JSON_1_temp_morn = '17.66'
JSON_1_feels-like_day = '17.83'
JSON_1_feels-like_night = '17.23'
JSON_1_feels-like_eve = '18.58'
JSON_1_feels-like_morn = '17.07'
JSON_1_pressure = '1016'
JSON_1_humidity = '85'
JSON_1_dew-point = '15.15'
JSON_1_wind-speed = '4'
JSON_1_wind-deg = '87'
JSON_1_wind-gust = '8.37'
JSON_1_weather_id0 = '01'
JSON_1_weather_main0 = 'Rain'
JSON_1_weather_description0 = 'Mäßiger Regen'
JSON_1_weather_icon0 = '10d'
JSON_1_clouds = '100'
JSON_1_pop = '0.96'
JSON_1_rain = '13.38'
JSON_1_uvi = '2.04'
JSON_2_dt = '1629716400'
JSON_2_sunrise = '1629691350'
JSON_2_sunset = '1629742554'
JSON_2_moonrise = '1629745800'
JSON_2_moonset = '1629693540'
JSON_2_moon-phase = '0.53'
JSON_2_temp_day = '13.22'
JSON_2_temp_min = '13.13'
JSON_2_temp_max = '16.91'
JSON_2_temp_night = '13.76'
JSON_2_temp_eve = '15.92'
JSON_2_temp_morn = '15.05'
JSON_2_feels-like_day = '13'
JSON_2_feels-like_night = '13.25'
JSON_2_feels-like_eve = '15.58'
JSON_2_feels-like_morn = '15.12'
JSON_2_pressure = '1019'
JSON_2_humidity = '92'
JSON_2_dew-point = '12'
JSON_2_wind-speed = '6.45'
JSON_2_wind-deg = '44'
JSON_2_wind-gust = '13.87'
JSON_2_weather_id0 = '01'
JSON_2_weather_main0 = 'Rain'
JSON_2_weather_description0 = 'Mäßiger Regen'
JSON_2_weather_icon0 = '10d'
JSON_2_clouds = '100'
JSON_2_pop = '1'
JSON_2_rain = '25.41'
JSON_2_uvi = '0.68'
JSON_3_dt = '1629802800'
JSON_3_sunrise = '1629777851'
JSON_3_sunset = '1629828823'
JSON_3_moonrise = '1629833040'
JSON_3_moonset = '1629784740'
JSON_3_moon-phase = '0.57'
JSON_3_temp_day = '20.61'
JSON_3_temp_min = '11.09'
JSON_3_temp_max = '20.95'
JSON_3_temp_night = '14.5'
JSON_3_temp_eve = '17.08'
JSON_3_temp_morn = '11.5'
JSON_3_feels-like_day = '19.74'
JSON_3_feels-like_night = '13.76'
JSON_3_feels-like_eve = '16.33'
JSON_3_feels-like_morn = '10.85'
JSON_3_pressure = '1027'
JSON_3_humidity = '39'
JSON_3_dew-point = '6.23'
JSON_3_wind-speed = '4.83'
JSON_3_wind-deg = '21'
JSON_3_wind-gust = '12.5'
JSON_3_weather_id0 = '02'
JSON_3_weather_main0 = 'Clouds'
JSON_3_weather_description0 = 'Mäßig bewölkt'
JSON_3_weather_icon0 = '03d'
JSON_3_clouds = '46'
JSON_3_pop = '0'
JSON_3_uvi = '4.79'
JSON_4_dt = '1629889200'
JSON_4_sunrise = '1629864351'
JSON_4_sunset = '1629915090'
JSON_4_moonrise = '1629920220'
JSON_4_moonset = '1629875640'
JSON_4_moon-phase = '0.6'
JSON_4_temp_day = '21.2'
JSON_4_temp_min = '11.47'
JSON_4_temp_max = '21.99'
JSON_4_temp_night = '17.44'
JSON_4_temp_eve = '19.43'
JSON_4_temp_morn = '13.05'
JSON_4_feels-like_day = '20.34'
JSON_4_feels-like_night = '16.91'
JSON_4_feels-like_eve = '18.79'
JSON_4_feels-like_morn = '12.08'
JSON_4_pressure = '1019'
JSON_4_humidity = '37'
JSON_4_dew-point = '6.03'
JSON_4_wind-speed = '5.16'
JSON_4_wind-deg = '270'
JSON_4_wind-gust = '11.33'
JSON_4_weather_id0 = '03'
JSON_4_weather_main0 = 'Clouds'
JSON_4_weather_description0 = 'Überwiegend bewölkt'
JSON_4_weather_icon0 = '04d'
JSON_4_clouds = '60'
JSON_4_pop = '0.01'
JSON_4_uvi = '4.84'
JSON_5_dt = '1629975600'
JSON_5_sunrise = '1629950851'
JSON_5_sunset = '1630001357'
JSON_5_moonrise = '1630007400'
JSON_5_moonset = '1629966420'
JSON_5_moon-phase = '0.63'
JSON_5_temp_day = '18.72'
JSON_5_temp_min = '12.97'
JSON_5_temp_max = '18.72'
JSON_5_temp_night = '12.97'
JSON_5_temp_eve = '15.8'
JSON_5_temp_morn = '13.3'
JSON_5_feels-like_day = '18.14'
JSON_5_feels-like_night = '12.28'
JSON_5_feels-like_eve = '14.98'
JSON_5_feels-like_morn = '12.77'
JSON_5_pressure = '1009'
JSON_5_humidity = '57'
JSON_5_dew-point = '9.92'
JSON_5_wind-speed = '5.11'
JSON_5_wind-deg = '277'
JSON_5_wind-gust = '11.06'
JSON_5_weather_id0 = '00'
JSON_5_weather_main0 = 'Rain'
JSON_5_weather_description0 = 'Leichter Regen'
JSON_5_weather_icon0 = '10d'
JSON_5_clouds = '90'
JSON_5_pop = '0.78'
JSON_5_rain = '5.53'
JSON_5_uvi = '5'
JSON_6_dt = '1630062000'
JSON_6_sunrise = '1630037352'
JSON_6_sunset = '1630087622'
JSON_6_moonrise = '1630094640'
JSON_6_moonset = '1630057200'
JSON_6_moon-phase = '0.66'
JSON_6_temp_day = '16.04'
JSON_6_temp_min = '11.99'
JSON_6_temp_max = '16.04'
JSON_6_temp_night = '12.35'
JSON_6_temp_eve = '13.96'
JSON_6_temp_morn = '12.09'
JSON_6_feels-like_day = '15.48'
JSON_6_feels-like_night = '11.99'
JSON_6_feels-like_eve = '13.47'
JSON_6_feels-like_morn = '11.63'
JSON_6_pressure = '1010'
JSON_6_humidity = '68'
JSON_6_dew-point = '10.12'
JSON_6_wind-speed = '5.54'
JSON_6_wind-deg = '315'
JSON_6_wind-gust = '10.12'
JSON_6_weather_id0 = '00'
JSON_6_weather_main0 = 'Rain'
JSON_6_weather_description0 = 'Leichter Regen'
JSON_6_weather_icon0 = '10d'
JSON_6_clouds = '99'
JSON_6_pop = '1'
JSON_6_rain = '3.4'
JSON_6_uvi = '5'
JSON_7_dt = '1630148400'
JSON_7_sunrise = '1630123852'
JSON_7_sunset = '1630173887'
JSON_7_moonrise = '1630182000'
JSON_7_moonset = '1630147860'
JSON_7_moon-phase = '0.69'
JSON_7_temp_day = '16.91'
JSON_7_temp_min = '11.76'
JSON_7_temp_max = '17.37'
JSON_7_temp_night = '13.51'
JSON_7_temp_eve = '15.02'
JSON_7_temp_morn = '11.98'
JSON_7_feels-like_day = '16.35'
JSON_7_feels-like_night = '13.19'
JSON_7_feels-like_eve = '14.59'
JSON_7_feels-like_morn = '11.69'
JSON_7_pressure = '1013'
JSON_7_humidity = '65'
JSON_7_dew-point = '10.38'
JSON_7_wind-speed = '4.74'
JSON_7_wind-deg = '339'
JSON_7_wind-gust = '10.78'
JSON_7_weather_id0 = '00'
JSON_7_weather_main0 = 'Rain'
JSON_7_weather_description0 = 'Leichter Regen'
JSON_7_weather_icon0 = '10d'
JSON_7_clouds = '80'
JSON_7_pop = '1'
JSON_7_rain = '4.22'
JSON_7_uvi = '5'
Aktuell:

Code: Alles auswählen

https://api.openweathermap.org/data/2.5/onecall?lat=52.520008&lon=13.404954&units=metric&lang=de&exclude=daily,minutely,hourly&appid=9xxxxxxxxxxx

Code: Alles auswählen

=== Output V1.7 ===
JSON_lat = '52.52'
JSON_lon = '13.405'
JSON_timezone = 'Europe/Berlin'
JSON_timezone-offset = '7200'
JSON_current_dt = '1629555737'
JSON_current_sunrise = '1629518349'
JSON_current_sunset = '1629570015'
JSON_current_temp = '23.76'
JSON_current_feels-like = '23.68'
JSON_current_pressure = '1011'
JSON_current_humidity = '57'
JSON_current_dew-point = '14.74'
JSON_current_uvi = '2.1'
JSON_current_clouds = '40'
JSON_current_visibility = '10000'
JSON_current_wind-speed = '1.34'
JSON_current_wind-deg = '326'
JSON_current_wind-gust = '6.26'
JSON_current_weather_id0 = '02'
JSON_current_weather_main0 = 'Clouds'
JSON_current_weather_description0 = 'Mäßig bewölkt'
JSON_current_weather_icon0 = '03d'
Die deutschen Beschreibungen sehen noch ulkig aus (wenn sie Umlaute enthalten), das liegt aber eher an wget und nicht an deinem Script.

Grüße
Baxxy

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

Re: JSON-APIs auswerten

Beitrag von MichaelN » 21.08.2021, 16:42

Baxxy hat geschrieben:
21.08.2021, 16:28
Die deutschen Beschreibungen sehen noch ulkig aus (wenn sie Umlaute enthalten)
Das war mir gar nicht aufgefallen. Ich habe nur im SDV getestet. Kann es sein, dass der die Umlaute automatisch konvertiert?

Ah, nein. Ich habe zum testen die Rohdaten aus dem Firefox einfach als string rüber kopiert. Da sind die Umlaute von FF schon konvertiert.
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: 10742
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 599 Mal
Danksagung erhalten: 2198 Mal

Re: JSON-APIs auswerten

Beitrag von Baxxy » 21.08.2021, 17:25

MichaelN hat geschrieben:
21.08.2021, 16:42
Da sind die Umlaute von FF schon konvertiert
Ja direkt im Browser passt das.
Ich habe mal nen Thread dazu aufgemacht. Dein Script kann ja nix dafür. :wink:
Schauen wir mal.

Grüße
Baxxy

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

Re: JSON-APIs auswerten

Beitrag von MichaelN » 22.08.2021, 18:41

Dank dem Hinweis von Baxxy liefert das Skript V1.7a nun auch korrekte deutsche Umlaute aus. Danke für den Hinweis!
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 +++

Hans Hannsen
Beiträge: 12
Registriert: 22.08.2021, 16:18
System: CCU
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: JSON-APIs auswerten

Beitrag von Hans Hannsen » 22.08.2021, 20:53

Das ist mir etwas zu hoch.
Kannst du mir dein Script für meine Zwecke anpassen?
Möchte den Momentanen Produktionswert meiner PV-Anlage aus der Solarlog 300 auslesen und in einer Variable der CCU3 schreiben und dort anzeigen. IP Solarlog 192.168.178.148

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

Re: JSON-APIs auswerten

Beitrag von MichaelN » 22.08.2021, 20:59

Das ist doch der Witz an dem Skript, das man nichts anpassen muss. Nur die URL eintragen und fertig.

Zum testen bei "Skript testen" eingeben und schauen welche Daten ausgespuckt werden. Für die gewünschten legst du dann eine Systemvariable mit dem angezeigten Namen an.

Das Skript packst du dann in ein WebUI Programm.
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: 9642
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 23.08.2021, 10:14

V1.8 in Beitrag 1 veröffentlicht. "Verbotene" Zeichen in den Nutzdaten werden nun durch Leerzeichen ersetzt und stören somit die Auswertung nicht mehr. ggf. kann man auch durch ein anderes Zeichen ersetzen. Aber bitte nicht wieder eins der reservierten Zeichen dafür nehmen.

Reserviert sind:

Code: Alles auswählen

string ersetzen = ":,[]{}";
angepasst werden kann die Ersetzung hier:

Code: Alles auswählen

string durch = " ";        
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: 9642
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: JSON-APIs auswerten

Beitrag von MichaelN » 14.09.2021, 19:16

V1.9 in Beitrag 1 veröffentlicht. Wahlweise kann nun auch CUxD zur Abfrage der Daten genutzt werden.
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 +++

1techone
Beiträge: 213
Registriert: 19.01.2016, 10:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 49 Mal
Danksagung erhalten: 19 Mal

Re: JSON-APIs auswerten

Beitrag von 1techone » 24.09.2021, 11:24

Hallo,
ich will gerne Daten von meinem Danfoss Datenlogger abrufen.
ich habe: string url = "http://192.168.178.22"; eingefügt.
Es werden eine Unmenge Daten ausgespuckt, aber leider nicht die JSON separiert.
Es sollten:
Danfoss CLX Home
! "name" : "J. Nielsen", "owner" : "J. Nielsen", "desc" : "Solar-Dach", "ppeak" : "4.400000" }
! "occure" : "1414922256",
! "now" : "1414974219",
! "yield" : "0.138672" }
diese Daten darin versteckt sein.
Kann mir jemand weiterhelfen?
Die angehängte Datei ist nur ein Auszug, sie ist unendlich lang :(
Danfoss.PNG
Sorry, die Datei ist so groß, daß ich sie nicht anfügen kann :wink: b.z.w. wird abgelehnt da ?Angriff? befüchtet :roll:

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

Re: JSON-APIs auswerten

Beitrag von MichaelN » 24.09.2021, 14:22

Da wird kein JSON geliefert, sondern wohl HTML.
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“