irpas技术客

心知天气天气状况获取,ESP32获取天气信息(含源码)_喜暖知寒

网络 8235

恶心我!总说我是广告!这辈子吃不上四个菜!


用心知天气获取天气信息都是老生常谈的事情了吧。基本上能看到的开源项目都是用心知的API获取的天气信息。


心知天气网站:

?

https://·/

又不需要访问那么多次,使用免费版就好了。

访问频次:20次/分钟??????? 对我来说足够了

?直接点申请,会申请到API密钥

API 秘钥 就是所需要的 (注意:' - ' 不能去掉)


选择文档→产品文档查看调用API

下面以天气实况为例子:

??由API接口说明可以知道

//心知天气提供API https://api.seniverse.com/v3/weather/now.json?key=your_api_key&location=beijing&language=zh-Hans&unit=c //修改后加入aip_key和城市名称即可构成可用API https://api.seniverse.com/v3/weather/now.json?key=SKmg2uxKdER08RUk-&location=北京&language=zh-Hans&unit=c

直接将修改好的API复制到浏览器网址,可获得天气信息

此时,可直接使用GET请求数据。

源码可参考获取B站粉丝数项目来修改代码

ESP32超详细学习记录:获取B站粉丝数_喜暖知寒的博客-CSDN博客

串口输出

?可见显示多云,和JSON显示的相同。

代码

代码已经验证成功!

函数介绍可参考获取B站粉丝数,基本一样!

ESP32超详细学习记录:获取B站粉丝数_喜暖知寒的博客-CSDN博客

各位不要用我的API-KEY,自己申请哈~

我把API-KEY一改就不能获取天气了!

(已验证,可直接复制编译)

#include <WiFi.h> #include <ArduinoJson.h> #include <HTTPClient.h> const char * ID = "NATCAP_0E35"; const char * PASSWORD = "88888888"; //天气相关参数 String API = "SKmg2uxKdER08RUk-"; String WeatherURL = ""; String CITY = "北京"; String url_xinzhi = ""; String Weather = "0"; long sum = 0; /* 创建实例 */ HTTPClient http; String GitURL(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>(); } else { Serial.printf("ERROR1!!"); } } else { Serial.printf("ERROR2!!"); } http.end(); } void setup() { Serial.begin(115200); //==================wifi连接================== Serial.println("WiFi:"); Serial.println(ID); Serial.println("PASSWORLD:"); Serial.println(PASSWORD); WiFi.begin(ID,PASSWORD); while(WiFi.status()!=WL_CONNECTED) { delay(500); Serial.println("正在连接..."); } Serial.println("连接成功!"); //==================wifi连接================== WeatherURL = GitURL(API,CITY); } void loop() { Serial.println("连接成功!"); ParseWeather(WeatherURL); Serial.println(Weather); Serial.print("执行次数: "); Serial.println(sum); sum ++; delay(50000); }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #esp32获取天气 #ESP32获取天气信息