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

目录

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

代码 中文 英文 图标

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

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

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

  1. java获取word固定位置的值_java 实现保存Word文档中指定位置的数据,又保存整篇文档...

    1:需求 用户在线编辑完word 文档后希望保存整篇文档, 同时把保存文档中指定位置的数据 2:方案 用 pageoffice  实现既保存Word文档中指定位置的数据,又保存整篇文档 4:核心思想及 ...

  2. java如何接受字符_java中string怎么获取指定位置的字符

    //截取#之前的字符串String str = "sdfs#d";str.substring(0, str.indexOf("#"));// 输出的结果为:sd ...

  3. django获取指定列的数据

    django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://do ...

  4. 【Python数据分析】利用Python删除EXCEL表格中指定的列数据或行数据

    如何利用Python删除EXCEL表格中指定的列数据?今天与大家一起分享一下DataFrame对象的drop()函数,drop()函数可根据标签删除EXCEL表格中的列数据或行数据,其语法格式如下: ...

  5. Android使用高德和风天气Sdk获取定位实况天气数据(二)

    Android使用高德和风天气Sdk获取定位实况天气数据(二) 先看一下效果 关于 实现 第一步,引用高德api与和风天气 第二步,修改AndroidManifest.xml 第三步,修改activi ...

  6. nodejs 向mongodB获取指定数目的数据

    nodejs 向mongodB获取指定数目的数据 原理:通过向nodejs服务器端发送请求,nodejs 收到请求向mongodB读取五条数据,在控制台中打印出来: nodejs段代码(新建一个文件s ...

  7. JS之获取指定位置Unicode的charCodeAt()方法

    用法:charCodeAt() 方法可返回指定位置的字符的 Unicode 编码.这个返回值是 0 - 65535 之间的整数 语法:stringObject.charCodeAt(index) 参数 ...

  8. 利用微信小程序API获取所在位置周围的WIFI信息

    前言 这是我的第一篇博客,内心有点激动紧张. 为什么要写这一篇呢? 因为最近在跟老师做一个基于WIFI的室内定位的项目,里面需要获取周围WIFI信息,这困惑了我很长一段时间,查了很多百度,看了很多博客 ...

  9. Java操作word指定位置插入数据

    需求背景:因项目需要无法使用poi-tl包利用{{}}定位的方式向word模板的指定位置填写信息 解决方法:现利用替换占位字段的方式,在要替换的地方前后都插入书签 示例word: 在需要替换填写内容的 ...

最新文章

  1. 魏哲巍:图神经网络的理论基础 | 青源 Talk 第 7 期
  2. log4j写入mysql数据库_log4j日志写入数据库
  3. vs2008中xlslib与libxls库的编译及使用
  4. 【移动开发】Android应用程序中实用的代码框架(一)
  5. 如何使用SAP事务码SAT进行UI应用的性能分析
  6. 在Jetty中设置SSL
  7. 微软:软件帝王的复兴之路
  8. hibernate之自定义持久化实现
  9. 刷题——移动盒子及其相关题目
  10. NET Core-学习笔记(二)
  11. Flutter入门一——W7环境下使用VSCode配置Flutter开发环境(脱离Android Studio安装)...
  12. 华为手机asph啥机型_2020年最值得买大品牌手机盘点:华为vivo等五款机型入围
  13. 【Linux】Linux Ext2文件系统
  14. c语言16进制与字符串互转,C语言版的16进制与字符串互转函数
  15. c 登录窗口 oracle,C语言实现图形界面登陆窗口
  16. C++ 多种取整函数的使用和区别: ceil() floor() round() trunc() rint() nearbyint()
  17. EndNote导入文献出现带有大括号{}乱码的解决办法
  18. 图片数据增强,包括模糊,亮度,裁剪,旋转,平移,镜像 ,python ,LabelImg,LabelMe工具
  19. 安徽科技学院 信网学院网络文化节 赵涛
  20. 【附源码】计算机毕业设计java智能仓储设备管理系统设计与实现

热门文章

  1. 基于大数据的移动端茶叶销售系统(附源码)
  2. 移动大数据平台的架构、实践与数据增值
  3. PT_二维连续型随机变量(二维均匀分布@二维正态分布)
  4. RDA TDT TOT
  5. 技术解读PROFINET、Ethernet/IP等7种主流工业以太网
  6. Ping命令的幕后过程及其返回信息的分析
  7. 【转】GLONASS全球卫星导航系统
  8. 机器人相关课程考核材料归档实施细则2022版本
  9. 学习单片机对社会的帮助是很大的
  10. w ndows8光盘如何打开,Windows 8消费者预览版光盘版“真相”