2025年esp8266天气时钟教程(esp8266获取天气教程)

esp8266天气时钟教程(esp8266获取天气教程)p style margin left 0px 本篇介绍了如何使用 u ESP8266 u 通过 WIFI 连网获取 u 网络 u 天气和网络时间 然后借助 U8g2 库 在 u OLED u 上显示当前时间和天气 u 信息 u p

大家好,我是讯享网,很高兴认识大家。



 <p style="margin-left:0px;"> 本篇介绍了如何使用<u>ESP8266</u>,通过WIFI连网获取<u>网络</u>天气和网络时间,然后借助U8g2库,在<u>OLED</u>上显示当前时间和天气<u>信息</u>。</p> 

讯享网

连网获取网络天气,一般需要通过http的方式,从天气信息提供商的网络地址获取天气信息。

讯享网这里以心知天气为例,需要先注册一个开发者账号,然后获取自己的私钥,也就是等下要用到的key。</p> 

pYYBAGKczR2AP8pFAADHRuQ2xoI534.png
讯享网

</p> 

讯享网然后可以先在浏览器中输入如下链接,注意要将自己的key替换进去,然后就可以测试一下天气信息的获取情况。</p> 

https://a<u>pi</u>.seniverse.com/v3/weather/now.json?key=替换为你的私钥&loca<u>ti</u>on=HangZhou&language=en&unit=c</p> 

讯享网如下即为获取的天气信息,是json格式的:</p> 

pYYBAGKczSqAEsxBAAD9z39vn7o109.png

上面先通过浏览器的方式获取到了天气信息,而ESP8266没有浏览器功能,需要编写代码实现http数据请求。</p> 

讯享网在编写代码之前,需要先了解一下基础的http请求原理。</p> 

url全称是资源描述符,一个url地址,用于描述一个网络上的资源,而http中的get、post、put、dele<u>te</u>就对于着这个资源的查、改、增、删4个操作,get一般用于获取/查询资源信息。</p> 

讯享网url的格式: 【协议】://【主机名(或者叫域名)】【:<u>端口</u>号(可选)】/【文件路径】/【文件名】</p> 

例如:https://api.seniverse.com/v3/weather/now.json?key=替换为你的私钥&location=HangZhou&language=en&unit=c</p> 

讯享网协议:https</p> 

域名:api.seniverse.com</p> 

讯享网客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(he<u>ad</u>er)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。</p> 

poYBAGKczTGAA3FvAAA8OcVsn7A182.png

服务器HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。</p> 

pYYBAGKczTeAcHSeAADSG00i2ao868.png

讯享网根据http协议,可以编写ESP8266进行http请求的代码:</p> 
 

讯享网http请求获取到的天气数据是json格式的(关于json的介绍可参考:),需要对数据进行解析,获取到具体的天气和温度等数据。</p> 

可以将获取的json原始数据打印出来,方便确认程序是否获取到的天气数据。</p> 

讯享网具体代码如下:</p> 
 

原始json格式的天气数据和解析后的天气和温度数据如下:

poYBAGKczT-AJANtAAEDvbsdX74343.png

天气现象代码对照表

解析到的天气数据,除了英文形式的天气信息(text),还有一个对应的天气码(code),如上图的Cloudy对应的天气码是4。通过天气码,也可以转换为天气。天气码的对照表可参考心知天气文档:https://docs.seniverse.com/api/start/code.html

poYBAGKczUiADexiAABqezKK6UI281.png

简化起见,这里只使用常用的4种天气。

代码 中文 英文 0 晴(国内城市白天晴) Sunny 4 多云 Cloudy 9 阴 Overcast 13 小雨 Light Rain0

NTP(Network Time Protocol) 是网络时间协议,它是用来同步网络中各个计算机时间的协议。

ESP8266可以连网,那就也可以通过获取网络时间来得到当前的时间:

讯享网 

获取到天气信息和时间后,需要将这些信息显示出来。</p> 

讯享网这里使用0.96寸OLED显示屏来显示,借助U8g2库,显示文字与天气图标(U8g2库的使用,可参考:)。</p> 

具体的显示代码如下:</p> 
讯享网 

pYYBAGKczVKAJskVAAKYT8UVGWI251.png

本篇介绍了http获取网络天气的基本原理,并通过实践,使用ESP8266连网获取网络天气和网络时间,借助U8g2库,在OLED上显示当前时间和天气信息。</p> 
小讯
上一篇 2025-05-01 22:13
下一篇 2025-04-15 21:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/206087.html