#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
// Вводим имя и пароль точки доступа
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const String endpoint = "http://api.openweathermap.org/data/2.5/weather?q=Moscow,ru,pt&APPID=";
const String key = "cdecb72a7903eb3bb1964c39615f1764";
void setup()
{
Serial.begin(115200);
// делаем небольшую задержку на открытие монитора порта
delay(1000);
// подключаемся к Wi-Fi сети
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Соединяемся с Wi-Fi..");
}
Serial.println("Соединение с Wi-Fi установлено");
}
void loop() {
// выполняем проверку подключения к беспроводной сети
if ((WiFi.status() == WL_CONNECTED))
{
// создаем объект для работы с HTTP
HTTPClient http;
// подключаемся к веб-странице OpenWeatherMap с указанными параметрами
http.begin(endpoint + key);
int httpCode = http.GET(); // Делаем запрос
// проверяем успешность запроса
if (httpCode > 0)
{
// выводим ответ сервера
String payload = http.getString();
Serial.println(httpCode);
//обработка полученных данных
handleReceivedMessage(payload);
}
else {
Serial.println("Ошибка HTTP-запроса");
}
http.end(); // освобождаем ресурсы микроконтроллера
}
delay(30000);
}
void handleReceivedMessage(String message)
{
StaticJsonDocument<1500> doc; //Memory pool. Размер с запасом
//разбор полученного сообщения как форматированного текста JSON
DeserializationError error = deserializeJson(doc, message);
// Если разбор прошел успешно
if (error)
{
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
Serial.println();
Serial.println("----- DATA FROM OPENWEATHER ----");
const char* name = doc["name"];
Serial.print("City: ");
Serial.println(name);
int timezone = doc["timezone"];
Serial.print("Timezone: ");
Serial.println(timezone);
int humidity = doc["main"]["humidity"];
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.println("------------------------------");
}