Sonnenaufgang vom OpenWeatherMap

Dann suche mit strstr nach ""sunrise":" und gib 10 Zeichen weiter an atol, dann das Gleiche mit ""sunset"" und 8 Zeichen später. Dann hast Du die Werte für den 1. Tag.

Gruß Tommy

taximan:
{"lat":51.7,"lon":7.4,"timezone":"Europe/Berlin","timezone_offset":7200,"daily":[
{"dt":1617793200,"sunrise":1617771094,"sunset":1617819181,"........
{"dt":1617879600,"sunrise":1617857360,"sunset":1617905682,".......

liefert die Daten für heute und die nächsten beiden Tage.

Nene!
Der liefert jeden Tag 13:00:00 für insgesamt 8 Tage.

Wie sieht denn Dein JSon - Teiler für einen Datensatz aus?
Das muss doch daran angelehnt umzusetzen sein.

my_xy_projekt:
Wie sieht denn Dein JSon - Teiler für einen Datensatz aus?

Da versuche ich mich gerade rein zu lesen / arbeiten.
Die Daten die hinter Sunrise/set stehen hätte ich gerne als Variablen, sind übrigens die "richtigen".

jsonBuffer = httpGETRequest(serverPath.c_str());

Serial.println(jsonBuffer);

JSONVar myObject = JSON.parse(jsonBuffer);
if (JSON.typeof(myObject) == "undefined") {
  Serial.println("Parsing input failed!");
  return;
}

//long t2 = myObject["daily"]["sunrise"];




hilft dir das weiter?

taximan:
hilft dir das weiter?

Nein.
Du schreibst im Eröffnungspost

Für den aktuellen (current) Tag funktioniert das problemlos,

Wie?

habe es hiermit hinbekommen, ist jedoch nur für den laufenden Tag.

String serverPath = "http://api.openweathermap.org/data/2.5/weather?q" + city + "," + countryCode + "&APPID=" + openWeatherMapApiKey ;

Ich wurschtel mich hier gerade durch, sieht einigermaßen vielversprechend aus:

https://randomnerdtutorials.com/decoding-and-encoding-json-with-arduino-or-esp8266/

melde mich morgen wieder, wird sonst zu spät

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: https://forum.arduino.cc/index.php?topic=735808.msg4952800#msg4952800
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 :wink:

Jau, läuft bei mir auch. Dass das recht einfach ist, dachte ich mir gestern abend auch, ich hatte nur keine Zeit mehr zum ausprobieren. Danke dir für deine Mühe. Vielleicht kann es der ein oder andere ja auch gebrauchen.

taximan:
Jau, läuft bei mir auch. Vielleicht kann es der ein oder andere ja auch gebrauchen.

Na dann hier meine Komplettlösung: An der einzigen Stelle wo Du was ändern könntest, ist kommentiert

#include <ArduinoJson.h>

StaticJsonBuffer<3000> 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(F("parseObject() failed"));
  }
  unsigned long sunrise = 0;
  unsigned long sunset = 0;
  unsigned long tzo = 0;
  byte tag = 0; // Forecast: maximal 7
  sunrise = root["daily"][tag]["sunrise"];
  sunset = root["daily"][tag]["sunset"];

  tzo = root["timezone_offset"];
  Serial.print(sunrise);
  Serial.print(F("\t"));
  Serial.println(sunset);
  Serial.print(F("Mit Berücksichtigung der Zeitzone: Sonnenaufgang: "));
  Serial.print(((sunrise + tzo) % 86400) / 3600);
  Serial.print(":");
  Serial.print(((sunrise + tzo) % 86400) % 3600 / 60);
  Serial.print(F(" Sonnenuntergang: "));
  Serial.print(((sunset + tzo) % 86400) / 3600);
  Serial.print(":");
  Serial.println(((sunset + tzo) % 86400) % 3600 / 60);
}

void loop() {}

Ein Fehler ist dann doch aufgetaucht:

StaticJsonBuffer<4500> jsonBuffer;

‘StaticJsonBuffer’ does not name a type

Wieso läuft das im Beispielscript, und in einem anderem Script (auf demselben Rechner) nicht?
LIB ist die 5.13.2

Lib nicht eingebunden?

Gruß Tommy

taximan:
Ein Fehler ist dann doch aufgetaucht:

StaticJsonBuffer<4500> jsonBuffer;

‘StaticJsonBuffer’ does not name a type

Wieso läuft das im Beispielscript, und in einem anderem Script (auf demselben Rechner) nicht?
LIB ist die 5.13.2

Nein kein Fehler.
Ich ahne und befürchte was.

Bitte unbedingt die komplette Fehlermeldung unten aus dem Fenster rauskopieren und mir hier in codeTags einfügen.

#include <Arduino_JSON.h>

esp-wetter:50:1: error: 'StaticJsonBuffer' does not name a type
 StaticJsonBuffer<4500> jBuffer;

Also eingebunden ist die schon…
Was mich so stutzig macht, der eine Script wird compiliert, der andere nicht…

taximan:

#include <Arduino_JSON.h>

esp-wetter:50:1: error: ‘StaticJsonBuffer’ does not name a type
StaticJsonBuffer<4500> jBuffer;




Also eingebunden ist die schon....
Was mich so stutzig macht, der eine Script wird compiliert, der andere nicht...

Nochmal:
Die komplette Meldung unten aus dem schwarzen Fenster…
Das die eingebunden ist, habe ich vorausgesetzt.

Um das abzukürzen bitte Deinen Sketch.
Ne - mach mal nur ne komplette Kopie unten aus dem Fenster… Ich hab eh keinen ESP

Hier der Sketch mit der Fehlermeldung; sind 750 Zeilen, daher im Anhang

Das Ganze läuft / soll laufen auf einem ESP12F

taximan:
Hier der Sketch mit der Fehlermeldung; sind 750 Zeilen, daher im Anhang

PM LESEN!!!!

Nanu? Keine öffentliche Besprechung des Problems?

Gruß Tommy

#include <Arduino_JSON.h>

hatte sich reingemogelt, ist die falsche (mit Unterstrich)

Tommy56:
Nanu? Keine öffentliche Besprechung des Problems?

Doch.
Nur der Hinweis, das da was schief gelaufen ist - und das möchte ich nicht öffentlich darlegen!

taximan:
ist die falsche (mit Unterstrich)

Ja das auch - Deine Entscheidung ob Du öffentlich machen möchtest, warum Du eine PM bekommen hast....

API soll man ja nicht öffentlich machen, danke für den Hinweis

taximan:
API soll man ja nicht öffentlich machen, danke für den Hinweis

Und die PW für Wlan auch nicht :wink:

Damit denke ich ist es erklärt und es kann sich beruhigt in die Nacht begeben werden.

Beste Grüße!