大家好,今天主要和大家聊一聊,如何利用單片機從心知天氣伺服器上擷取到指定位置的天氣資料,咱們先來了解一下心知天氣吧!
目錄
第一:天氣資料API
第二、通信原理圖以及資料解析
第三、天氣資料傳回結果示例
1.天氣現象代碼說明
2.天氣現象優先級
3.多語言支援說明
四、軟體代碼實作
第一:天氣資料API
其中使用者使用免費版可以調用哪些資料?
- 天氣實況,包括天氣現象文字、代碼和氣溫三項重點資料
- 未來3天天氣預報,包括白天天氣現象文字及代碼、晚間天氣現象文字及代碼、當天最高溫度和最低溫度、風向風速
- 六項基本類生活名額,包括穿衣、紫外線強度、洗車、旅遊、感冒、運動指數
第二、通信原理圖以及資料解析
如何擷取這些資料?咱們可以通過一個原理架構圖來看一看
天氣實況接口參數及資料傳回
心知天氣TCP位址:api.seniverse.com
端口号(PORT):80
資料傳回:擷取指定城市的天氣實況。付費使用者可擷取全部資料,免費使用者隻傳回天氣現象文字、代碼和氣溫 3 項資料。
接口位址格式:https://api.seniverse.com/v3/weather/now.json?key=your_api_key&location= beijing&language=zh-Hans&unit=c
參數說明:
參數名稱 | 類型 | 預設值 | 必填 | 備注 |
key | String | 無 | 是 | 你的API密鑰 |
location | Location | 無 | 是 | 所查詢的位置 |
language | Languae | zh-Hans | 否 | 語言 |
unit | Unit | c | 否 | 機關 |
補充:
兩種API安全驗證方式:
1.”私鑰“直接請求方式
将API密鑰中的”私鑰“作為API請求中的key參數值。
說明:此方式較為友善,但注意請不要洩露你的”私鑰“。
2.”公鑰+私鑰“簽名驗證方式
“公鑰 + 私鑰” 驗證方式更加安全。請求位址中隻包含你的“公鑰”以及用你的“私鑰”制作的簽名,是以 不會在請求位址中洩露你的私鑰。方法見連結:
https://seniverse.yuque.com/login?goto=https%3A%2F%2Fseniverse.yuque.com%2Fdocs%2Fshare%2Ff08ddb4b-d3e5-4113-aa4e-3bf45c9f43ac%3F&org=seniverse#%20%E3%80%8A%E4%BD%BF%E7%94%A8%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E6%96%B9%E5%BC%8F%E3%80%8B
第三、天氣資料傳回結果示例
{
"results": [
• {
• "location": {
• "id": "C23NB62W20TF",
• "name": "西雅圖",
• "country": "US",
• "path": "西雅圖,華盛頓州,美國",
• "timezone": "America/Los_Angeles",
• "timezone_offset": "-07:00"
• },
• "now": {
• "text": "多雲", //天氣現象文字
• "code": "4", //天氣現象代碼
• "temperature": "14", //溫度,機關為c攝氏度或f華氏度
• "feels_like": "14", //體感溫度,機關為c攝氏度或f華氏度
• "pressure": "1018", //氣壓,機關為mb百帕或in英寸
• "humidity": "76", //相對濕度,0~100,機關為百分比
• "visibility": "16.09", //能見度,機關為km公裡或mi英裡
• "wind_direction": "西北", //風向文字
• "wind_direction_degree": "340", //風向角度,範圍0~360,0為正北,90為正
東,180為正南,270為正西
• "wind_speed": "8.05", //風速,機關為km/h公裡每小時或mph英裡每小時
• "wind_scale": "2", //風力等級,請參考:
http://baike.baidu.com/view/465076.htm
• "clouds": "90", //雲量,機關%,範圍0~100,天空被雲覆寫的百分比 #目前不支援中
國城市#
• "dew_point": "-12" //露點溫度,請參考:
http://baike.baidu.com/view/118348.htm #目前不支援中國城市#
• },
• "last_update": "2015-09-25T22:45:00-07:00" //資料更新時間(該城市的本地時
間)
• }
]
}
補充:
1.天氣現象代碼說明
每一種天氣現象(例如:晴、小雨、多雲等)都對應一個天氣現象代碼,即 API 傳回結果中的 code字段。下表列出了心知天氣 API 所有可能傳回的天氣現象代碼。注:部分天氣現象提供白天和夜間兩種代碼。
代碼 | 中文 | 英文 | 圖示 |
晴(國内城市白天晴) | Sunny | ||
1 | 晴(國内城市夜晚晴) | Clear | |
2 | 晴(國外城市白天晴) | Fair | |
3 | 晴(國外城市夜晚晴) | Fair |
表格尾注:這裡僅放一種情況說明
2.天氣現象優先級
- 第一優先級:冰雹、雷暴、冰粒、冰針、龍卷風、熱帶風暴
- 第二優先級:雪
- 第三優先級:雨
- 第四優先級:風和沙塵類(浮塵、揚沙、沙塵暴、風、大風、飓風)
- 第五優先級:霧霾
- 第六優先級:其他天氣現象
3.多語言支援說明
心知天氣 API 支援 13 種語言,分别為:中文(簡體、繁體),英語,日語,德語,法語,俄語,西班牙語,葡萄牙語,泰語,阿拉伯語,印尼語,印地語。多語言支援向心知天氣的所有注冊使用者開放,無論免費使用者還是付費使用者,都可以通過接口的language參數改變傳回資料的語言。
可選 | 說明 |
zh-Hans | 簡體中文 |
zh-Hant | 繁體中文 |
en | 英文 |
ja | 日語 |
de | 德語 |
fr | 法語 |
es | 西班牙語 |
pt | 葡萄牙語 |
hi | 印地語 |
id | 印度尼西亞語 |
ru | 俄語 |
th | 泰語 |
ar | 阿拉伯語 |
四、軟體代碼實作
- 序列槽收發配置
- ESP8266基本功能配置
- 資料解析函數
- OLED顯示