1. 注冊心知天氣賬號,獲取私鑰
下面這篇文章是圖示講解的,好東西,何不轉載為快?
http://www.taichi-maker.com/homepage/iot-development/iot-platform/seniverse/preparation/
"GET https://api.seniverse.com/v3/weather/now.json?key=這里加上你的私鑰&location=你要查詢的城市中文拼音&language=zh-Hans&unit=c\r\n\r\n"
這串字符就是你的HTTP的GET請求。
GET請求的詳細使用去新知天氣的官網,這里面可以玩的花樣也多的,支持最近幾天的天氣預報、濕度、風向風力等等,所以GET請求的復雜度也不一樣。
但是如果只查詢一個城市的溫度值,那么上面這個GET請求一般就夠用了。這里為什么說一般夠用?因為也有特例,例如全國內肯定有兩個城市的名字的中文拼音是一樣的,那么前面還可以加上省份的拼音的,所以,具體詳情還是參考心知天氣的官網( https://www.seniverse.com )最權威了。
2.那么在不寫代碼的情況下,我們怎么來快速獲取天氣預報體驗一下呢?
方法1,笨方法 使用通信軟件發送GET請求
打開通信貓軟件
按圖示1處輸入和我一樣的IP地址和端口號, 2處勾選好, 3處填入上述GET請求,注意,最后要空兩行(敲兩個回車鍵)! 4處點擊發送, 然后就可以收到5處所示的信息了。
我查詢了杭州溫度(location=hangzhou),可以看到返回的溫度(temperature)是8度。 GET請求內,unit=c表示返回的單位是攝氏度。
方法2,使用瀏覽器發送GET請求
打開瀏覽器,以我當前實驗為例,輸入 https://api.seniverse.com/v3/weather/now.json?key=SwwwfskBjB6fHVRon&location=hangzhou&language=zh-Hans&unit=c
就可以收到返回的天氣數據了。注意,這里就不需要前綴GET 和 后綴倆空行了, 就是普通的訪問網站而已,相比使用通信貓軟件就方便多了。
PS:或者,你只要鼠標左鍵點擊上述網址就可以實時查看到杭州現在的溫度了。
3.寫代碼來獲取天氣預報
我當前的實驗基於ESP32,只需要簡單修改ESP32的IDF內的一個Http的Demo就可以了。
為什么只需要簡單修改就可以了?因為這個功能本來就很簡陋,我們剛才用瀏覽器獲取天氣預報的實驗,其實就是輸入了一個網址而已,然后就成事了,核心步驟就這么一步。
所以說,基本上只要調通網絡,不管是什么平台,實現這個功能都是不復雜的。
繼續正題,環境准備可以看這篇:
ESP32的Linux開發環境搭建,將示例程序編譯、下載、運行
https://www.cnblogs.com/happybirthdaytoyou/p/13996072.html
打開該虛擬機, 將上圖的http_request文件夾拷貝到下圖路徑內:
代碼修改三處,見下圖:
ESP32板子經過USB轉TTL接入到ubuntu虛擬機內,
然后執行make flash monitor , 即執行程序燒錄,打開串口
程序運行效果:
PS:心知天氣返回的數據是UTF-8編碼的
現在就收到了這串表示天氣的字符串了,這是JSON格式的,需要解析,常見的有cJSON庫。

.