如何使用DarkSkyAPI构建天气仪表板

电子说

1.3w人已加入

描述

第1步:入门

我们已经为您将大量代码放在一起并组织信息。我们只需要你一路做一些调整。如果您想要对我们的代码进行一些更改并发送天气数据,那么就有无限可能!

要检索我们为您准备的所有内容,您需要从GitHub克隆存储库。 GitHub是一项服务,允许我们存储,修改和管理这样的项目。您将需要在专用设备上运行此脚本。 Raspberry Pi是运行像本教程这样的应用程序的完美选择。

要克隆存储库,我们需要做的就是进入我们的Pi终端,或者通过SSH连接到你的pi的计算机终端并输入以下命令:

$ git clone https://github.com/InitialState/darksky.git

按Enter键,你会看到这个信息:

Cloning into ‘darksky’。..

remote: Counting objects: 2, done.

remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 2

Unpacking objects: 100% (2/2), done.

Checking connectivity.。. done.

一旦你看到这个,那么恭喜你,你已经成功地克隆了GitHub Repo并拥有构建这个项目的所有必要文件。在我们继续下一步之前,让我们花一些时间来探索这个目录并学习一些基本的命令行命令。

在终端中输入以下命令:

$ ls

此命令列出您当前所在目录中可用的所有内容。此列表显示我们的GitHub Repo已成功克隆到我们的目录中,名称为“darksky”。让我们看一下该目录中的内容。要移动到目录,您只需键入“cd”,然后键入要转到的目录的名称。

在这种情况下,我们将输入:

$ cd darksky

点击Enter后,您会看到我们现在位于darksky目录中。让我们再次输入“ls”,看看我们在pi上安装了哪些文件。

README.md darksky.py 。..

在这里,我们看到我们有自述文件和python文件。让我们使用“nano”命令查看darksky.py。 nano命令允许我们打开纳米文本编辑器,我们拥有该项目每个部分的所有python代码。继续输入:

$ nano darksky.py

在这里,您可以看到我们为此项目准备的所有代码。我们暂时不会对此文档进行任何更改,但可以随意滚动查看本教程后面的内容。

步骤2:使用Dark Sky API

仪表板

要使用Dark Sky API,您首先需要自己的API密钥。不用担心,获取API密钥很快且免费。您只需访问该网站并点击“免费试用”即可创建一个帐户。

每天免费获得1,000次API调用。每个免费每日限额的API请求费用为0.0001美元。

此限制会在UTC午夜自动重置。

预测请求会返回下周的当前天气预报。

Time Machine请求返回过去或将来某个日期的观察或预测天气状况。

您的秘密Dark Sky API密钥将如下所示: 0123456789abcdef9876543210fedcba。

您可以通过以下格式在浏览器中输入URL来对Dark Sky进行API调用:

https://api.darksky.net/forecast/[key]/[latitude],[longitude]

用Dark Sky API替换“key”随心所欲的关键和经度/纬度。您可以访问Google地图并搜索您的位置来查找经度和纬度。这些值将在URL中。使用您的访问键复制并粘贴上面的黑暗天空URL,并将值添加到地址栏中。

执行此操作后,您将看到如下内容:

{“latitude”:37.8267,“longitude”:-122.4233,“timezone”:“America/Los_Angeles”,“currently”:{“time”:1550615286,“summary”:“Clear”,“icon”:“clear-

day”,“nearestStormDistance”:57,“nearestStormBearing”:15,“precipIntensity”:0,“precipProbability”:0,“temperature”:53.9,“apparentTemperature”:53.9,

“dewPoint”:29.59,“humidity”:0.39,“pressure”:1022.45,“windSpeed”:3.87,“windGust”:9.25,“windBearing”:259,“cloudCover”:0.01,“uvIndex”:3,

“visibility”:7.8,“ozone”:309.71},“minutely”:{“summary”:“Clear for the hour.”,“icon”:“clear-day”,“data”:[

{“time”:1550615280,“precipIntensity”:0,“precipProbability”:0},。..

它可能有点压倒性且难以阅读,因此我建议使用JSON Formatter来帮助使数据更具可读性。当你这样做时,它看起来像这样:

object {9}

latitude: 37.8267

longitude: -122.4233

timezone: America/Los_Angeles

currently {19}

time: 1550615286

summary: Clear

icon: clear-day

nearestStormDistance: 57

nearestStormBearing: 15

precipIntensity: 0

precipProbability: 0

temperature: 53.9

apparentTemperature: 53.9

dewPoint: 29.59

humidity: 0.39

pressure: 1022.45

windSpeed: 3.87

windGust: 9.25

windBearing: 259

cloudCover: 0.01

uvIndex: 3

visibility: 7.8

ozone: 309.71

你刚刚进行了API调用!看看这有多容易?你甚至不必写一行代码。现在您已经掌握了API,我们可以转到数据流部分。

第3步:初始状态

仪表板

我们我们希望将所有天气数据流式传输到云服务,并将该服务转换为我们可以从笔记本电脑或移动设备访问的漂亮仪表板。我们的数据需要目的地。我们将使用初始状态作为该目的地。

步骤1:注册初始状态帐户

转到https://iot.app.initialstate。 com并创建一个新帐户。您可以获得14天的免费试用,任何拥有edu电子邮件地址的人都可以注册免费的学生计划。

步骤2:安装ISStreamer

将初始状态Python模块安装到Raspberry Pi上。在命令提示符下,运行以下命令:

$ cd /home/pi/

$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

步骤3:进行一些Automagic

在步骤2之后,您将看到类似于以下输出的内容到屏幕:

pi@raspberrypi ~ $ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

Password:

Beginning ISStreamer Python Easy Installation!

This may take a couple minutes to install, grab some coffee :)

But don‘t forget to come back, I’ll have questions later!

Found easy_install: setuptools 1.1.6

Found pip: pip 1.5.6 from /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7)

pip major version: 1

pip minor version: 5

ISStreamer found, updating.。.

Requirement already up-to-date: ISStreamer in /Library/Python/2.7/site-packages

Cleaning up.。.

Do you want automagically get an example script? [y/N]

Where do you want to save the example? [default: 。/is_example.py]

Please select which Initial State app you‘re using:

1. app.initialstate.com

2. [NEW!] iot.app.initialstate.com

Enter choice 1 or 2:

Enter iot.app.initialstate.com user name:

Enter iot.app.initialstate.com password:

当系统询问您是否要自动获取示例脚本时,将“y”设置为yes并按Enter键将脚本保存在默认位置。有关您使用的应用程序的问题,请选择2(除非您在2018年11月之前注册)并输入您的用户名和密码。

步骤4:运行示例脚本

运行测试脚本以确保我们可以为您的初始状态帐户创建数据流。编写以下命令:

$ python is_example.py

步骤6:示例数据

在Web浏览器中返回初始状态帐户。一个名为“Python Stream Example”的新数据桶应该出现在日志架的左侧(您可能需要刷新页面)。点击此桶查看您的数据。

步骤4:Dark Sky天气仪表板

仪表板

现在为有趣的部分。我们已准备好开始使用Dark Sky API创建天气仪表板并捕获我们选择的位置的天气历史记录。为此,我们将使用Python脚本:https://github.com/initialstate/darksky/blob/master/darksky.py。此脚本只需使用您的API密钥调用Dark Sky API,并在指定的时间间隔内检索天气信息。它还将该数据流式传输到您的初始状态帐户,这将允许您创建Dark Sky天气仪表板。

您可以将此脚本复制到Pi,或通过我们克隆的GitHub存储库访问它早。您可以通过键入以下命令更改为darksky目录来执行此操作:

$ cd darksky

从这里,您将能够访问我们将运行的python文件以创建我们的天气仪表板。在运行之前,您需要设置所需的参数并插入密钥。通过键入以下内容将Nano纳入darksky.py文件中:

$ nano darksky.py

然后编辑脚本顶部附近的部分:

# --------- User Settings ---------

CITY = “Nashville”

GPS_COORDS = “36.1628414,-86.780199”

DARKSKY_API_KEY = “PLACE YOUR DARK SKY API KEY HERE”

BUCKET_NAME = “:partly_sunny: ” + CITY + “ Weather”

BUCKET_KEY = “ds1”

ACCESS_KEY = “PLACE YOUR INITIAL STATE ACCESS KEY HERE”

MINUTES_BETWEEN_READS = 15

# ---------------------------------

您需要设置所需的GPS坐标和城市名称。您还必须插入您的Dark Sky API密钥和您的初始状态帐户访问密钥,否则您的数据将无处可去。 MINUTES_BETWEEN_READS参数将设置脚本轮询Dark Sky API获取天气信息的频率。 15分钟长期提供良好的间隔。为了进行短期测试,您可以将其设置为0.5分钟。进行更改,然后输入control + X退出并保存。

设置好参数后,就可以运行脚本了:

$ python darksky.py

如果你是ssh’ing到你的Pi并希望让这个脚本长时间不间断地运行,你可以使用nohup命令(没有挂断),如下所示:

$ nohup python darksky.py &

这个脚本正在运行要做的不仅仅是阅读天气数据并将其发送到初始状态。该脚本将利用Initial State工具中内置的表情符号支持,使仪表板更加酷炫。您可以看到用于从当前 - 》图标获取天气状态的逻辑,并将其转换为weather_icon功能中的表情符号标记。类似于moon_icon函数中的月相和wind_dir_icon函数中的风向。

步骤5:结论

仪表板

转到您的初始状态帐户并查看您的数据。我将所有百分比值更改为电弧规,将液体压力降至液位计,将温度更改为温度计。您可以更改为任何类型的瓷砖类型,并选择您的颜色和仪表。折线图。您可以将仪表板设置为暗或亮,并使用嵌入式iFrame将最终产品嵌入到网站中。

如果要将公共共享中的仪表板布局用作仪表板,则可以将布局导入按照此处的说明操作您的数据桶。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分