0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 来源:工程师吴畏 2019-08-27 09:18 次阅读

第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将最终产品嵌入到网站中。

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

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

    关注

    2

    文章

    1382

    浏览量

    60989
  • 仪表板
    +关注

    关注

    0

    文章

    35

    浏览量

    9097
收藏 人收藏

    评论

    相关推荐

    面向火爆的两轮车市场,恩智浦发布新一代数字仪表板和无线连接参考平台!

    恩智浦新一代数字仪表板和无线连接参考平台可提供高性能图形和丰富的连接,带来卓越的两轮车用户体验 。      了解详情     恩智浦半导体公司宣布推出一款支持无线连接的组合式数字仪表板参考平台
    的头像 发表于 10-20 10:15 251次阅读
    面向火爆的两轮车市场,恩智浦发布新一代数字<b class='flag-5'>仪表板</b>和无线连接参考平台!

    运算放大器和仪表放大器构建的电流源操作和动态性能

    本文研究了围绕运算放大器和仪表放大器构建的电流源的操作和动态性能。如下图所示,运算放大器反馈环路中的仪表放大器使运算放大器的输出产生的负载电流与负载电阻无关
    的头像 发表于 09-20 10:29 779次阅读
    运算放大器和<b class='flag-5'>仪表</b>放大器<b class='flag-5'>构建</b>的电流源操作和动态性能

    将Arm Mobile Studio集成到CI工作流中

    的JSON报告,因此您可以使用任何兼容JSON的数据库和可视化工具(如ELK堆栈)构建自己的性能仪表板。 1.定期从项目存储库中提取最新的代码和资产,并为要运行的应用程序测试用例构建可调试的APK
    发表于 08-08 07:42

    使用Bunifu框架在c#中革新电动汽车仪表板设计

    在我们开始电动汽车仪表板改造之旅之前,让我们花点时间了解一下Bunifu框架。Bunifu框架是一个多功能的UI工具包,为开发人员提供了丰富的预构建控件、主题和自定义选项。它使开发人员能够毫不费力地制作现代且视觉上迷人的界面。
    的头像 发表于 08-07 15:29 696次阅读

    【FireBeetle 2 ESP32-S3开发体验】002:搭建MicroPython开发环境+天气时钟

    上一帖介绍FireBeetle 2ESP32-S3开发的开箱情况和搭建Arduino开发环境,然后测试了各个硬件,确认都是好用的。这一贴介绍搭建MicroPython开发环境,并在
    发表于 08-03 22:53

    E464模拟器的主要功能

    E464模拟器基于我们著名的SimuRail模拟引擎,配有统一的FS93型物理仪表板,再现了实际火车上的仪表板。移动教室还包括一个供观察者使用的区域,其中有一个带有三个显示器的面板,使他们能够看到正在进行的场景、仪表板的视图和学
    的头像 发表于 07-31 14:51 320次阅读

    新的Label Studio Enterprise仪表板增强了数据标签管理者的能力

    今天,我们很高兴地宣布推出项目绩效仪表板,这是LabelStudio Enterprise 备受期待的一项新功能。新的和改进的仪表板旨在为数据标记团队经理提供他们所需的见解,以更有效地交付标记数据并更快地将ML/AI模型投入生产。
    的头像 发表于 07-16 11:54 558次阅读
    新的Label Studio Enterprise<b class='flag-5'>仪表板</b>增强了数据标签管理者的能力

    168.第10节 fineBI使用:19 fineBI数据可视化分析、仪表板

    数据分析
    充八万
    发布于 :2023年07月12日 16:22:11

    Arduino BME280气象站仪表板

    电子发烧友网站提供《Arduino BME280气象站仪表板.zip》资料免费下载
    发表于 07-12 09:37 0次下载
    Arduino BME280气象站<b class='flag-5'>仪表板</b>

    航空天气按钮开源分享

    电子发烧友网站提供《航空天气按钮开源分享.zip》资料免费下载
    发表于 06-19 14:17 0次下载
    航空<b class='flag-5'>天气</b>按钮开源分享

    基于OBD2的仪表板

    电子发烧友网站提供《基于OBD2的仪表板.zip》资料免费下载
    发表于 06-16 14:51 1次下载
    基于OBD2的<b class='flag-5'>仪表板</b>

    离线仪表板开源分享

    电子发烧友网站提供《离线仪表板开源分享.zip》资料免费下载
    发表于 06-16 09:57 0次下载
    离线<b class='flag-5'>仪表板</b>开源分享

    大学教师仪表板开源分享

    电子发烧友网站提供《大学教师仪表板开源分享.zip》资料免费下载
    发表于 06-12 09:58 0次下载
    大学教师<b class='flag-5'>仪表板</b>开源分享

    低成本仪表放大器设计及分析

     使用仪表放大器的另一好处是,用户无需构建自己的差分放大器,因此省去了很多高成本的分立器件。本文将提出一种简单的方法来构建一个低成本仪表放大器并优化其性能。
    的头像 发表于 06-10 20:36 690次阅读
    低成本<b class='flag-5'>仪表</b>放大器设计及分析

    DS18B20传感器数据未出现的原因?

    我有两个通过 1 线连接的 DS18B20,我可以在 SSH ls -l /sys/bus/w1/devices/ 上看到来自它们的数据,并且它们已在我的代码中注册,地址可见 但是,数据没有出现在仪表板中,有什么线索是为什么吗?
    发表于 05-12 06:21