taximan:
Ich wurschtel mich hier gerade durch, sieht einigermaßen vielversprechend aus:
https://randomnerdtutorials.com/decoding-and-encoding-json-with-arduino-or-esp8266/
Gott IST DAS EINFACH!
Datt hab sogar ich verstanden, der davon keine Ahnung hat! Und der englischen Sprache wirklichnicht mächtig ist.
Ausgehend von #10: Sonnenaufgang vom OpenWeatherMap - #11 by taximan - Deutsch - Arduino Forum
habe ich den Puffer genommen und in ein Char-Array gesteckt.
ACHTUNG! Das geht auf einem Mega gerade so....
Der Sketch verwendet 9714 Bytes (3%) des Programmspeicherplatzes. Das Maximum sind 253952 Bytes.
Globale Variablen verwenden 7822 Bytes (95%) des dynamischen Speichers, 370 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.
Und hab mir dann drumrum mal was gebastelt.
Und siehe da: Wenn man dem tut folgt und das Schritt für Schritt macht, kommt man nach 30 Minuten drauf, wie es funktioniert.
Nicht die 6-er Version nehmen für das ArduinoJSON, sondern die 5er wie angegeben - sonst muss man umbauen, weil die Puffergröße nicht deklarierbar ist.
Das ganze sieht dann im Code so aus:
#include <ArduinoJson.h>
StaticJsonBuffer<4000> jsonBuffer;
char json[] = "{\"lat\":51.7,\"lon\":7.4,\"timezone\":\"Europe/Berlin\",\"timezone_offset\":7200,\"daily\":[{\"dt\":1617793200,\"sunrise\":1617771094,\"sunset\":1617819181,\"temp\":{\"day\":277.26,\"min\":272.43,\"max\":278.7,\"night\":274.07,\"eve\":276.76,\"morn\":272.93},\"feels_like\":{\"day\":273.08,\"night\":267.69,\"eve\":271.88,\"morn\":267.69},\"pressure\":1014,\"humidity\":92,\"dew_point\":275.91,\"wind_speed\":5.63,\"wind_deg\":296,\"weather\":[{\"id\":616,\"main\":\"Snow\",\"description\":\"rain and snow\",\"icon\":\"13d\"}],\"clouds\":99,\"pop\":1,\"rain\":1.53,\"snow\":1.24,\"uvi\":2.01},{\"dt\":1617879600,\"sunrise\":1617857360,\"sunset\":1617905682,\"temp\":{\"day\":279.25,\"min\":272.5,\"max\":282.29,\"night\":278.19,\"eve\":281.28,\"morn\":272.93},\"feels_like\":{\"day\":275.76,\"night\":268.93,\"eve\":278.69,\"morn\":268.93},\"pressure\":1024,\"humidity\":56,\"dew_point\":271.08,\"wind_speed\":5.24,\"wind_deg\":244,\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":86,\"pop\":0.12,\"uvi\":2.36},{\"dt\":1617966000,\"sunrise\":1617943625,\"sunset\":1617992183,\"temp\":{\"day\":283.62,\"min\":276.81,\"max\":284.96,\"night\":280.64,\"eve\":283.48,\"morn\":276.81},\"feels_like\":{\"day\":282.13,\"night\":273.09,\"eve\":282.21,\"morn\":273.09},\"pressure\":1014,\"humidity\":54,\"dew_point\":274.62,\"wind_speed\":5.44,\"wind_deg\":235,\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":100,\"pop\":0,\"uvi\":3.07},{\"dt\":1618052400,\"sunrise\":1618029892,\"sunset\":1618078684,\"temp\":{\"day\":279.47,\"min\":279.2,\"max\":280.38,\"night\":280.07,\"eve\":279.45,\"morn\":279.2},\"feels_like\":{\"day\":277.38,\"night\":277.03,\"eve\":276.92,\"morn\":277.03},\"pressure\":1011,\"humidity\":96,\"dew_point\":278.76,\"wind_speed\":2.8,\"wind_deg\":57,\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderate rain\",\"icon\":\"10d\"}],\"clouds\":100,\"pop\":1,\"rain\":19.02,\"uvi\":0.32},{\"dt\":1618138800,\"sunrise\":1618116159,\"sunset\":1618165185,\"temp\":{\"day\":287.95,\"min\":277.31,\"max\":287.95,\"night\":277.31,\"eve\":282.46,\"morn\":281.77},\"feels_like\":{\"day\":287.42,\"night\":280.59,\"eve\":281.57,\"morn\":280.59},\"pressure\":1007,\"humidity\":74,\"dew_point\":283.19,\"wind_speed\":7.65,\"wind_deg\":196,\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"light rain\",\"icon\":\"10d\"}],\"clouds\":99,\"pop\":1,\"rain\":4.74,\"uvi\":0.82},{\"dt\":1618225200,\"sunrise\":1618202426,\"sunset\":1618251686,\"temp\":{\"day\":279.87,\"min\":275.79,\"max\":280.65,\"night\":276.91,\"eve\":278.49,\"morn\":275.79},\"feels_like\":{\"day\":276.64,\"night\":271.7,\"eve\":275.01,\"morn\":271.7},\"pressure\":1022,\"humidity\":56,\"dew_point\":271.83,\"wind_speed\":5,\"wind_deg\":354,\"weather\":[{\"id\":616,\"main\":\"Snow\",\"description\":\"rain and snow\",\"icon\":\"13d\"}],\"clouds\":100,\"pop\":0.8,\"rain\":0.13,\"snow\":0.45,\"uvi\":1},{\"dt\":1618311600,\"sunrise\":1618288695,\"sunset\":1618338187,\"temp\":{\"day\":282.66,\"min\":274.76,\"max\":282.88,\"night\":278.05,\"eve\":280.51,\"morn\":275.48},\"feels_like\":{\"day\":280.95,\"night\":273.95,\"eve\":278.9,\"morn\":273.95},\"pressure\":1026,\"humidity\":52,\"dew_point\":273.2,\"wind_speed\":3.21,\"wind_deg\":299,\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"light rain\",\"icon\":\"10d\"}],\"clouds\":98,\"pop\":0.67,\"rain\":0.98,\"uvi\":1},{\"dt\":1618398000,\"sunrise\":1618374964,\"sunset\":1618424688,\"temp\":{\"day\":278.45,\"min\":276.25,\"max\":279.35,\"night\":277.44,\"eve\":277.95,\"morn\":277.55},\"feels_like\":{\"day\":276.64,\"night\":276.1,\"eve\":277.95,\"morn\":276.1},\"pressure\":1022,\"humidity\":93,\"dew_point\":277.44,\"wind_speed\":2.23,\"wind_deg\":227,\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderate rain\",\"icon\":\"10d\"}],\"clouds\":100,\"pop\":1,\"rain\":12.29,\"uvi\":1}]}";
void setup() {
Serial.begin(115200);
Serial.println(F("Start..."));
JsonObject& root = jsonBuffer.parseObject(json);
if (!root.success()) {
Serial.println("parseObject() failed");
}
float lat = root["lat"];
float lon = root["lon"];
const char *tz = root["timezone"];
long zeit[5] = {0};
long sunrise[5] = {0};
for (int i = 0; i < 5; i++)
{
zeit[i] = root["daily"][i]["dt"];
sunrise[i] = root["daily"][i]["sunrise"];
}
Serial.println(lat);
Serial.println(lon);
for (int i = 0; i < 5; i++)
{
Serial.print(zeit[i]);
Serial.print(F("\t"));
Serial.println(sunrise[i]);
}
}
void loop() {}
Und die Ausgabe liefert für die ersten 5 Einträge die Zeit "dt" sowie die Zeit "sunrise" im Unix-Format.
14:58:05.016 -> Start...
14:58:05.016 -> 51.70
14:58:05.016 -> 7.40
14:58:05.016 -> 1617793200 1617771094
14:58:05.016 -> 1617879600 1617857360
14:58:05.016 -> 1617966000 1617943625
14:58:05.050 -> 1618052400 1618029892
14:58:05.050 -> 1618138800 1618116159
Willst Du also morgen haben, nimmst Du als wert [i] nur die 0; für übermorgen die 1 und so weiter...
Na das ist wirklich eine lib, von der ich überzeiugt bin das sie die Arbeit sehr vereinfacht 