利用单片机实现天气服务器获取指定位置天气数据

简介: 大家好,今天主要和大家聊一聊,如何利用单片机从心知天气服务器上获取到指定位置的天气数据,咱们先来了解一下心知天气吧!​

第一:天气数据API

fb5e8ea8e2e3ac4aca2af8b864d0f2a2.png

其中用户使用免费版可以调用哪些数据?

  1. 天气实况,包括天气现象文字、代码和气温三项重点数据
  2. 未来3天天气预报,包括白天天气现象文字及代码、晚间天气现象文字及代码、当天最高温度和最低温度、风向风速
  3. 六项基本类生活指标,包括穿衣、紫外线强度、洗车、旅游、感冒、运动指数

第二、通信原理图以及数据解析

如何获取这些数据?咱们可以通过一个原理框架图来看一看

50874494dc2ec19c5ce4adf7156762cc.png

天气实况接口参数及数据返回

心知天气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 所有可能返回的天气现象代码。注:部分天气现象提供白天和夜间两种代码。


代码 中文 英文 图标

0

晴(国内城市白天晴)

Sunny

f7e4ff019bc0fc1d263ba2ecb5259e11.png

1

晴(国内城市夜晚晴)

Clear

d4b6f8723863050c48fa6ff2f1b21742.png

2

晴(国外城市白天晴)

Fair

f7e4ff019bc0fc1d263ba2ecb5259e11.png

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

总结:本次实验并不复杂,却拓展了我们的单片机领域,是我们向网络通信领域迈入的重要一步!

目录
相关文章
|
2月前
|
存储 安全 PHP
通过eXtplorer+cpolar,搭建个人云存储并实现访问内网服务器数据
通过eXtplorer+cpolar,搭建个人云存储并实现访问内网服务器数据
40 0
|
3月前
|
存储 弹性计算 安全
ECS技术专家教你如何保证业务数据全流程安全
本文内容整理自【弹性计算技术公开课——ECS安全季】中阿里云弹性计算技术专家陈怀可带来的课程《如何保证业务数据的全流程安全》。
156080 106
|
30天前
|
弹性计算 网络安全 虚拟化
ECS数据问题之升级配置预防数据丢失如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
1月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
1月前
|
消息中间件 关系型数据库 MySQL
Flink CDC产品常见问题之把flink cdc同步的数据写入到目标服务器失败如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
3月前
|
存储 数据挖掘 数据库
服务器RAID0:提高数据传输速度 (服务器raid0作用)与RAID1的区别
服务器RAID0:提高数据传输速度 (服务器raid0作用)与RAID1的区别
|
3月前
|
数据采集 编解码 图形学
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
104 0
|
1月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
420 4
|
1月前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程