ESP8266-Seniverse库使用说明

位置导航: 首页 / 物联网平台 / ESP8266心知天气应用 / 本页

在之前的课程里,我们学习了如何编写程序来利用ESP8266获取心知天气API数据。在我们开发需要天气信息的物联网项目时,可以使用心知天气API数据来获取天气信息。为了简化您的开发流程,提高开发效率。我们为您编写了一个专门用于获取心知天气的库,您只需要几行代码,就可以使用ESP8266获取天气信息。

本节课里,我们将向您讲解使用ESP8266-Seniverse库的具体方法。

1.准备工作

1.1 注册心知天气账户
使用本库前请预先注册好心知天气账号并且开通免费服务。如需了解详细操作方法,请点击这里前往我们制作的教程页面

1.2 下载ESP8266-Seniverse库
请通过以下方式中的任何一种,来将ESP8266-Seniverse库下载到您的电脑中。
蓝奏云:https://wwa.lanzous.com/irrqvdns63i
GitHub:https://github.com/taichi-maker/ESP8266-Seniverse
码云:https://gitee.com/taijichuangke/ESP8266-Seniverse

1.3 将ESP8266-Seniverse库安装到Arduino IDE中
假如您不太确定如何操作,可以点击这里前往我们制作的图文教程页面。

1.4 将ArduinoJson库安装到Arduino IDE中
ArduinoJson库可通过以下渠道下载:
本站下载地址:太极创客网站下载页Arduino / ESP8266-NodeMCU第三方库下载部分
GitHub: https://github.com/bblanchon/ArduinoJson

2. 使用ESP8266-Seniverse库

ESP8266-Seniverse库可通过心知天气API获取以下免费信息:

– 实时天气信息(温度,天气)
– 天气预报信息(温度,天气,降水概率,风力,风向,湿度)
– 获取实时生活指数(穿衣,紫外线强度,洗车,旅游,感冒,运动)

接下来我们将提供三段示例程序的基本介绍。这三段示例程序分别用于实现以上列表中的三种功能。虽然是三段示例程序,但是程序实现的过程非常相似。我们将重点介绍以上列表中的第一个功能示例,也就是通过心知天气数据API获取实时天气信息

2.1 获取实时天气信息示例程序

以上示例程序是ESP8266-Seniverse库example目录中的weather_now程序。

首先在以上示例程序的第38行里,我们通过WeatherNow来建立对象获取心知天气的对象,该语句为WeatherNow weatherNow;

接下来程序第47行使用config函数配置连接心知天气的用户私钥(reqUserKey)、城市信息(reqLocation)以及温度单位(reqLocation)。weatherNow.config(reqUserKey, reqLocation, reqUnit)

在程序第51行使用update函数实现ESP8266开发板通过心知天气对天气信息进行更新 weatherNow.update()。此函数返回值为bool型。在ESP8266成功连接心知天气服务器并且服务器返回响应状态码为200时,此函数将会返回真,否则会返回假。

程序的第54行使用了getServerCode()函数来获取心知天气服务器响应状态码。该函数可以获得的服务器响应状态。当用户通过ESP8266向心知天气发送的请求存在问题时(如私钥错误、请求信息内容错误等),服务器会通过响应状态码告知用户问题具体原因。您可以通过心知天气的官方文档获得服务器响应状态码所对应的具体问题原因。

程序56,58,60行分别使用了一系列函数用来获取开发板更新到的天气信息具体内容。这些函数的作用请见以下列表。

– 获取当前天气信息 (返回值类型:String): weatherNow.getWeatherText()
– 获取当前天气信息 (返回值类型:int): weatherNow.getWeatherCode()
– 获取当前温度信息 (返回值类型:int): weatherNow.getDegree()

程序第62行使用getLastUpdate()函数来获取心知天气公司的天气服务信息更新时间。

2.2 获取天气预报信息示例程序

以下示例程序与2.1 获取实时天气信息在结构上非常相似。这里我们将着重讲解程序中的不同部分。

首先程序第38行建立获取天气预报信息的对象名称使用的语句是Forecast forecast。这一点与以上程序有所区别。

另外在获取天气预报所使用的函数也与以上程序不同,以下列出了这一系列函数的具体用途(下列函数的参数i为获取第几天信息的天数序号。例:参数为0,则函数将会返回今天的天气预报信息。参数为1,则返回明天的天气预报…依此类推。参数i取值范围为0-2。):

– 获取白天天气信息(返回值类型:String): forecast.getDayText(i)
– 获取白天天气信息(返回值类型:int): forecast.getDayCode(i)
– 获取夜晚天气信息(返回值类型:String): forecast.getNightText(i)
– 获取夜晚天气信息(返回值类型:int): forecast.getNightCode(i)
– 获取最高气温(返回值类型:int) : forecast.getHigh(i)
– 获取最低气温(返回值类型:int) : forecast.getLow(i)
– 获取心知天气信息更新时间(返回值类型:String) :forecast.getLastUpdate(i)
– 获取降水概率信息(返回值类型:float): forecast.getRain(i)
– 获取风向信息(返回值类型:String): forecast.getWindDirection(i)
– 获取风速信息(返回值类型:float): forecast.getWindSpeed(i)
– 获取风力信息(返回值类型:int): forecast.getWindScale(i)
– 获取湿度信息(返回值类型:int): forecast.getHumidity(i)

2.3 获取生活指数信息示例程序
以下示例程序中的结构与操作方法都与以上示例程序非常相似,我们就不再赘述它的具体内容了,而只列出主要函数的功能用途:

– 获取洗车建议(返回值类型:String): lifeInfo.getCarWash()
– 获取穿衣建议(返回值类型:String): lifeInfo.getDressing()
– 获取流感建议(返回值类型:String): lifeInfo.getFactorFlu()
– 获取运动建议(返回值类型:String): lifeInfo.getExercise()
– 获取旅游建议(返回值类型:String): lifeInfo.getTravel()
– 获取紫外线建议(返回值类型:String): lifeInfo.getUV()