#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <HTTPClient.h>
#include <WiFi.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 thoitiet = doc["weather"][0]["main"];
String nhietdo = doc["main"]["temp"];
String ndomax = doc["main"]["temp_max"];
String ndomin = doc["main"]["temp_min"];
String doam = doc["main"]["humidity"];
String tocdogio = doc["wind"]["speed"];
display.setCursor(0, 0);
display.println("Thoi tiet: " + thoitiet);
display.setCursor(0, 10);
display.println("Nhiet do: " + nhietdo);
display.setCursor(0, 20);
display.println("Nhiet do max: " + ndomax);
display.setCursor(0, 30);
display.println("Nhiet do min: " + ndomin);
display.setCursor(0, 40);
display.println("Do am:" + doam);
display.setCursor(0, 50);
display.println("Toc do gio: " + tocdogio);
display.display();
}
else {
Serial.println("Error on HTTP request");
}
http.end();
}
delay(100);
}