天天看點

利用單片機實作天氣伺服器擷取指定位置天氣資料

大家好,今天主要和大家聊一聊,如何利用單片機從心知天氣伺服器上擷取到指定位置的天氣資料,咱們先來了解一下心知天氣吧!

目錄

​​第一:天氣資料API​​

​​第二、通信原理圖以及資料解析​​

​​第三、天氣資料傳回結果示例​​

​​1.天氣現象代碼說明​​

​​2.天氣現象優先級​​

​​3.多語言支援說明​​

​​四、軟體代碼實作​​

第一:天氣資料API

利用單片機實作天氣伺服器擷取指定位置天氣資料

其中使用者使用免費版可以調用哪些資料?

  1. 天氣實況,包括天氣現象文字、代碼和氣溫三項重點資料
  2. 未來3天天氣預報,包括白天天氣現象文字及代碼、晚間天氣現象文字及代碼、當天最高溫度和最低溫度、風向風速
  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顯示