5 дней ежедневных прогнозов, результат в архиве.
Тариф - “Free”, 50 запросов в сутки, необходимо получить ключ API.
Архив: esp8266_AccuWeather.zip — Яндекс Диск
esp8266_AccuWeather.ino
// 10.05.2023 23-59
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <ArduinoJson.h> //ver. - 6.20.0
#include "functions.h"
#include "settings.h" // настройки в файле settings.h
//------------------------------------------------
#define Serial_Print // отладка для работы - закоментить
//------------------------------------------------
weather_t weather;
unsigned long lastTime = 0;
int wifi_signal = -120;
bool decode_json(Stream& jsonStr);
bool getWeather();
String convert_unix_time(int unix_time);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println(".");
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
} //end while
Serial.println("");
Serial.print("WiFi подключен. IP: "); Serial.println(WiFi.localIP());
wifi_signal = WiFi.RSSI();
Serial.print("Уровень сигнала WiFi: "); Serial.println(wifi_signal);
Serial.print("Обновление через: "); Serial.print(timerDelay); Serial.println(" минут.");
} //end setup
void loop() {
if ((millis() - lastTime) > timerDelay * 60*1000) {
getWeather();
Serial.print(convert_unix_time(weather.Headline.EffectiveEpochDate));
lastTime = millis();
}
}//end loop
bool decode_json(Stream& jsonStr)
{
DynamicJsonDocument doc(30000);
DeserializationError error = deserializeJson(doc, jsonStr);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return false;
} else
{
Serial.println("deserializeJson() без ошибок.");
JsonObject doc_Accu = doc.as<JsonObject>();
weather.Headline.EffectiveDate = doc_Accu["Headline"]["EffectiveDate"].as<const char *>();
weather.Headline.EffectiveEpochDate = doc_Accu["Headline"]["EffectiveEpochDate"].as<long>();;
weather.Headline.Severity = doc_Accu["Headline"]["Severity"].as<int>();;
weather.Headline.Text = doc_Accu["Headline"]["Text"].as<const char *>();
weather.Headline.Category = doc_Accu["Headline"]["Category"].as<const char *>();
weather.Headline.EndDate = doc_Accu["Headline"]["EndDate"].as<const char *>();
weather.Headline.EndEpochDate = doc_Accu["Headline"]["EndEpochDate"].as<int>();;
weather.Headline.MobileLink = doc_Accu["Headline"]["MobileLink"].as<const char *>();
weather.Headline.Link = doc_Accu["Headline"]["Link"].as<const char *>();
for (uint8_t i = 0; i < 5; i++)
{
weather.DailyForecasts[i].Date = doc_Accu["DailyForecasts"][i]["Date"].as<const char *>();
weather.DailyForecasts[i].EpochDate = doc_Accu["DailyForecasts"][i]["EpochDate"].as<long>();
// weather.DailyForecasts[i].Temperature = doc_Accu["DailyForecasts"][i]["Temperature"].as<const char *>();
weather.DailyForecasts[i].Sun_Rise = doc_Accu["DailyForecasts"][i]["Sun"]["Rise"].as<const char *>();
weather.DailyForecasts[i].Sun_EpochRise = doc_Accu["DailyForecasts"][i]["Sun"]["EpochRise"].as<long>();
weather.DailyForecasts[i].Sun_Set = doc_Accu["DailyForecasts"][i]["Sun"]["Set"].as<const char *>();
weather.DailyForecasts[i].Sun_EpochSet = doc_Accu["DailyForecasts"][i]["Sun"]["EpochSet"].as<long>();
weather.DailyForecasts[i].Moon_Rise = doc_Accu["DailyForecasts"][i]["Moon"]["Rise"].as<const char *>();
weather.DailyForecasts[i].Moon_EpochRise = doc_Accu["DailyForecasts"][i]["Moon"]["EpochRise"].as<long>();
weather.DailyForecasts[i].Moon_Set = doc_Accu["DailyForecasts"][i]["Moon"]["Set"].as<const char *>();
weather.DailyForecasts[i].Moon_EpochSet = doc_Accu["DailyForecasts"][i]["Moon"]["EpochSet"].as<long>();
weather.DailyForecasts[i].Moon_Phase = doc_Accu["DailyForecasts"][i]["Moon"]["Phase"].as<const char *>();
weather.DailyForecasts[i].Moon_Age = doc_Accu["DailyForecasts"][i]["Moon"]["Age"].as<long>();
weather.DailyForecasts[i].Temperature_min_Value = doc_Accu["DailyForecasts"][i]["Temperature"]["Minimum"]["Value"].as<float>();
weather.DailyForecasts[i].Temperature_min_Unit = doc_Accu["DailyForecasts"][i]["Temperature"]["Minimum"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Temperature_min_UnitType = doc_Accu["DailyForecasts"][i]["Temperature"]["Minimum"]["UnitType"].as<int>();
weather.DailyForecasts[i].Temperature_max_Value = doc_Accu["DailyForecasts"][i]["Temperature"]["Maximum"]["Value"].as<float>();
weather.DailyForecasts[i].Temperature_max_Unit = doc_Accu["DailyForecasts"][i]["Temperature"]["Maximum"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Temperature_max_UnitType = doc_Accu["DailyForecasts"][i]["Temperature"]["Maximum"]["UnitType"].as<int>();
weather.DailyForecasts[i].RealFeelTemperature_min_Value = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Minimum"]["Value"].as<float>();
weather.DailyForecasts[i].RealFeelTemperature_min_Unit = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Minimum"]["Unit"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperature_min_UnitType = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Minimum"]["UnitType"].as<int>();
weather.DailyForecasts[i].RealFeelTemperature_min_Phrase = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Minimum"]["Phrase"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperature_max_Value = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Maximum"]["Value"].as<float>();
weather.DailyForecasts[i].RealFeelTemperature_max_Unit = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Maximum"]["Unit"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperature_max_UnitType = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Maximum"]["UnitType"].as<int>();
weather.DailyForecasts[i].RealFeelTemperature_max_Phrase = doc_Accu["DailyForecasts"][i]["RealFeelTemperature"]["Minimum"]["Phrase"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperatureShade_min_Value = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Minimum"]["Value"].as<float>();
weather.DailyForecasts[i].RealFeelTemperatureShade_min_Unit = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Minimum"]["Unit"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperatureShade_min_UnitType = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Minimum"]["UnitType"].as<int>();
weather.DailyForecasts[i].RealFeelTemperatureShade_min_Phrase = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Minimum"]["Phrase"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperatureShade_max_Value = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Maximum"]["Value"].as<float>();
weather.DailyForecasts[i].RealFeelTemperatureShade_max_Unit = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Maximum"]["Unit"].as<const char *>();
weather.DailyForecasts[i].RealFeelTemperatureShade_max_UnitType = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Maximum"]["UnitType"].as<int>();
weather.DailyForecasts[i].RealFeelTemperatureShade_max_Phrase = doc_Accu["DailyForecasts"][i]["RealFeelTemperatureShade"]["Maximum"]["Phrase"].as<const char *>();
weather.DailyForecasts[i].HoursOfSun = doc_Accu["DailyForecasts"][i]["HoursOfSun"].as<float>();
weather.DailyForecasts[i].DegreeDaySummary_Heating_Value = doc_Accu["DailyForecasts"][i]["DegreeDaySummary"]["Heating"]["Value"].as<int>();
weather.DailyForecasts[i].DegreeDaySummary_Heating_Unit = doc_Accu["DailyForecasts"][i]["DegreeDaySummary"]["Heating"]["Unit"].as<const char *>();
weather.DailyForecasts[i].DegreeDaySummary_Heating_UnitType = doc_Accu["DailyForecasts"][i]["DegreeDaySummary"]["Heating"]["UnitType"].as<int>();
weather.DailyForecasts[i].DegreeDaySummary_Cooling_Value = doc_Accu["DailyForecasts"][i]["DegreeDaySummary"]["Cooling"]["Value"].as<int>();
weather.DailyForecasts[i].DegreeDaySummary_Cooling_Unit = doc_Accu["DailyForecasts"][i]["DegreeDaySummary"]["Cooling"]["Unit"].as<const char *>();
weather.DailyForecasts[i].DegreeDaySummary_Cooling_UnitType = doc_Accu["DailyForecasts"][i]["DegreeDaySummary"]["Cooling"]["UnitType"].as<int>();
for (uint8_t j = 0; j < 6; j++)
{
weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Name = doc_Accu["DailyForecasts"][i]["AirAndPollen"][j]["Name"].as<const char *>();
weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Value = doc_Accu["DailyForecasts"][i]["AirAndPollen"][j]["Value"].as<int>();
weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Category = doc_Accu["DailyForecasts"][i]["AirAndPollen"][j]["Category"].as<const char *>();
weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_CategoryValue = doc_Accu["DailyForecasts"]["AirAndPollen"][j]["CategoryValue"].as<int>();
weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Type = doc_Accu["DailyForecasts"][i]["AirAndPollen"][j]["Type"].as<const char *>();
}//end for
weather.DailyForecasts[i].Day_Icon = doc_Accu["DailyForecasts"][i]["Day"]["Icon"].as<int>();
weather.DailyForecasts[i].Day_IconPhrase = doc_Accu["DailyForecasts"][i]["Day"]["IconPhrase"].as<const char *>();
weather.DailyForecasts[i].Day_HasPrecipitation = doc_Accu["DailyForecasts"][i]["Day"]["HasPrecipitation"].as<bool>();
weather.DailyForecasts[i].Day_PrecipitationType = doc_Accu["DailyForecasts"][i]["Day"]["PrecipitationType"].as<const char *>();
weather.DailyForecasts[i].Day_PrecipitationIntensity = doc_Accu["DailyForecasts"][i]["Day"]["PrecipitationIntensity"].as<const char *>();
weather.DailyForecasts[i].Day_ShortPhrase = doc_Accu["DailyForecasts"][i]["Day"]["ShortPhrase"].as<const char *>();
weather.DailyForecasts[i].Day_LongPhrase = doc_Accu["DailyForecasts"][i]["Day"]["LongPhrase"].as<const char *>();
weather.DailyForecasts[i].Day_PrecipitationProbability = doc_Accu["DailyForecasts"][i]["Day"]["PrecipitationProbability"].as<int>();
weather.DailyForecasts[i].Day_ThunderstormProbability = doc_Accu["DailyForecasts"][i]["Day"]["ThunderstormProbability"].as<int>();
weather.DailyForecasts[i].Day_RainProbability = doc_Accu["DailyForecasts"][i]["Day"]["RainProbability"].as<int>();
weather.DailyForecasts[i].Day_SnowProbability = doc_Accu["DailyForecasts"][i]["Day"]["SnowProbability"].as<int>();
weather.DailyForecasts[i].Day_IceProbability = doc_Accu["DailyForecasts"][i]["Day"]["IceProbability"].as<int>();
weather.DailyForecasts[i].Day_Wind_Speed_Value = doc_Accu["DailyForecasts"][i]["Day"]["Wind"]["Speed"]["Value"].as<float>();
weather.DailyForecasts[i].Day_Wind_Speed_Unit = doc_Accu["DailyForecasts"][i]["Day"]["Wind"]["Speed"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_Wind_Speed_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["Wind"]["Speed"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_Wind_Direction_Degrees = doc_Accu["DailyForecasts"][i]["Day"]["Wind"]["Direction"]["Degrees"].as<int>();
weather.DailyForecasts[i].Day_Wind_Direction_Localized = doc_Accu["DailyForecasts"][i]["Day"]["Wind"]["Direction"]["Localized"].as<const char *>();
weather.DailyForecasts[i].Day_Wind_Direction_English = doc_Accu["DailyForecasts"][i]["Day"]["Wind"]["Direction"]["English"].as<const char *>();
weather.DailyForecasts[i].Day_WindGust_Speed_Value = doc_Accu["DailyForecasts"][i]["Day"]["WindGust"]["Speed"]["Value"].as<float>();
weather.DailyForecasts[i].Day_WindGust_Speed_Unit = doc_Accu["DailyForecasts"][i]["Day"]["WindGust"]["Speed"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_WindGust_Speed_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["WindGust"]["Speed"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_WindGust_Direction_Degrees = doc_Accu["DailyForecasts"][i]["Day"]["WindGust"]["Direction"]["Degrees"].as<int>();
weather.DailyForecasts[i].Day_WindGust_Direction_Localized = doc_Accu["DailyForecasts"][i]["Day"]["WindGust"]["Direction"]["Localized"].as<const char *>();
weather.DailyForecasts[i].Day_WindGust_Direction_English = doc_Accu["DailyForecasts"][i]["Day"]["WindGust"]["Direction"]["English"].as<const char *>();
weather.DailyForecasts[i].Day_TotalLiquid_Value = doc_Accu["DailyForecasts"][i]["Day"]["TotalLiquid"]["Value"].as<int>();
weather.DailyForecasts[i].Day_TotalLiquid_Unit = doc_Accu["DailyForecasts"][i]["Day"]["TotalLiquid"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_TotalLiquid_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["TotalLiquid"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_Rain_Value = doc_Accu["DailyForecasts"][i]["Day"]["Rain"]["Value"].as<int>();
weather.DailyForecasts[i].Day_Rain_Unit = doc_Accu["DailyForecasts"][i]["Day"]["Rain"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_Rain_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["Rain"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_Snow_Value = doc_Accu["DailyForecasts"][i]["Day"]["Snow"]["Value"].as<int>();
weather.DailyForecasts[i].Day_Snow_Unit = doc_Accu["DailyForecasts"][i]["Day"]["Snow"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_Snow_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["Snow"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_Ice_Value = doc_Accu["DailyForecasts"][i]["Day"]["Ice"]["Value"].as<int>();
weather.DailyForecasts[i].Day_Ice_Unit = doc_Accu["DailyForecasts"][i]["Day"]["Ice"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_Ice_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["Ice"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_HoursOfPrecipitation = doc_Accu["DailyForecasts"][i]["Day"]["HoursOfPrecipitation"].as<int>();
weather.DailyForecasts[i].Day_HoursOfRain = doc_Accu["DailyForecasts"][i]["Day"]["HoursOfRain"].as<int>();
weather.DailyForecasts[i].Day_HoursOfSnow = doc_Accu["DailyForecasts"][i]["Day"]["HoursOfSnow"].as<int>();
weather.DailyForecasts[i].Day_HoursOfIce = doc_Accu["DailyForecasts"][i]["Day"]["HoursOfIce"].as<int>();
weather.DailyForecasts[i].Day_CloudCover = doc_Accu["DailyForecasts"][i]["Day"]["CloudCover"].as<int>();
weather.DailyForecasts[i].Day_Evapotranspiration_Value = doc_Accu["DailyForecasts"][i]["Day"]["Evapotranspiration"]["Value"].as<float>();
weather.DailyForecasts[i].Day_Evapotranspiration_Unit = doc_Accu["DailyForecasts"][i]["Day"]["Evapotranspiration"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_Evapotranspiration_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["Evapotranspiration"]["UnitType"].as<int>();
weather.DailyForecasts[i].Day_SolarIrradiance_Value = doc_Accu["DailyForecasts"][i]["Day"]["SolarIrradiance"]["Value"].as<float>();
weather.DailyForecasts[i].Day_SolarIrradiance_Unit = doc_Accu["DailyForecasts"][i]["Day"]["SolarIrradiance"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Day_SolarIrradiance_UnitType = doc_Accu["DailyForecasts"][i]["Day"]["SolarIrradiance"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_Icon = doc_Accu["DailyForecasts"][i]["Night"]["Icon"].as<int>();
weather.DailyForecasts[i].Night_IconPhrase = doc_Accu["DailyForecasts"][i]["Night"]["IconPhrase"].as<const char *>();
weather.DailyForecasts[i].Night_HasPrecipitation = doc_Accu["DailyForecasts"][i]["Night"]["HasPrecipitation"].as<bool>();
weather.DailyForecasts[i].Night_ShortPhrase = doc_Accu["DailyForecasts"][i]["Night"]["ShortPhrase"].as<const char *>();
weather.DailyForecasts[i].Night_LongPhrase = doc_Accu["DailyForecasts"][i]["Night"]["LongPhrase"].as<const char *>();
weather.DailyForecasts[i].Night_PrecipitationProbability = doc_Accu["DailyForecasts"][i]["Night"]["PrecipitationProbability"].as<int>();
weather.DailyForecasts[i].Night_ThunderstormProbability = doc_Accu["DailyForecasts"][i]["Night"]["ThunderstormProbability"].as<int>();
weather.DailyForecasts[i].Night_RainProbability = doc_Accu["DailyForecasts"][i]["Night"]["RainProbability"].as<int>();
weather.DailyForecasts[i].Night_SnowProbability = doc_Accu["DailyForecasts"][i]["Night"]["SnowProbability"].as<int>();
weather.DailyForecasts[i].Night_IceProbability = doc_Accu["DailyForecasts"][i]["Night"]["IceProbability"].as<int>();
weather.DailyForecasts[i].Night_Wind_Speed_Value = doc_Accu["DailyForecasts"][i]["Night"]["Wind"]["Speed"]["Value"].as<float>();
weather.DailyForecasts[i].Night_Wind_Speed_Unit = doc_Accu["DailyForecasts"][i]["Night"]["Wind"]["Speed"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_Wind_Speed_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["Wind"]["Speed"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_Wind_Direction_Degrees = doc_Accu["DailyForecasts"][i]["Night"]["Wind"]["Direction"]["Degrees"].as<int>();
weather.DailyForecasts[i].Night_Wind_Direction_Localized = doc_Accu["DailyForecasts"][i]["Night"]["Wind"]["Direction"]["Localized"].as<const char *>();
weather.DailyForecasts[i].Night_Wind_Direction_English = doc_Accu["DailyForecasts"][i]["Night"]["Wind"]["Direction"]["English"].as<const char *>();
weather.DailyForecasts[i].Night_WindGust_Speed_Value = doc_Accu["DailyForecasts"][i]["Night"]["WindGust"]["Speed"]["Value"].as<float>();
weather.DailyForecasts[i].Night_WindGust_Speed_Unit = doc_Accu["DailyForecasts"][i]["Night"]["WindGust"]["Speed"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_WindGust_Speed_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["WindGust"]["Speed"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_WindGust_Direction_Degrees = doc_Accu["DailyForecasts"][i]["Night"]["WindGust"]["Direction"]["Degrees"].as<int>();
weather.DailyForecasts[i].Night_WindGust_Direction_Localized = doc_Accu["DailyForecasts"][i]["Night"]["WindGust"]["Direction"]["Localized"].as<const char *>();
weather.DailyForecasts[i].Night_WindGust_Direction_English = doc_Accu["DailyForecasts"][i]["Night"]["WindGust"]["Direction"]["English"].as<const char *>();
weather.DailyForecasts[i].Night_TotalLiquid_Value = doc_Accu["DailyForecasts"][i]["Night"]["TotalLiquid"]["Value"].as<int>();
weather.DailyForecasts[i].Night_TotalLiquid_Unit = doc_Accu["DailyForecasts"][i]["Night"]["TotalLiquid"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_TotalLiquid_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["TotalLiquid"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_Rain_Value = doc_Accu["DailyForecasts"][i]["Night"]["Rain"]["Value"].as<int>();
weather.DailyForecasts[i].Night_Rain_Unit = doc_Accu["DailyForecasts"][i]["Night"]["Rain"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_Rain_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["Rain"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_Snow_Value = doc_Accu["DailyForecasts"][i]["Night"]["Snow"]["Value"].as<int>();
weather.DailyForecasts[i].Night_Snow_Unit = doc_Accu["DailyForecasts"][i]["Night"]["Snow"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_Snow_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["Snow"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_Ice_Value = doc_Accu["DailyForecasts"][i]["Night"]["Ice"]["Value"].as<int>();
weather.DailyForecasts[i].Night_Ice_Unit = doc_Accu["DailyForecasts"][i]["Night"]["Ice"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_Ice_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["Ice"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_HoursOfPrecipitation = doc_Accu["DailyForecasts"][i]["Night"]["HoursOfPrecipitation"].as<int>();
weather.DailyForecasts[i].Night_HoursOfRain = doc_Accu["DailyForecasts"][i]["Night"]["HoursOfRain"].as<int>();
weather.DailyForecasts[i].Night_HoursOfSnow = doc_Accu["DailyForecasts"][i]["Night"]["HoursOfSnow"].as<int>();
weather.DailyForecasts[i].Night_HoursOfIce = doc_Accu["DailyForecasts"][i]["Night"]["HoursOfIce"].as<int>();
weather.DailyForecasts[i].Night_CloudCover = doc_Accu["DailyForecasts"][i]["Night"]["CloudCover"].as<int>();
weather.DailyForecasts[i].Night_Evapotranspiration_Value = doc_Accu["DailyForecasts"][i]["Night"]["Evapotranspiration"]["Value"].as<float>();
weather.DailyForecasts[i].Night_Evapotranspiration_Unit = doc_Accu["DailyForecasts"][i]["Night"]["Evapotranspiration"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_Evapotranspiration_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["Evapotranspiration"]["UnitType"].as<int>();
weather.DailyForecasts[i].Night_SolarIrradiance_Value = doc_Accu["DailyForecasts"][i]["Night"]["SolarIrradiance"]["Value"].as<float>();
weather.DailyForecasts[i].Night_SolarIrradiance_Unit = doc_Accu["DailyForecasts"][i]["Night"]["SolarIrradiance"]["Unit"].as<const char *>();
weather.DailyForecasts[i].Night_SolarIrradiance_UnitType = doc_Accu["DailyForecasts"][i]["Night"]["SolarIrradiance"]["UnitType"].as<int>();
// weather.DailyForecasts[i].Sources = doc_Accu["DailyForecasts"][i]["Sources"].as<const char *>();
// weather.DailyForecasts[i].MobileLink = doc_Accu["DailyForecasts"][i]["MobileLink"].as<const char *>();
weather.DailyForecasts[i].Link = doc_Accu["DailyForecasts"][i]["Link"].as<const char *>();
}//end for
return true;
}//end else
}//end decode_json
bool getWeather()
{
bool flag_weater;
if(WiFi.status()== WL_CONNECTED){ // проверяем соединение WiFi
HTTPClient http; // Отправляем HTTP GET запрос
//"http://dataservice.accuweather.com/forecasts/v1/daily/5day/288916?apikey=mstLgzZHMTJ7O7xtYl0jYzIypcalK5qu&language=ru-ru&details=true&metric=true"
String _host = "http://dataservice.accuweather.com";
String _uri = "/forecasts/v1/daily/5day/" + regionID + "?apikey=" + api_key + "&language=" + language + "&details=" + details + "&metric=true";
WiFiClient client;
client.stop();
http.begin(client, _host + _uri);
int httpCode = http.GET();
Serial.println(_host + _uri);
Serial.println(httpCode);
if (httpCode > 0) {
Stream& response = http.getStream(); // ответ accuweather
decode_json(response); // парсинг данных из JsonObject
#ifdef Serial_Print // отладка
Serial.println(" - - Headline - - ");
Serial.print("Headline.EffectiveDate "); Serial.println(weather.Headline.EffectiveDate);
Serial.print("Headline.EffectiveEpochDate "); Serial.println(weather.Headline.EffectiveEpochDate);
Serial.print("Headline.Severity "); Serial.println(weather.Headline.Severity);
Serial.print("Headline.Text "); Serial.println(weather.Headline.Text);
Serial.print("Headline.Category "); Serial.println(weather.Headline.Category);
Serial.print("Headline.EndDate "); Serial.println(weather.Headline.EndDate);
Serial.print("Headline.EndEpochDate "); Serial.println(weather.Headline.EndEpochDate);
Serial.print("Headline.MobileLink "); Serial.println(weather.Headline.MobileLink);
Serial.print("Headline.Link "); Serial.println(weather.Headline.Link);
for (uint8_t i = 0; i < 5; i++)
{
Serial.print(" - - DailyForecasts: = "); Serial.println(i);
Serial.print("DailyForecasts.Date: = "); Serial.println(weather.DailyForecasts[i].Date);
Serial.print("DailyForecasts.EpochDate: = "); Serial.println(weather.DailyForecasts[i].EpochDate);
// Serial.print("DailyForecasts.Temperature: = "); Serial.println(weather.DailyForecasts[i].Temperature);
Serial.print("DailyForecasts.Sun_Rise: = "); Serial.println(weather.DailyForecasts[i].Sun_Rise);
Serial.print("DailyForecasts.Sun_EpochRise: = "); Serial.println(weather.DailyForecasts[i].Sun_EpochRise);
Serial.print("DailyForecasts.Sun_Set: = "); Serial.println(weather.DailyForecasts[i].Sun_Set);
Serial.print("DailyForecasts.Sun_EpochSet: = "); Serial.println(weather.DailyForecasts[i].Sun_EpochSet);
Serial.print("DailyForecasts.Moon_Rise: = "); Serial.println(weather.DailyForecasts[i].Moon_Rise);
Serial.print("DailyForecasts.Moon_EpochRise: = "); Serial.println(weather.DailyForecasts[i].Moon_EpochRise);
Serial.print("DailyForecasts.Moon_Set: = "); Serial.println(weather.DailyForecasts[i].Moon_Set);
Serial.print("DailyForecasts.Moon_EpochSet: = "); Serial.println(weather.DailyForecasts[i].Moon_EpochSet);
Serial.print("DailyForecasts.Moon_Phase: = "); Serial.println(weather.DailyForecasts[i].Moon_Phase);
Serial.print("DailyForecasts.Moon_Age: = "); Serial.println(weather.DailyForecasts[i].Moon_Age);
Serial.print("DailyForecasts.Temperature_min_Value: = "); Serial.println(weather.DailyForecasts[i].Temperature_min_Value);
Serial.print("DailyForecasts.Temperature_min_Unit: = "); Serial.println(weather.DailyForecasts[i].Temperature_min_Unit);
Serial.print("DailyForecasts.Temperature_min_UnitType: = "); Serial.println(weather.DailyForecasts[i].Temperature_min_UnitType);
Serial.print("DailyForecasts.Temperature_max_Value: = "); Serial.println(weather.DailyForecasts[i].Temperature_max_Value);
Serial.print("DailyForecasts.Temperature_max_Unit: = "); Serial.println(weather.DailyForecasts[i].Temperature_max_Unit);
Serial.print("DailyForecasts.Temperature_max_UnitType: = "); Serial.println(weather.DailyForecasts[i].Temperature_max_UnitType);
Serial.print("DailyForecasts.RealFeelTemperature_min_Value: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_min_Value);
Serial.print("DailyForecasts.RealFeelTemperature_min_Unit: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_min_Unit);
Serial.print("DailyForecasts.RealFeelTemperature_min_UnitType: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_min_UnitType);
Serial.print("DailyForecasts.RealFeelTemperature_min_Phrase: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_min_Phrase);
Serial.print("DailyForecasts.RealFeelTemperature_max_Value: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_max_Value);
Serial.print("DailyForecasts.RealFeelTemperature_max_Unit: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_max_Unit);
Serial.print("DailyForecasts.RealFeelTemperature_max_UnitType: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_max_UnitType);
Serial.print("DailyForecasts.RealFeelTemperature_max_Phrase: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperature_max_Phrase);
Serial.print("DailyForecasts.RealFeelTemperatureShade_min_Value: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_min_Value);
Serial.print("DailyForecasts.RealFeelTemperatureShade_min_Unit: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_min_Unit);
Serial.print("DailyForecasts.RealFeelTemperatureShade_min_UnitType: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_min_UnitType);
Serial.print("DailyForecasts.RealFeelTemperatureShade_min_Phrase: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_min_Phrase);
Serial.print("DailyForecasts.RealFeelTemperatureShade_max_Value: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_max_Value);
Serial.print("DailyForecasts.RealFeelTemperatureShade_max_Unit: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_max_Unit);
Serial.print("DailyForecasts.RealFeelTemperatureShade_max_UnitType: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_max_UnitType);
Serial.print("DailyForecasts.RealFeelTemperatureShade_max_Phrase: = "); Serial.println(weather.DailyForecasts[i].RealFeelTemperatureShade_max_Phrase);
Serial.print("DailyForecasts.HoursOfSun: = "); Serial.println(weather.DailyForecasts[i].HoursOfSun);
Serial.print("DailyForecasts.DegreeDaySummary_Heating_Value: = "); Serial.println(weather.DailyForecasts[i].DegreeDaySummary_Heating_Value);
Serial.print("DailyForecasts.DegreeDaySummary_Heating_Unit: = "); Serial.println(weather.DailyForecasts[i].DegreeDaySummary_Heating_Unit);
Serial.print("DailyForecasts.DegreeDaySummary_Heating_UnitType: = "); Serial.println(weather.DailyForecasts[i].DegreeDaySummary_Heating_UnitType);
Serial.print("DailyForecasts.DegreeDaySummary_Cooling_Value: = "); Serial.println(weather.DailyForecasts[i].DegreeDaySummary_Cooling_Value);
Serial.print("DailyForecasts.DegreeDaySummary_Cooling_Unit: = "); Serial.println(weather.DailyForecasts[i].DegreeDaySummary_Cooling_Unit);
Serial.print("DailyForecasts.DegreeDaySummary_Cooling_UnitType: = "); Serial.println(weather.DailyForecasts[i].DegreeDaySummary_Cooling_UnitType);
for (uint8_t j = 0; j < 6; j++)
{
Serial.print(" - - AirAndPollen: = "); Serial.println(j);
Serial.print("DailyForecasts.AirAndPollen_Name: = "); Serial.println(weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Name);
Serial.print("DailyForecasts.AirAndPollen_Value: = "); Serial.println(weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Value);
Serial.print("DailyForecasts.AirAndPollen_Category: = "); Serial.println(weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Category);
Serial.print("DailyForecasts.AirAndPollen_CategoryValue: = "); Serial.println(weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_CategoryValue);
Serial.print("DailyForecasts.AirAndPollen_Type: = "); Serial.println(weather.DailyForecasts[i].AirAndPollen[j].AirAndPollen_Type);
}//end for
Serial.print("DailyForecasts.Day_Icon: = "); Serial.println(weather.DailyForecasts[i].Day_Icon);
Serial.print("DailyForecasts.Day_IconPhrase: = "); Serial.println(weather.DailyForecasts[i].Day_IconPhrase);
Serial.print("DailyForecasts.Day_HasPrecipitation: = "); Serial.println(weather.DailyForecasts[i].Day_HasPrecipitation);
Serial.print("DailyForecasts.Day_PrecipitationType: = "); Serial.println(weather.DailyForecasts[i].Day_PrecipitationType);
Serial.print("DailyForecasts.Day_PrecipitationIntensity: = "); Serial.println(weather.DailyForecasts[i].Day_PrecipitationIntensity);
Serial.print("DailyForecasts.Day_ShortPhrase: = "); Serial.println(weather.DailyForecasts[i].Day_ShortPhrase);
Serial.print("DailyForecasts.Day_LongPhrase: = "); Serial.println(weather.DailyForecasts[i].Day_LongPhrase);
Serial.print("DailyForecasts.Day_PrecipitationProbability: = "); Serial.println(weather.DailyForecasts[i].Day_PrecipitationProbability);
Serial.print("DailyForecasts.Day_ThunderstormProbability: = "); Serial.println(weather.DailyForecasts[i].Day_ThunderstormProbability);
Serial.print("DailyForecasts.Day_RainProbability: = "); Serial.println(weather.DailyForecasts[i].Day_RainProbability);
Serial.print("DailyForecasts.Day_SnowProbability: = "); Serial.println(weather.DailyForecasts[i].Day_SnowProbability);
Serial.print("DailyForecasts.Day_IceProbability: = "); Serial.println(weather.DailyForecasts[i].Day_IceProbability);
Serial.print("DailyForecasts.Day_Wind_Speed_Value: = "); Serial.println(weather.DailyForecasts[i].Day_Wind_Speed_Value);
Serial.print("DailyForecasts.Day_Wind_Speed_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_Wind_Speed_Unit);
Serial.print("DailyForecasts.Day_Wind_Speed_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_Wind_Speed_UnitType);
Serial.print("DailyForecasts.Day_Wind_Direction_Degrees: = "); Serial.println(weather.DailyForecasts[i].Day_Wind_Direction_Degrees);
Serial.print("DailyForecasts.Day_Wind_Direction_Localized: = "); Serial.println(weather.DailyForecasts[i].Day_Wind_Direction_Localized);
Serial.print("DailyForecasts.Day_Wind_Direction_English: = "); Serial.println(weather.DailyForecasts[i].Day_Wind_Direction_English);
Serial.print("DailyForecasts.Day_WindGust_Speed_Value: = "); Serial.println(weather.DailyForecasts[i].Day_WindGust_Speed_Value);
Serial.print("DailyForecasts.Day_WindGust_Speed_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_WindGust_Speed_Unit);
Serial.print("DailyForecasts.Day_WindGust_Speed_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_WindGust_Speed_UnitType);
Serial.print("DailyForecasts.Day_WindGust_Direction_Degrees: = "); Serial.println(weather.DailyForecasts[i].Day_WindGust_Direction_Degrees);
Serial.print("DailyForecasts.Day_WindGust_Direction_Localized: = "); Serial.println(weather.DailyForecasts[i].Day_WindGust_Direction_Localized);
Serial.print("DailyForecasts.Day_WindGust_Direction_English: = "); Serial.println(weather.DailyForecasts[i].Day_WindGust_Direction_English);
Serial.print("DailyForecasts.Day_TotalLiquid_Value: = "); Serial.println(weather.DailyForecasts[i].Day_TotalLiquid_Value);
Serial.print("DailyForecasts.Day_TotalLiquid_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_TotalLiquid_Unit);
Serial.print("DailyForecasts.Day_TotalLiquid_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_TotalLiquid_UnitType);
Serial.print("DailyForecasts.Day_Rain_Value: = "); Serial.println(weather.DailyForecasts[i].Day_Rain_Value);
Serial.print("DailyForecasts.Day_Rain_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_Rain_Unit);
Serial.print("DailyForecasts.Day_Rain_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_Rain_UnitType);
Serial.print("DailyForecasts.Day_Snow_Value: = "); Serial.println(weather.DailyForecasts[i].Day_Snow_Value);
Serial.print("DailyForecasts.Day_Snow_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_Snow_Unit);
Serial.print("DailyForecasts.Day_Snow_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_Snow_UnitType);
Serial.print("DailyForecasts.Day_Ice_Value: = "); Serial.println(weather.DailyForecasts[i].Day_Ice_Value);
Serial.print("DailyForecasts.Day_Ice_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_Ice_Unit);
Serial.print("DailyForecasts.Day_Ice_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_Ice_UnitType);
Serial.print("DailyForecasts.Day_HoursOfPrecipitation: = "); Serial.println(weather.DailyForecasts[i].Day_HoursOfPrecipitation);
Serial.print("DailyForecasts.Day_HoursOfRain: = "); Serial.println(weather.DailyForecasts[i].Day_HoursOfRain);
Serial.print("DailyForecasts.Day_HoursOfSnow: = "); Serial.println(weather.DailyForecasts[i].Day_HoursOfSnow);
Serial.print("DailyForecasts.Day_HoursOfIce: = "); Serial.println(weather.DailyForecasts[i].Day_HoursOfIce);
Serial.print("DailyForecasts.Day_CloudCover: = "); Serial.println(weather.DailyForecasts[i].Day_CloudCover);
Serial.print("DailyForecasts.Day_Evapotranspiration_Value: = "); Serial.println(weather.DailyForecasts[i].Day_Evapotranspiration_Value);
Serial.print("DailyForecasts.Day_Evapotranspiration_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_Evapotranspiration_Unit);
Serial.print("DailyForecasts.Day_Evapotranspiration_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_Evapotranspiration_UnitType);
Serial.print("DailyForecasts.Day_SolarIrradiance_Value: = "); Serial.println(weather.DailyForecasts[i].Day_SolarIrradiance_Value);
Serial.print("DailyForecasts.Day_SolarIrradiance_Unit: = "); Serial.println(weather.DailyForecasts[i].Day_SolarIrradiance_Unit);
Serial.print("DailyForecasts.Day_SolarIrradiance_UnitType: = "); Serial.println(weather.DailyForecasts[i].Day_SolarIrradiance_UnitType);
Serial.print("DailyForecasts.Night_Icon: = "); Serial.println(weather.DailyForecasts[i].Night_Icon);
Serial.print("DailyForecasts.Night_IconPhrase: = "); Serial.println(weather.DailyForecasts[i].Night_IconPhrase);
Serial.print("DailyForecasts.Night_HasPrecipitation: = "); Serial.println(weather.DailyForecasts[i].Night_HasPrecipitation);
Serial.print("DailyForecasts.Night_ShortPhrase: = "); Serial.println(weather.DailyForecasts[i].Night_ShortPhrase);
Serial.print("DailyForecasts.Night_LongPhrase: = "); Serial.println(weather.DailyForecasts[i].Night_LongPhrase);
Serial.print("DailyForecasts.Night_PrecipitationProbability: = "); Serial.println(weather.DailyForecasts[i].Night_PrecipitationProbability);
Serial.print("DailyForecasts.Night_ThunderstormProbability: = "); Serial.println(weather.DailyForecasts[i].Night_ThunderstormProbability);
Serial.print("DailyForecasts.Night_IceProbability: = "); Serial.println(weather.DailyForecasts[i].Night_IceProbability);
Serial.print("DailyForecasts.Night_Wind_Speed_Value: = "); Serial.println(weather.DailyForecasts[i].Night_Wind_Speed_Value);
Serial.print("DailyForecasts.Night_Wind_Speed_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_Wind_Speed_Unit);
Serial.print("DailyForecasts.Night_Wind_Speed_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_Wind_Speed_UnitType);
Serial.print("DailyForecasts.Night_Wind_Direction_Degrees: = "); Serial.println(weather.DailyForecasts[i].Night_Wind_Direction_Degrees);
Serial.print("DailyForecasts.Night_Wind_Direction_Localized: = "); Serial.println(weather.DailyForecasts[i].Night_Wind_Direction_Localized);
Serial.print("DailyForecasts.Night_Wind_Direction_English: = "); Serial.println(weather.DailyForecasts[i].Night_Wind_Direction_English);
Serial.print("DailyForecasts.Night_WindGust_Speed_Value: = "); Serial.println(weather.DailyForecasts[i].Night_WindGust_Speed_Value);
Serial.print("DailyForecasts.Night_WindGust_Speed_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_WindGust_Speed_Unit);
Serial.print("DailyForecasts.Night_WindGust_Speed_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_WindGust_Speed_UnitType);
Serial.print("DailyForecasts.Night_WindGust_Direction_Degrees: = "); Serial.println(weather.DailyForecasts[i].Night_WindGust_Direction_Degrees);
Serial.print("DailyForecasts.Night_WindGust_Direction_Localized: = "); Serial.println(weather.DailyForecasts[i].Night_WindGust_Direction_Localized);
Serial.print("DailyForecasts.Night_WindGust_Direction_English: = "); Serial.println(weather.DailyForecasts[i].Night_WindGust_Direction_English);
Serial.print("DailyForecasts.Night_TotalLiquid_Value: = "); Serial.println(weather.DailyForecasts[i].Night_TotalLiquid_Value);
Serial.print("DailyForecasts.Night_TotalLiquid_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_TotalLiquid_Unit);
Serial.print("DailyForecasts.Night_TotalLiquid_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_TotalLiquid_UnitType);
Serial.print("DailyForecasts.Night_Rain_Value: = "); Serial.println(weather.DailyForecasts[i].Night_Rain_Value);
Serial.print("DailyForecasts.Night_Rain_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_Rain_Unit);
Serial.print("DailyForecasts.Night_Rain_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_Rain_UnitType);
Serial.print("DailyForecasts.Night_Snow_Value: = "); Serial.println(weather.DailyForecasts[i].Night_Snow_Value);
Serial.print("DailyForecasts.Night_Snow_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_Snow_Unit);
Serial.print("DailyForecasts.Night_Snow_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_Snow_UnitType);
Serial.print("DailyForecasts.Night_Ice_Value: = "); Serial.println(weather.DailyForecasts[i].Night_Ice_Value);
Serial.print("DailyForecasts.Night_Ice_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_Ice_Unit);
Serial.print("DailyForecasts.Night_Ice_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_Ice_UnitType);
Serial.print("DailyForecasts.Night_HoursOfPrecipitation: = "); Serial.println(weather.DailyForecasts[i].Night_HoursOfPrecipitation);
Serial.print("DailyForecasts.Night_HoursOfRain: = "); Serial.println(weather.DailyForecasts[i].Night_HoursOfRain);
Serial.print("DailyForecasts.Night_HoursOfSnow: = "); Serial.println(weather.DailyForecasts[i].Night_HoursOfSnow);
Serial.print("DailyForecasts.Night_HoursOfIce: = "); Serial.println(weather.DailyForecasts[i].Night_HoursOfIce);
Serial.print("DailyForecasts.Night_CloudCover: = "); Serial.println(weather.DailyForecasts[i].Night_CloudCover);
Serial.print("DailyForecasts.Night_Evapotranspiration_Value: = "); Serial.println(weather.DailyForecasts[i].Night_Evapotranspiration_Value);
Serial.print("DailyForecasts.Night_Evapotranspiration_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_Evapotranspiration_Unit);
Serial.print("DailyForecasts.Night_Evapotranspiration_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_Evapotranspiration_UnitType);
Serial.print("DailyForecasts.Night_SolarIrradiance_Value: = "); Serial.println(weather.DailyForecasts[i].Night_SolarIrradiance_Value);
Serial.print("DailyForecasts.Night_SolarIrradiance_Unit: = "); Serial.println(weather.DailyForecasts[i].Night_SolarIrradiance_Unit);
Serial.print("DailyForecasts.Night_SolarIrradiance_UnitType: = "); Serial.println(weather.DailyForecasts[i].Night_SolarIrradiance_UnitType);
// Serial.print("DailyForecasts.Sources: = "); Serial.println(weather.DailyForecasts[i].Sources);
// Serial.print("DailyForecasts.MobileLink: = "); Serial.println(weather.DailyForecasts[i].MobileLink);
Serial.print("DailyForecasts.Link: = "); Serial.println(weather.DailyForecasts[i].Link);
} //end for
#endif
client.stop();
http.end();
flag_weater = true;
} else
{
Serial.println("Connection failed");
client.stop();
http.end();
flag_weater = false;
}
}
return flag_weater;
}
functions.h
#include <Arduino.h>
/*-------------- Weather code -------------------------*/
typedef struct
{
String EffectiveDate;
long EffectiveEpochDate;
int Severity;
String Text;
String Category;
String EndDate;
int EndEpochDate;
String MobileLink;
String Link;
} Headline_t;
typedef struct
{
String AirAndPollen_Name; // 6
int AirAndPollen_Value;
String AirAndPollen_Category;
int AirAndPollen_CategoryValue;
String AirAndPollen_Type;
} AirAndPollen_t;
typedef struct
{
String Date;
long EpochDate;
// String Temperature;
String Sun_Rise;
long Sun_EpochRise;
String Sun_Set;
long Sun_EpochSet;
String Moon_Rise;
long Moon_EpochRise;
String Moon_Set;
long Moon_EpochSet;
String Moon_Phase;
int Moon_Age;
float Temperature_min_Value;
String Temperature_min_Unit;
int Temperature_min_UnitType;
float Temperature_max_Value;
String Temperature_max_Unit;
int Temperature_max_UnitType;
float RealFeelTemperature_min_Value;
String RealFeelTemperature_min_Unit;
int RealFeelTemperature_min_UnitType;
String RealFeelTemperature_min_Phrase;
float RealFeelTemperature_max_Value;
String RealFeelTemperature_max_Unit;
int RealFeelTemperature_max_UnitType;
String RealFeelTemperature_max_Phrase;
float RealFeelTemperatureShade_min_Value;
String RealFeelTemperatureShade_min_Unit;
int RealFeelTemperatureShade_min_UnitType;
String RealFeelTemperatureShade_min_Phrase;
float RealFeelTemperatureShade_max_Value;
String RealFeelTemperatureShade_max_Unit;
int RealFeelTemperatureShade_max_UnitType;
String RealFeelTemperatureShade_max_Phrase;
float HoursOfSun;
int DegreeDaySummary_Heating_Value;
String DegreeDaySummary_Heating_Unit;
int DegreeDaySummary_Heating_UnitType;
int DegreeDaySummary_Cooling_Value;
String DegreeDaySummary_Cooling_Unit;
int DegreeDaySummary_Cooling_UnitType;
AirAndPollen_t AirAndPollen[6];
int Day_Icon;
String Day_IconPhrase;
bool Day_HasPrecipitation;
String Day_PrecipitationType;
String Day_PrecipitationIntensity;
String Day_ShortPhrase;
String Day_LongPhrase;
int Day_PrecipitationProbability;
int Day_ThunderstormProbability;
int Day_RainProbability;
int Day_SnowProbability;
int Day_IceProbability;
float Day_Wind_Speed_Value;
String Day_Wind_Speed_Unit;
int Day_Wind_Speed_UnitType;
int Day_Wind_Direction_Degrees;
String Day_Wind_Direction_Localized;
String Day_Wind_Direction_English;
float Day_WindGust_Speed_Value;
String Day_WindGust_Speed_Unit;
int Day_WindGust_Speed_UnitType;
int Day_WindGust_Direction_Degrees;
String Day_WindGust_Direction_Localized;
String Day_WindGust_Direction_English;
int Day_TotalLiquid_Value;
String Day_TotalLiquid_Unit;
int Day_TotalLiquid_UnitType;
int Day_Rain_Value;
String Day_Rain_Unit;
int Day_Rain_UnitType;
int Day_Snow_Value;
String Day_Snow_Unit;
int Day_Snow_UnitType;
int Day_Ice_Value;
String Day_Ice_Unit;
int Day_Ice_UnitType;
int Day_HoursOfPrecipitation;
int Day_HoursOfRain;
int Day_HoursOfSnow;
int Day_HoursOfIce;
int Day_CloudCover;
float Day_Evapotranspiration_Value;
String Day_Evapotranspiration_Unit;
int Day_Evapotranspiration_UnitType;
float Day_SolarIrradiance_Value;
String Day_SolarIrradiance_Unit;
int Day_SolarIrradiance_UnitType;
int Night_Icon;
const char* Night_IconPhrase;
bool Night_HasPrecipitation;
const char* Night_ShortPhrase;
const char* Night_LongPhrase;
int Night_PrecipitationProbability;
int Night_ThunderstormProbability;
int Night_RainProbability;
int Night_SnowProbability;
int Night_IceProbability;
float Night_Wind_Speed_Value;
const char* Night_Wind_Speed_Unit;
int Night_Wind_Speed_UnitType;
int Night_Wind_Direction_Degrees;
const char* Night_Wind_Direction_Localized;
const char* Night_Wind_Direction_English;
float Night_WindGust_Speed_Value;
const char* Night_WindGust_Speed_Unit;
int Night_WindGust_Speed_UnitType;
int Night_WindGust_Direction_Degrees;
const char* Night_WindGust_Direction_Localized;
const char* Night_WindGust_Direction_English;
int Night_TotalLiquid_Value;
const char* Night_TotalLiquid_Unit;
int Night_TotalLiquid_UnitType;
int Night_Rain_Value;
const char* Night_Rain_Unit;
int Night_Rain_UnitType;
int Night_Snow_Value;
const char* Night_Snow_Unit;
int Night_Snow_UnitType;
int Night_Ice_Value;
const char* Night_Ice_Unit;
int Night_Ice_UnitType;
int Night_HoursOfPrecipitation;
int Night_HoursOfRain;
int Night_HoursOfSnow;
int Night_HoursOfIce;
int Night_CloudCover;
float Night_Evapotranspiration_Value;
const char* Night_Evapotranspiration_Unit;
int Night_Evapotranspiration_UnitType;
float Night_SolarIrradiance_Value;
const char* Night_SolarIrradiance_Unit;
int Night_SolarIrradiance_UnitType;
// String Sources;
// String MobileLink;
String Link;
} DailyForecasts_t;
typedef struct
{
Headline_t Headline;
DailyForecasts_t DailyForecasts[5];
} weather_t;
String convert_unix_time(int unix_time)
{
time_t tm = unix_time;
struct tm *now_tm = localtime(&tm);
char output[40];
strftime(output, sizeof(output), "%H:%M %d.%m.%y", now_tm);
return output;
}
void printStr(String& s) {
Serial.println(s);
}
Остальное в архиве.