5 个家用 Raspberry Pi 项目

973 位读者喜欢这个。
5 projects for Raspberry Pi at home

Raspberry Pi Foundation, CC BY-SA

Raspberry Pi 电脑可用于各种环境和多种用途。 显然,它在教育领域占有一席之地,可以帮助学生在课堂和创客空间学习编程和创客技能,并且在工作场所和工厂中也有大量的工业应用。 我将介绍您可能想在家中构建的五个项目。

媒体中心

Raspberry Pi 在人们家中最常见的用途之一是在电视后面运行媒体中心软件,提供多媒体文件。 这很容易设置,并且 Raspberry Pi 提供了足够的 GPU(图形处理单元)能力来将高清电视节目和电影渲染到您的大屏幕电视上。 Raspberry Pi 上的 Kodi(以前称为 XBMC)是播放您在硬盘驱动器或网络附加存储上拥有的任何媒体的好方法。 您还可以安装插件来播放 YouTube 视频。

有几种不同的选项可用,最突出的是基于 Kodi 的 OSMC(开源媒体中心)和 LibreELEC。 它们在播放媒体内容方面都表现良好,但 OSMC 具有更具视觉吸引力的用户界面,而 LibreElec 则更轻量级。 您只需选择一个发行版,下载映像并安装到 SD 卡上(或者只使用 NOOBS),启动它,就可以开始了。

LibreElec

LibreElec; Raspberry Pi Foundation, CC BY-SA

OSMC

OSMC.tv, 版权所有,经许可使用

在继续之前,您需要决定 w应该使用哪种 Raspberry Pi 型号。 这些发行版适用于任何 Pi(1、2、3 或 Zero),并且在这些版本上视频播放效果基本相同。 除了 Pi 3(和 Zero W)具有内置 Wi-Fi 外,唯一明显的区别是用户界面的反应速度,在 Pi 3 上会快得多。 Pi 2 不会慢太多,所以如果您不需要 Wi-Fi,那也可以,但 Pi 3 在浏览菜单时明显优于 Pi 1 和 Zero。

SSH 网关

如果您想能够从互联网外部访问家庭网络上的计算机和设备,则必须在这些设备上打开端口以允许外部流量。 打开互联网端口存在安全风险,这意味着您始终面临遭受攻击、滥用或任何未经授权访问的风险。 但是,如果您在网络上安装 Raspberry Pi 并设置端口转发以仅允许 SSH 访问该 Pi,则可以将其用作安全网关,跳转到网络上的其他 Pi 和 PC。

大多数路由器允许您配置端口转发规则。 您需要为您的 Pi 提供一个固定的内部 IP 地址,并在您的路由器上设置端口 22 以映射到 Raspberry Pi 上的端口 22。 如果您的 ISP 为您提供静态 IP 地址,您将能够使用此地址作为主机地址通过 SSH 连接到它(例如,ssh pi@123.45.56.78)。 如果您有域名,则可以配置子域名以指向此 IP 地址,这样您就不必记住它(例如,ssh pi@home.mydomain.com)。

但是,如果您要将 Raspberry Pi 暴露在互联网上,则应非常小心,不要让您的网络面临风险。 您可以遵循一些简单的步骤来使其足够安全

1. 大多数人建议您更改登录密码(这很有道理,因为默认密码“raspberry”是众所周知的),但这不能防止暴力攻击。 您可以更改密码并添加双因素身份验证(因此您需要密码手机生成的限时密码),这更安全。 但是,我认为保护 Raspberry Pi 免受入侵者攻击的最佳方法是禁用 SSH 配置中的“密码身份验证”,以便您仅允许 SSH 密钥访问。 这意味着任何试图通过猜测您的密码进行 SSH 连接的人永远不会成功。 只有使用您的私有 SSH 密钥,任何人才可以获得访问权限。 同样,大多数人建议将 SSH 端口从默认的 22 更改为一些意想不到的端口,但简单的 Nmap 扫描您的 IP 地址将显示您的真实 SSH 端口。

2. 理想情况下,您不会在此 Pi 上运行太多其他软件,这样您就不会意外地暴露任何其他内容。 如果您想运行其他软件,您最好在网络上未暴露于互联网的另一个 Pi 上运行它。 确保您定期升级软件包,特别是 openssh-server 软件包,以保持软件包的最新状态,以便修补任何安全漏洞。

3. 安装 sshblackfail2ban 以将任何看起来有恶意行为的用户列入黑名单,例如尝试暴力破解您的 SSH 密码。

一旦您保护了 Raspberry Pi 并将其上线,您就可以从世界任何地方登录到您的网络。 进入 Raspberry Pi 后,您可以使用本地 IP 地址(例如 192.168.1.31)通过 SSH 连接到网络上的其他设备。 如果这些设备上有密码,只需使用密码即可。 如果它们也是仅限 SSH 密钥的,则需要确保使用 -A 标志通过 SSH 转发您的密钥:ssh -A pi@123.45.67.89

CCTV / 宠物摄像头

另一个很棒的家庭项目是设置摄像头模块来拍照或流式传输视频,捕获和保存文件,或在内部或互联网上流式传输。 您可能出于多种原因想要这样做,但两个常见的用例是自制安全摄像头或监控宠物。

Raspberry Pi 摄像头模块是一个出色的配件。 它提供全高清照片和视频,大量高级配置,并且 易于 编程红外摄像头非常适合这种用途,并且使用红外 LED(Pi 可以控制),您可以在黑暗中看到东西!

如果您想定期拍摄静态图像以密切关注事物,您可以编写一个简短的 Python 脚本或使用命令行工具 raspistill,并计划在 Cron 中重复执行。 您可能希望将其保存到 Dropbox 或其他 Web 服务,将其上传到 Web 服务器,或者您甚至可以创建一个 Web 应用程序来显示它们。

如果您想在内部或外部流式传输视频,那也很容易。 picamera 文档(在“Web 流媒体”下)中提供了一个简单的 MJPEG(运动 JPEG)示例。 只需下载或将该代码复制到文件中,运行它并访问 Pi 的 IP 地址的 8000 端口,您就会看到摄像头的实时输出。

一个更高级的流媒体项目 pistreaming 可用,它将 JSMpeg(JavaScript 视频播放器)与 Web 服务器和用于摄像头流的 websocket 分开运行。 这种方法性能更高,并且与之前的示例一样容易运行,但是涉及的代码更多,如果设置为在互联网上流式传输,则需要打开两个端口。

设置好 Web 流媒体后,您可以将摄像头放置在您想要的位置。 我设置了一个来密切关注我的宠物乌龟

Tortoise

Ben Nuttall, CC BY-SA

如果您想能够控制摄像头实际指向的位置,您可以使用伺服电机来做到这一点。 一个巧妙的解决方案是使用 Pimoroni 的 Pan-Tilt HAT,它允许您轻松地在两个维度上移动摄像头。 要将其与 pistreaming 集成,请参阅该项目的 pantilthat 分支

Pan-tilt

Pimoroni.com, 版权所有,经许可使用

如果您想将 Pi 放置在室外,您需要一个防水外壳和一些为 Pi 供电的方法。 PoE(以太网供电)电缆可能是实现此目的的好方法。

家庭自动化和物联网 (IoT)

现在是 2017 年,互联网连接设备无处不在,尤其是在家中。 我们的灯泡有 Wi-Fi,我们的烤面包机比以前更智能,我们的茶壶有遭受俄罗斯攻击的风险。 只要您保持设备的安全性,或者在不需要连接互联网时不要连接它们,那么您就可以充分利用 IoT 设备来自动化家中的任务。

您可以购买或订阅许多服务,例如 Nest Thermostat 或 Philips Hue 灯泡,它们允许您分别通过手机控制暖气或照明——无论您是在室内还是外出。 您可以使用 Raspberry Pi 通过根据涉及定时甚至传感器的规则集自动化与这些设备的交互来增强这些类型设备的功能。 您使用 Philips Hue 无法做的一件事是让灯在您进入房间时亮起,但是使用 Raspberry Pi 和运动传感器,您可以使用 Python API 打开灯。 同样,您可以配置 Nest 在您在家时打开暖气,但是如果您只想在至少有两个人回家时才打开暖气呢? 编写一些 Python 代码来检查哪些手机在网络上,如果至少有两部手机,则告诉 Nest 打开暖气。

您可以在不与现有 IoT 设备集成并且仅使用简单的组件的情况下做更多的事情。 自制防盗警报器、自动化鸡舍门开启器、夜灯、音乐盒、定时加热灯、自动化备份服务器、打印服务器,或任何您能想象到的东西。

Tor 代理和广告拦截

Adafruit 的 Onion Pi 是一个 Tor 代理,可使您的 Web 流量匿名化,使您可以免受窥探者和任何形式的监视而自由地使用互联网。 按照 Adafruit 关于设置 Onion Pi 的教程进行操作,您就可以开始享受平静的匿名浏览体验。

Onion-Pi

来自 Adafruit 的 Onion-pi,版权所有,经许可使用

Pi-hole您可以在您的网络上安装 Raspberry Pi,它会拦截所有 Web 流量并过滤掉任何广告。 只需将 Pi-hole 软件下载到 Pi 上,您网络上的所有设备都将没有广告(它甚至可以阻止您移动设备上的应用内广告)。

Raspberry Pi 在家中还有更多用途。 您在家中使用 Raspberry Pi 做什么? 您想用它做什么?

请在评论中告诉我们。

User profile image.
Ben 是 BBC News Labs 的软件工程师,曾任 Raspberry Pi 的社区经理。 他热衷于 Linux、Python 和所有开源事物! 在 Twitter 上关注 Ben @ben_nuttall。

7 条评论

我使用 RPi B+(配置过高)和一个简单的 bash/gpio 命令来控制我们太阳能热水器上备用电加热元件的定时。 通过 ssh 可以轻松地从远程点进行控制,并且还可以使用 DS18b20 传感器监控温度。 通过 cron 命令,如果热水器内置恒温器低于其开启点,它通常允许电加热器在下午 3:45 到 4:45 之间开启。 RPi 切换 gpio 线以启用固态继电器和用于其散热器的风扇,并从网络通过 ntp 获取其定时。

更安全的 ssh 安全方式是在其上设置 vpn,这样您就需要连接到 vpn。 在那时,您甚至不必连接到 pi ssh,而是可以直接连接到本地 IP。

此外,如果您确实想在同一个 pi 上运行多个应用程序,则可以将所有内容(包括 vpn)在 docker 中运行。

我认为一个很棒的应用是窗帘拉动装置,以便在早上让更多的阳光进来。 我个人目前正在为此努力!

关于使用 RPi 作为 ssh 网关的几个其他建议。 更改用户(我删除了 pi 并添加了一个长用户名),并且不允许 root 登录。 我还添加了 iptables 规则,该规则将立即锁定任何尝试使用 root 或 admin 登录的人。 fail2ban 对于 RPi ssh 网关来说似乎很棒。

关于 ssh 网关。 确保使用 iptables recent 库。 您可以保持所有端口关闭,并在您 telnet 到特定端口时打开 ssh。 请注意,端口已关闭,但 recent 库将密切关注到该端口的流量,然后标记来自任何命中该端口的主机的流量。 请注意,您需要确保在您选择的端口之上和之下放置一个关闭 ssh,这样随机扫描仪在端口中运行时将无法打开端口。 我在任何接触互联网的东西上都使用这个,它工作得很好。 还要使用 fail2ban。 另外,我个人使用运行 arno-iptables-firewall 脚本的 ubuntu

示例 iptables(在我的情况下,使用 arnos,我将以下内容添加到 /etc/arno-iptables-firewall/custom-rules 文件中)

iptables -A EXT_INPUT_CHAIN -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT

iptables -A EXT_INPUT_CHAIN -m state --state NEW -m tcp -p tcp --dport 2512 -m recent --name SSH --remove -j DROP
iptables -A EXT_INPUT_CHAIN -m state --state NEW -m tcp -p tcp --dport 2513 -m recent --name SSH --set -j DROP
iptables -A EXT_INPUT_CHAIN -m state --state NEW -m tcp -p tcp --dport 2514 -m recent --name SSH --remove -j DROP

我最喜欢的添加大量安全性的方法之一。 正如史莱克会说的那样“它就像洋葱”而不是圣代!

干杯

Jeff 的评论指出了正确的方向,但是还有许多更容易获得和易于设置的更好保护措施。 终极解决方案是使用 fwknopd 的“敲门服务器”,它将 Jeff 的一般概念置于密码学强大的基础上。 这采用了单包认证 (SPA),因此它不会被扫描或其他方式意外触发。

这个想法是守护进程 (fwknopd)(完全被动地)监听指定端口上的传入数据包。 从概念上讲,它就像发送加密和签名的电子邮件,并且实际上使用了相同的底层 gnupg 技术 - 对于电子邮件,您使用收件人的密钥加密您发送给预期收件人的电子邮件,并使用您的密钥对其进行签名。 SPA 的工作方式相同,您使用守护进程的密钥(当然是您设置的)来加密单个数据包,并使用您的密钥对其进行签名,以便守护进程可以验证请求是否真的来自您。 然后,守护进程执行请求的操作,通常是为您打开 ssh 端口的短期通道以供您登录(但您可以将系统设置为在您喜欢时执行任何其他命令)。

只需谷歌搜索一下,就可以找到许多好的教程。 我认为这是对您家庭设置的终极保护。 没有您的多层凭据(SPA 端口打开,然后需要 ssh 密钥才能登录 - 您应该禁用密码),任何人都无法登录,但更重要的是,您不会将您的 IP 宣传为“活动”并且值得仔细检查。

如果您正确设置了防火墙(没有通向外部世界的开放端口),则扫描仪甚至无法判断系统是否正在侦听。 它看起来像一个“死”IP 地址。 这很重要,因为我看到,平均而言,我的家庭系统每分钟大约有两次扫描尝试。 扫描仪通常会命中大约 50 个标准端口,并且在任何端口上都没有收到回复后,就会继续前进。 但是,如果您通过仅一个开放端口泄露了活动系统的存在,即使它无法被利用,您通常也会引发对您系统的更具侵略性的扫描和后续攻击。

fwknopd 在几乎所有 Linux 系统(包括 Pi)上都可用。 此外,Windows、MacOS 和 Android 上提供了标准客户端。

让我们进入黑暗...
- Martin

有没有办法通过将 Pi 连接到机顶盒来阻止电视广告。 当孩子们不得不看时,这尤其令人讨厌。
谢谢
Ludek

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.