#include <WiFi.h>
#include<HTTPClient.h>
#include<LiquidCrystal.h>
LiquidCrystal lcd(23, 22, 12, 14, 27, 26);
const char *ssid = "Wokwi-GUEST";
const char *password = "";
const String API_key = "36fb06c3dd6454e4bfeb65dfed4ddd94";
const String city = "London";
String url =
"http://api.openweathermap.org/data/2.5/weather?q="+city+"&appid="+API_key+"&units=metric";
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
WiFi.begin(ssid, password);
pinMode(15, OUTPUT);
Serial.println("Estabelecendo conexão");
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
}
Serial.println("Rede Conectada!");
}
void loop()
{
if (WiFi.status() == WL_CONNECTED){
digitalWrite(15, HIGH);
HTTPClient http;
http.begin(url);
int httpCode = http.GET();
if(httpCode == HTTP_CODE_OK)
{
String resposta = http.getString();
Serial.println(resposta);
char *ptr = strstr((const char *)resposta.c_str(), "name");
String cidade = &ptr[7];
Serial.print(cidade);
cidade.replace('"', '\0');
ptr = strstr((const char *)resposta.c_str(), "temp");
Serial.print(ptr);
String temperatura = &ptr[6];
temperatura.replace(',', '\0');
lcd.clear();
lcd.setCursor(0,0);
lcd.print(cidade.c_str());
lcd.setCursor(0,1);
lcd.print(temperatura.c_str());
lcd.print("\xDF""C");
delay(10000);
ptr = strstr((const char *)resposta.c_str(), "humidity");
Serial.print(ptr);
String umidade = &ptr[10];
umidade.replace(',', '\0');
umidade.replace('}', '\0');
lcd.clear();
lcd.setCursor(0,0);
lcd.print(cidade.c_str());
lcd.setCursor(0,1);
lcd.print(umidade.c_str());
lcd.print("%");
}
}
else{
digitalWrite(15, LOW);
WiFi.begin(ssid, password);
Serial.println("Reestabelecendo a conexão...");
while(WiFi.status() != WL_CONNECTED){
delay(500);
}
}
delay(10000);
}