日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

基于8266實現無線獲取天氣預報

使用ESP8266或者其他網絡模塊獲取網絡數據(天氣,時間等),還是挺簡單的,下面我們兩個部分來講解無線以及有線網絡如何獲取天氣預報信息。

 

01.查找目標服務器

首先找到一個服務器,該服務器具備獲取天氣預報等相關接口,例如:

心知天氣:
https://www.seniverse.com/login

丫丫天氣:http://www.yytianqi.com/

等服務器,這里我們就以丫丫天氣為例來制作本次的實驗。


02.配置服務器

打開丫丫天氣服務器網頁,該網頁地址為http://www.yytianqi.com/,打開之后點擊右上角注冊賬號,如下圖所示:

基于8266實現無線獲取天氣預報

 

點擊注冊之后,我們必須填寫郵箱,密碼以及手機號碼相關信息,如下圖所示:

基于8266實現無線獲取天氣預報

 

注冊完畢之后,登錄賬號,如下圖所示:

基于8266實現無線獲取天氣預報

 

上圖中的key密鑰是我們所需要的,我們先把密鑰拷貝到記事本中。


03.丫丫天氣服務器相關接口信息

打開上方的API介紹我們就知道如何獲取服務器的相關信息了,如下圖所示:

基于8266實現無線獲取天氣預報

 

上圖中,API通用格式http://api.yytianqi.com/接口名稱?city=城市ID&key=用戶key就是我們使用無線或者有線網絡所發送的數據包,而這個數據包的接口名稱是下方的字符串,如下圖所示:

基于8266實現無線獲取天氣預報

 

API通用格式的城市是根據該頁面下方的圖來獲取,每一個城市都一樣的ID,如下圖所示:

基于8266實現無線獲取天氣預報

 

最后我們講解一下該服務器的請求模式以及返回結果,如下圖所示:

基于8266實現無線獲取天氣預報

 

從上圖可知:我們可以請求三種模式,第一種使用程序的ID獲取,第二種使用城市的IP獲取,第三種是獲取城市的經緯度信息。本次的實驗我們使用第一種獲取方式。

 

上圖的下面的內容就是服務器返回的結果,所以我們的代碼必須移植JSON包來解析,根據返回的字符串來獲取數據包的信息。


04.ESP8266配置TCPClient客戶端流程

ESP8266配置TCPClient流程如下圖所示:

基于8266實現無線獲取天氣預報

 

上述就是MCU發送到ESP8266的AT指令,這里我們無需過多的講解,下面我們講解如何使用串口發送指令或者數據到ESP8266相關函數:

TCPClient配置源碼編寫:

基于8266實現無線獲取天氣預報

 

上述的源碼主要配置ESP8266為TCPClient客戶端以及連接WIFI,最后開啟透傳模式,注意:我們連接的服務器地址為api.yytianqi.com,而端口號為80。

檢測應答函數編寫:

基于8266實現無線獲取天氣預報

 

上的源碼就是檢查發送ESP8266指令是否成功,這里我們使用串口3發送。

發送指令函數編寫:

基于8266實現無線獲取天氣預報

 

上述函數是發送ESP8266指令函數,如果返回“OK“,則發送成功。

發送數據函數的編寫:

基于8266實現無線獲取天氣預報

 

上述的源碼是發送數據的函數,我們可以定時發送HTTPS數據包到丫丫天氣服務器中獲取相關的信息。


05.網絡調式助手模擬實驗

首先在百度搜索“域名解析”,我們把api.yytianqi.com域名解析成IP地址,如下圖所示:

基于8266實現無線獲取天氣預報

 

打開網絡調式助手以TCPClient方式連接服務器,如下圖所示:

基于8266實現無線獲取天氣預報

 

根據上圖所示,我們發送給HTTPGET請求,該數據包為

GEThttp://api.yytianqi.com/observe?city=CH010100&key=xxx,

注意:xxx為平臺注冊的密鑰。點擊發送該數據包就獲取到相應的信息,如下圖所示:

基于8266實現無線獲取天氣預報

 

根據上圖的返回信息,我們可以對比官方提供的返回結果數據包對比,如下所示:

{


"code":1,
"msg":"Sucess",
"counts":2362, //訪問的剩余次數。
"data":{
"cityId":"CH010100", //城市id
"cityName":"北京", //城市名稱
"lastUpdate":"2016-03-0917:10:00", //實況更新時間
"tq":"多云", //天氣現象
"numtq":"01", //天氣現象編碼
"qw":"5.0", //當前氣溫
"fl":"微風", //當前風力
"numfl":"0", //當前風力編碼
"fx":"無持續風向", //當前風向
"numfx":"0", //當前風向編碼
"sd":"10.0" //相對濕度,直接在此數值后添加%即可


}


}

根據上述的源碼和上圖對比,我們就知道各個字符串代表什么內容。

在我們編寫之前,我們必須移植cjSON庫,我們可以調用這個庫提供的函數獲取數據包的信息,如下所示:

定義一個接收數據的結構體:

基于8266實現無線獲取天氣預報

 

根據字符串解析數據包的內容:

基于8266實現無線獲取天氣預報

 

此函數的第一個形參是接收丫丫天氣服務器的數據包,而第二個形參表示我們存儲數據包解析的內容,比如我們調用函數:

numtq=cJSON_GetObjectItem(data,"numtq")解析數據包的"numtq"字符串的內容,numtq變量就會保存天氣現象的編碼的數據,其他類似操作。

對數據包解析的內容存儲在結構體:

基于8266實現無線獲取天氣預報

 

注意事項:

發送一次HTTPGET請求時,服務器返回相應的內容并斷開連接,所以我們不斷請求獲取必須重新連接并發送數據。

分享到:
標簽:獲取 天氣
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定