#include <WiFi.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
//天气相关参数
String API = "S3u0TyQRnlVLvIKr4";
String WeatherURL = "";
String CITY = "烟台";
String url_xinzhi = "";
String Weather = "0";
String Temperature = "0";
LiquidCrystal_I2C lcd(0x27,16,2);
long sum = 0;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
/* 创建实例 */
HTTPClient http;
String GetURL(String api,String city)
{
url_xinzhi = "https://api.seniverse.com/v3/weather/now.json?key=";
url_xinzhi += api;
url_xinzhi += "&location=";
url_xinzhi += city;
url_xinzhi += "&language=zh-Hans&unit=c";
return url_xinzhi;
}
void ParseWeather(String url)
{
DynamicJsonDocument doc(1024); //分配内存,动态
http.begin(url);
int httpGet = http.GET();
if(httpGet > 0)
{
Serial.printf("HTTPGET is %d",httpGet);
if(httpGet == HTTP_CODE_OK)
{
String json = http.getString();
Serial.println(json);
deserializeJson(doc, json);
Weather = doc["results"][0]["now"]["text"].as<String>();
Temperature = doc["results"][0]["now"]["temperature"].as<String>();
}
else
{
Serial.printf("ERROR1!!");
}
}
else
{
Serial.printf("ERROR2!!");
}
http.end();
}
void led(){
Serial.print("当前烟台市的天气是:");
Serial.println(Weather);
Serial.print("当前烟台市的温度是:");
Serial.println(Temperature);
Serial.print("执行次数: ");
}
void setup()
{
Serial.begin(115200);
//请完成初始化代码
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
}
void loop()
{
//请完成循环代码
String URL = GetURL(API,CITY);
ParseWeather(URL);
led();
Serial.println(sum);
sum ++;
delay(5000);
}