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

    文章

    2519

    浏览量

    67227
  • 仪表板
    +关注

    关注

    0

    文章

    35

    浏览量

    9474
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索LTC1043:双精度仪表开关电容构建模块的卓越性能与应用

    探索LTC1043:双精度仪表开关电容构建模块的卓越性能与应用 在电子设计的广阔领域中,一款性能卓越的芯片往往能为工程师们带来更多的设计灵感和解决方案。今天,我们就来深入了解一下Linear
    的头像 发表于 04-02 09:50 215次阅读

    AD8295:精密仪表放大器的卓越之选

    ,在节省电路空间的同时,还具备出色的性能。 文件下载: AD8295.pdf 一、产品概述 AD8295将精密仪表放大器前端所需的所有组件集成在一个4mm×4mm的小型封装中,包含一个高性能仪表放大器、两个通用运算放大器和两个
    的头像 发表于 01-16 10:05 501次阅读

    恩智浦i.MX RT1170 MCU如何变革两轮车骑行体验

    以MCU为核心的平台为入门级数字互联仪表板 (DCC) 增添智能手机镜像投屏功能。目前,可集成于仪表板的骑行者必备功能日益丰富,RT产品路线图还将纳入更多先进特性。
    的头像 发表于 12-19 16:25 2553次阅读
    恩智浦i.MX RT1170 MCU如何变革两轮车骑行体验

    迅为iTOP-Hi3516开发驱动开发资料全面上线,构建从入门到精通的完整学习路径!

    迅为iTOP-Hi3516开发linux驱动开发资料全面上线,构建从入门到精通的完整学习路径!
    的头像 发表于 12-19 15:47 979次阅读
    迅为iTOP-Hi3516开发<b class='flag-5'>板</b>驱动开发资料全面上线,<b class='flag-5'>构建</b>从入门到精通的完整学习路径!

    【作品合集】汇思博SEEK100开发测评

    SEEK100开发开箱&amp;简介 【汇思博SEEK100开发试用体验】02 环境搭建及新建测试工程 【汇思博SEEK100开发试用体验】03 简约风天气APP开发-
    发表于 09-15 10:24

    Nuvoton ChipCorder在汽车仪表板中的应用

    的调查结果强调了对汽车音频的需求不断增长,特别是在标准仪表板配置中。这需要能够快速传递各种紧急警报并提供直接、快速的语音提示的直观功能,确保及时向驾驶员传递信息。 预编程播放录制的音频文件 各种车辆信息
    发表于 09-05 06:07

    如何使用 CyCloneTCP 和 FreeRTOS 在 NuMaker IoT 构建 Web 服务器?

    使用 CyCloneTCP 和 FreeRTOS 在 NuMaker IoT 构建 Web 服务器
    发表于 09-04 08:10

    如何使用 Mbed OS 在 NuMaker IoT 构建 Web 服务器?

    使用 Mbed OS 在 NuMaker IoT 构建 Web 服务器
    发表于 09-04 06:33

    【RA4E2开发评测】——7.使用AT指令获取城市天气预报

    使用ESP8266连接RA4E2开发后,可以通过ESP8266连接WIFI网络,然后通过AT指令访问api.seniverse.com心知天气网站获取城市天气预报。 板子连接如下图所示: 硬件
    发表于 09-03 13:10

    ​​FourCastNet 3实现快速精准的大型集合天气预报

    FourCastNet 3(FCN3)是 NVIDIA Earth-2 中最新的 AI 全球天气预报系统。FCN3 首次完美地结合了概率预测能力、计算效率、频谱保真度、集合校准和次季节
    的头像 发表于 08-30 15:49 2611次阅读

    如何使用 SEGGER emWin AppWizard 工具为仪表板界面设计图形用户界面?

    如何使用 SEGGER emWin AppWizard 工具为仪表板界面设计图形用户界面 (GUI)。它集成了控制 MA35H0 系列评估上的 LED 和按钮的功能。
    发表于 08-19 07:23

    利用NVIDIA Earth-2平台预测天气

    随着极端天气事件愈发频繁,破坏性也越来越强,能够对其进行预测变得至关重要。对于那些对天气波动非常敏感的行业来说,次季节气候预测(即预测两周或更长时间之后的天气),为主动决策和风险管理奠定了基础。
    的头像 发表于 08-12 15:08 1562次阅读

    【汇思博SEEK100开发试用体验】05 天气app开发--支持24小时+7天天气预报

    1 前言 这次接着开发天气APP,上次已经实现了从和风天气获取实时、24h以及7天的天气数据了,但只是将实时数据显示出来。这次要完成24h和7天的数据显示,用到List和Scroll容器。 2
    发表于 07-08 20:23

    【汇思博SEEK100开发试用体验】04 网络连接及获取和风天气数据

    1 前言 接着开发天气APP。这次要实现通过http请求获取和风天气的数据,然后将其解析到我们制定好的模型中,以便调用赋值。 2 http数据请求API 2.1 介绍 应用通过HTTP发起一个数
    发表于 07-08 19:26

    【汇思博SEEK100开发试用体验】03 简约风天气APP开发--首页UI布局及组件介绍

    1 前言 本次开发的评测最终目标是做出来一个简约风格的天气APP。现在从0开始学习基于openharmony的鸿蒙开发。这次先完成主界面的排版和布局,把应用大体框架确定下来。 2 线性布局
    发表于 07-08 13:32