如何构建树莓派家庭仪表盘

803 位读者喜欢这篇文章。
Raspberry Pi 3 board

Raspberry Pi Foundation。CC BY-SA 4.0

去年圣诞节我很幸运地得到了一个带有 7 英寸显示屏的树莓派 2B。 我立即就有了使用它的计划:我将制作一个家庭仪表盘,显示一些可以从起居室周围读取的有用信息。

  • 我所在地区的当前温度和天气预报
  • 当地公交车站的下一班公交车到达时间
  • 新闻头条
  • 地铁状态
  • 我的模糊位置(例如,在工作地点、旅行中)

如何开始

我决定用 Python 3 编写仪表盘,并使用 flask 框架,因为我想提高我的 Python 3 技能。 我还想玩玩 NFC(近场通信)标签,看看它们能做什么。

使用 NFC 标签背后的概念是,它允许您将标签放置在各个位置,用手机触摸它们,并使用 NFC 阅读器应用程序更新我家的仪表盘。 你需要一部启用 NFC 的手机(我的 Nexus 4 有)。

我将标签编程为向我的 OpenShift 应用程序上运行的端点启动 HTTP GET 请求。 这个 GET 请求有几个用途;最重要的是,发送我的模糊位置信号,或提供反馈信息,例如我每天从 Pret 喝了多少杯咖啡。

它是如何工作的

这是一个解释的小图

  • /coffeecount/plusone:这会增加咖啡计数(在 MongoDB 中),可以通过另一个带有简单 get 请求的端点读取。 MongoDB 集合每晚 24 小时清除一次。
  • /location/one /location/two 等:这设置了模糊位置,该位置也存储在 MongoDB 中,并且可以通过另一个端点检索。

NFC 标签过程https://open-source.net.cn/sites/default/files/nfc_tagging_process.png" title="NFC 标签过程" typeof="foaf:Image" width="700">

硬件

这是我的项目所需的硬件

  • 树莓派 2B、7 英寸官方 Pi 显示器、Wi-Fi 适配器和 Pi 电源
  • 廉价的 NFC 标签 [NTAG213],可以从 亚马逊 购买
  • 具有适当 Android 版本的、支持 NFC 的手机,以运行该软件

软件和服务

我为信息来源选择的 API 和数据服务都是免费使用的,只要您遵守限制和规则即可。

对于读取和写入 NFC 标签:NFC Tools – Pro Edition for Android,这是一个廉价、方便的应用程序,允许您在 NFC 标签上编程和重新编程操作,包括 HTTP GET 和 POST 请求。

对于天气预报:Met Office 的天气 API。

对于我的状态信息

  • 我的树莓派运行 Raspbian Wheezy,一个简单的 Python requests 和 flask 应用程序,用于轮询 API 并在屏幕上显示信息。
  • 一个在 Red Hat OpenShift 平台上运行的 Python 和 MongoDB 应用程序(任何人都可以免费使用),它允许我从手机上的 Web 端点发送和检索我的信息。

对于出行信息

  • TfL(伦敦交通局)地铁状态 API
  • TfL 公交状态 API(使用本地公交车站 ID 来获取到达时间)

对于新闻头条

  • BBC 的 RSS feed

使用 OpenShift

OpenShift 提供了一个免费层,有点像容器服务,可以运行最多三个简单的应用程序(加上 MonogoDB 等)。当然,此级别实际上不适合生产型应用程序,因为实例会在一段时间不使用后进入睡眠状态。

要启动并运行您的应用程序,创建一个 OpenShift 帐户并按照简单的说明进行操作,这些说明将告诉您如何配置密钥、应用程序名称等。 然后,您需要在本地机器上安装 SDK,编写代码,并将其推送到 Internet 上的 OpenShift 服务器。 然后,OpenShift 将获取代码依赖项(例如,MonogDB)并启动该过程。 当然,如果您希望通过 HTTP 访问该项目,则必须定义一个 Web 服务器(例如,一个 flask Web 应用程序)。

一旦我克服了最初的调试问题,在这个平台上进行开发对我来说就相当轻松了。 起初,我的代码在本地可以工作,但在 OpenShift 中却不行,但是 这个调试解决方案 解决了这个难题。

我在 OpenShift 中运行的应用程序非常简单。 它是一个使用 flask 和 MongoDB 的 Python 3 应用程序,到目前为止,您已经了解了它的大部分工作原理。 这是一个经过身份验证的端点,它接收来自我手机的 GET 请求,并根据目标端点递增和更改值。

显示仪表盘

此屏幕截图显示了结果,如您所见,它的分辨率非常低,因为树莓派屏幕是 800 x 480。 它不是很漂亮,但我喜欢它。

Pi 仪表盘https://open-source.net.cn/sites/default/files/dashboard_screen.png" title="Pi 仪表盘" typeof="foaf:Image" width="700">

对于我的下一个项目,我想在我的石膏板上留出一个小空间,并将树莓派显示器装进去——但有了水、电、钻头和痛苦,也许有一天可以实现。

如果您有任何意见、问题或反馈,请随时 与我联系

有用的链接

标签
Conor
我是一名系统管理员,现在专注于系统安全和架构,我对 Linux、安全和通用黑客技术很感兴趣,只要时间允许 :)。 这就是为什么我决定写一些文章,并分享我使用一些开源软件和大部分廉价组件所做的事情。

1 条评论

源代码在哪里?

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.