raspberry pi_如何构建Raspberry Pi家庭仪表板_cumj63710的博客-程序员秘密

技术标签: python  java  android  linux  编程语言  

raspberry pi

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

  • 我所在地区的当前温度和天气预报
  • 下一班车在当地公交车站停靠
  • 新闻头条
  • 试管状态
  • 我的位置模糊(例如,在工作,旅行中)

如何开始

我决定用Python 3编写仪表板并使用flask框架,因为我想增强自己的Python 3技能。 我还希望能够使用NFC(近场通信)标签并查看它们可以做什么。

使用NFC标签背后的概念是,它允许您将标签放置在各个位置,触摸手机上的标签,以及使用NFC阅读器应用程序在家中更新我的仪表板。 您需要一部已启用NFC的电话(我的Nexus 4启用了)。

我对标签进行了编程,以向在我的OpenShift应用程序上运行的端点启动HTTP GET请求。 这个GET请求有一些用途。 最重要的是,发送信号到我的位置模糊或提供反馈信息,例如在任何一天我从Pret那里喝了几杯咖啡。

这个怎么运作

这是一个解释的小图:

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

NFC tagging process

硬件

这是我的项目所需的硬件:

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

软件和服务

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

对于读取和写入NFC标签:NFC Tools – Android专业版,这是一种便宜,便捷的应用程序,可让您对NFC标签进行编程和重新编程,包括HTTP GET和POST请求。

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

有关我的状态信息:

  • 我的Raspberry Pi运行Raspbian Wheezy,这是一个简单的Python请求和flask应用程序,用于轮询API并在屏幕上显示信息。
  • 在Red Hat OpenShift平台上运行的Python和MongoDB应用程序(免费层可供任何人使用),它使我能够从手机的Web端点发送和检索信息。

有关旅行信息:

  • TfL(伦敦运输) 管状态API
  • TfL公交车状态API(使用本地公交车站ID获取到达时间)

对于新闻头条:

  • 英国广播公司的RSS提要

使用OpenShift

OpenShift提供了一个免费层,有点像一个容器服务,它可以运行多达三个简单的应用程序(以及MonogoDB等)。当然,此级别并不真正适用于生产型应用程序,因为实例进入睡眠状态经过一段时间的废止。

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

一旦解决了调试的最初问题,对我来说,在平台上进行开发就很轻松。 最初,我的代码在本地工作,但不能在OpenShift中工作,但是这种调试解决方案解决了这一难题。

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

显示仪表板

该屏幕快照显示了结果,并且您可以看到它的分辨率很低,因为Raspberry Pi屏幕为800 x480。它不是很漂亮,但是我喜欢它。

Pi Dashboard

对于我的下一个项目,我想在石膏板中留出一些空间,并在其中安装Raspberry Pi显示器-但也许有一天会充满水,电,钻子和疼痛。

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

有用的链接

翻译自: https://opensource.com/article/17/3/pi-display-dashboard

raspberry pi

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cumj63710/article/details/107420273

智能推荐

git add 添加 多余文件(撤销操作)_喜欢吃腊肉的Naro的博客-程序员秘密

这样的错误是由于, 有的时候可能git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件git add 如果添加了错误的文件的话撤销操作:git status 先看一下add 中的文件git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了git reset HEAD XXX/XXX/XXX.python 就是对某个文...

spring-cloud-stream-reactive响应式编程-发布订阅初步_t0mCl0nes的博客-程序员秘密

spring-cloud-stream-reactive是spring-cloud-stream发布订阅消息驱动的响应式编程组件。提供异步非阻塞消息发布订阅。下面是一大坨说明=-= 通过output输出管道 和 input输入管道来发布和订阅消息,spring-cloud-stream的binder负责将管道适配到指定的消息中间件,并负责与消息中间件交互(相当于在管道和消息中间件之...

matlab画两个三维曲线图,画出三维曲线z^2=x^3+6*x*y+y^4+6*x+2*y-1 的图像.用matlab绘制..._叶子虫的博客-程序员秘密

问题描述:画出三维曲线z^2=x^3+6*x*y+y^4+6*x+2*y-1 的图像.用matlab绘制1个回答分类:综合2014-10-20问题解答:我来补答[email protected](x,y,z)x.^3+6*x.*y+y.^4+6*x+2*y-1-z.^2;h=implicitsurf(f,[-55]);----------------------------------------------functio...

使用js栈stack类的实现_weixin_33852020的博客-程序员秘密

使用js栈stack类的实现/*使用栈stack类的实现*/function stack() { this.dataStore = [];//保存栈内元素,初始化为一个空数组 this.top = 0;//栈顶位置,初始化为0 this.push = push;//入栈 this.pop = pop;//出栈 this.peek = peek;//查看...

oralce数据库表删除主键约束_删除表中已有的主键约束_han_dongwei的博客-程序员秘密

主键约束的创建有两种情况:有名型和无名型,1  有名型:create table students (studentid int ,studentname varchar(8),age int,constraint yy primary key(studentid));或者create table nbia_risk_info(id number(10)

怎么看外文文献的影响因子_如何看懂英文论文?别找了,方法在这儿!_丁香妈妈的博客-程序员秘密

自从从小编在公众号推出了“EasyGPA论文干货”系列后,就有不少小伙伴在后台跟小编讨论关于论文的知识。首先小编很感谢各位童鞋对小编的支持,很认真的阅读了那些真的让人“看不下去”的专业知识讲解。最近有不少童鞋说,论文也同时需要大量的阅读来提升技巧,就像我最近开始阅读了不少英文论文,可最终都“死在了半路上”(看着看着就睡过去了!),因为专业名词神马的太多了,要说一个一个去查字典,那不简直要人命嘛……...

随便推点

在Unity导入Visual studio2017,解决在unity打开c#脚本写代码没有Unity相关提示_unity打不开c#文件_Asteroid 325的博客-程序员秘密

2019/5/18解决1.在Visual studio2017的工具->【获取工具和功能】->会打开一个Visual studio community 2017->在【工作负载】那一栏勾上【通过uinty的游戏开发】勾上->再点右下角的【修改】->再打开unity->在unity【Edit】中的【preferences】->【Extenal Tools】...

【面试】京东数据分析工程师(暑期实习)_京东的营销数据分析师_任良图的博客-程序员秘密

PO主已挂。。。一面(20分钟左右):我一面的面试官是商城的,偏业务方向。1、自我介绍xxx+学校专业+实习+为啥选这个岗位2、聊实习①详细讲之前实习的项目,围绕那个项目我们聊了好多②之前接需求有没有矛盾,怎么处理之类的3、聊专业我专业可能不算完全对口,但也是切合的。面试官有疑问,我强行圆回来了。4、聊业务①流量下降你怎么分析②用没有用过埋点之类的...

几款实用的内网穿透工具,推荐_终码一生的博客-程序员秘密

点击“终码一生”,关注,置顶公众号每日技术干货,第一时间送达!本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。1、nps1.1 简介nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

为什么Hive中的group by后面不能使用字段别名?_hive group by 别名_雷恩Layne的博客-程序员秘密

为什么Hive中的group by后面不能使用字段别名呢?看了这篇文章你将一目了然。文章目录1. 案例说明2. 分析原因3. 解决办法4. 执行效率5. 总结1. 案例说明我们以一个例子来说明。(1)数据创建business.txt,内容如下:jack,2017-01-01,10tony,2017-01-02,15jack,2017-02-03,23tony,2017-01-04,29jack,2017-01-05,46jack,2017-04-06,42tony,2017-01-

针对前端导出功能的流程梳理_Bug汇总者的博客-程序员秘密

第一步:前端导出设置responseType:‘blob‘正常情况下,我们导出功能的请求需要在请求头中添加responseType:‘blob,已保证拿到正确的文本流,然后通过后端返回文本流,我们前端生成a标签,借以实现导出文本!接口如下:// 导出export function zjExportUpdata(id) { return request({ url: `/infomgr/attach/batch-download?relIds=${id}`, method: 'ge

拥抱NoSQL--谈Spring Data MongoDB的简单使用_weixin_30751947的博客-程序员秘密

先说说MongoDB是什么。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且...

推荐文章

热门文章

相关标签