其实这篇文章只是在介绍自己的库
哈哈,都有点像广告了。
ESP32 和风天气获取库
这个库目前为初版,可能会有其他诡异的问题,遇到问题,欢迎来我的仓库提交Issue!
仓库地址:https://github.com/unname499/ESP32_QWEATHER/
其实README已经够详细了,所以我把使用方法复制过来吧
1 2 3 4 5 6 7 8 9 10 11 12
| #include <weather.h> Config gc(your-private-key, your-kid, your-sub, your-api-host, your-api-key, your-real-address); WeatherNow weatherNow(gc); weatherNow.getServerCode(); weatherNow.getTemp(); weatherNow.getFeelLike(); weatherNow.getWeatherText(); weatherNow.getWindDir(); weatherNow.getWindScale(); weatherNow.getHumidity(); weatherNow.getPrecip();
|
介绍一下Config gc:
所有参数分别是:你的私钥、项目KID和SUB、你的API HOST、你的API KEY、要查询的地址
your-private-key:你的 Ed25519 私钥(JWT 认证时必填,API KEY 认证时传空字符串)
your-kid:项目 KID(JWT 认证时必填)
your-sub:项目 SUB(JWT 认证时必填)
your-api-host:你的专属 API 域名,必填
your-api-key:你的 API 密钥(API KEY 认证时必填,JWT 认证时传空字符串)
your-real-address:查询天气的城市名称,会自动 URL 编码
另外要注意的是:Config gc()中的gc是可以自定义的,只要下面的WeatherNow weatherNow(gc)中的gc改掉就行。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| #include <Arduino.h> #include <WiFi.h> #include "config.h" #include "weatherNow.h"
#define WIFI_SSID "WiFi名" #define WIFI_PASSWD "WiFi密码"
const char* PRIVATE_KEY_PEM = R"( -----BEGIN PRIVATE KEY----- (你的私钥) -----END PRIVATE KEY----- )";
const char* KID = "(你的项目KID)"; const char* SUB = "(你的项目SUB)";
Config gc(PRIVATE_KEY_PEM, KID, SUB, "你的API HOST", "", "住址");
WeatherNow weatherNow(gc);
void setup() { Serial.begin(115200); delay(1000); Serial.println("\n=== SETUP START ===");
WiFi.begin(WIFI_SSID, WIFI_PASSWD); Serial.print("连接 WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" 成功"); Serial.print("IP: "); Serial.println(WiFi.localIP());
if (weatherNow.get()) { Serial.println("\n====== Weather Now Info ======"); Serial.print("Server Response: "); Serial.println(weatherNow.getServerCode()); Serial.print("Temperature: "); Serial.println(weatherNow.getTemp()); Serial.print("FeelsLike: "); Serial.println(weatherNow.getFeelLike()); Serial.print("Weather Now: "); Serial.println(weatherNow.getWeatherText()); Serial.print("WindDir: "); Serial.println(weatherNow.getWindDir()); Serial.print("WindScale: "); Serial.println(weatherNow.getWindScale()); Serial.print("Humidity: "); Serial.println(weatherNow.getHumidity()); Serial.print("Precip: "); Serial.println(weatherNow.getPrecip()); Serial.println("=============================="); } else { Serial.println("Update Failed..."); Serial.print("Server Response: "); Serial.println(weatherNow.getServerCode()); } }
void loop() { delay(10000); }
|