第一:天气数据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.”公钥+私钥“签名验证方式
“公钥 + 私钥” 验证方式更加安全。请求地址中只包含你的“公钥”以及用你的“私钥”制作的签名,因此 不会在请求地址中泄露你的私钥。方法见链接:
第三、天气数据返回结果示例
{ "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 所有可能返回的天气现象代码。注:部分天气现象提供白天和夜间两种代码。
代码 | 中文 | 英文 | 图标 |
0 |
晴(国内城市白天晴) |
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 | 阿拉伯语 |
注意:language 为可选参数。如果忽略,返回数据的默认语言为简体中文(默认值为zh-Hans)。气象灾害预警、农历、节气、生肖接口无多语言支持。生活指数的 details 无多语言支持。
四、软件代码实现
- 串口收发配置
- ESP8266基本功能配置
- 数据解析函数
- OLED显示
工程代码过于冗长,在此将实验功能视频以及工程代码都放于链接中,读者过后可以去尝试实现它!特别棒!
链接:https://download.csdn.net/download/weixin_41114301/86826257
总结:本次实验并不复杂,却拓展了我们的单片机领域,是我们向网络通信领域迈入的重要一步!