最近在做一个小型终端(ESP32 + TFT240*240),想要加上天气功能。
最后决定使用高德地图的天气API高德开放平台 | 高德地图API ()。
1.先注册账号
2.在我的应用中新建一个应用
3.类型选天气,名称随便取
4.在创建好的应用中点击添加
5.点击Web服务,名称随便起,然后提交
6.将创建的key复制
7.后去天气就调用/v3/weather/weatherInfo?city=110101&key=<用户key>
高德地图的官方解释文档天气查询-API文档-开发指南-Web服务 API | 高德地图API ()
城市编码表相关下载-Web服务 API | 高德地图API ()
高德地图的天气API返回Json如下
{"status":"1","count":"1","info":"OK","infocode":"10000","lives":[{"province":"安徽","city":"合肥市","adcode":"340100","weather":"小雨","temperature":"14","winddirection":"西北","windpower":"≤3","humidity":"97","reporttime":"-11-22 10:35:13"}]}
注意:lives的中括号后面还有一个大括号
用ArduinoJson(bblanchon/ArduinoJson: 📟 JSON library for Arduino and embedded C++. Simple and efficient. ())解析后需要用["lives"][0]["temperature"]来获取天气
DynamicJsonDocument doc(1024);String resBuff = http.getString();deserializeJson(doc, resBuff);temp = doc["lives"][0]["temperature"].as<String>();//一定要加[0]!!!weather = doc["lives"][0]["weather"].as<String>();