#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
HTTPClient http;
void setup() {
Serial.begin(115200);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(20, 10);
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
}
void loop() {
if ((WiFi.status() == WL_CONNECTED)) {
HTTPClient http;
http.begin("https://api.openweathermap.org/data/2.5/weather?id=1562693&appid=cee343d33e41970dd63c44b39c8620ab");
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
// Serial.println(httpCode);
// Serial.println(payload);
StaticJsonDocument<1024> doc;
DeserializationError err = deserializeJson(doc, payload);
String ndomax = doc["main"]["temp_max"];
String ndomin = doc["main"]["temp_min"];
String nhietdo = doc["main"]["temp"];
String doam = doc["main"]["humidity"];
String tocdogio = doc["wind"]["speed"];
display.setCursor(0, 0);
display.println("Nhiet do: " + nhietdo);
display.setCursor(0, 10);
display.println("Do am:" + doam);
display.setCursor(0, 40);
display.println("Toc do gio:" + tocdogio);
display.display();
Serial.println("Nhiet do: " + nhietdo);
Serial.println("Do am:" + doam);
Serial.println("Toc do gio:" + tocdogio);
}
else {
Serial.println("Error on HTTP request");
}
http.end();
}
delay(100);
}