#include <WiFi.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
const char* url = "https://api.openweathermap.org/data/2.5/weather?q=Tozeur&appid=904f05c2f80aff859fbacf58e5c2fabc";
const char* ssid = "Wokwi-GUEST";
const char* password = "";
#define DHTPIN 13 // Broche de signal du capteur DHT
#define DHTTYPE DHT22 // Type de capteur DHT
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
WiFiClient client;
void setup() {
Serial.begin(115200); // Démarre la communication série
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("CONNECTED");
lcd.init();
lcd.backlight();
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(h) || isnan(t))
{
Serial.println("ERROR !!! ");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ERROR !!! ");
delay(2000);
}
else
{
getWeatherData();
lcd.setCursor(0, 0);
lcd.print("T: " + String(t) +"C");
lcd.setCursor(0, 1);
lcd.print("H:" + String(h) +"%");
Serial.println("Température: ");
Serial.print(t);
Serial.print(" °C");
Serial.println("");
Serial.print("Humidity: ");
Serial.print(h);
Serial.println(" %");
}
}
void getWeatherData(){
HTTPClient http;
http.begin(url);
int httpCode = http.GET();
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
// Parse the JSON response
DynamicJsonDocument jsonDoc(1024); // Adjust the size according to your JSON response
DeserializationError error = deserializeJson(jsonDoc, payload);
if (error) {
Serial.print("JSON parsing failed: ");
Serial.println(error.c_str());
} else {
// Extract weather information from JSON
JsonObject main = jsonDoc["main"];
float temperature = main["temp"];
float humidity = main["humidity"];
Serial.print("Temperature de weather : ");
Serial.print(temperature);
Serial.print("°C");
Serial.print("Humidity de weather :");
Serial.print(humidity);
Serial.println("");
lcd.setCursor(9, 0);
lcd.print("T_r:"+ String(temperature) +"C");
lcd.setCursor(9, 1);
lcd.print(" H_r:" + String(humidity) + "%");
}
}
else {
Serial.print("HTTP request failed with error code: ");
Serial.println(httpCode);
}
http.end();
}
}