Root Nation指示家庭生态系统中的 Raspberry Pi:特性和示例(第 1 部分)

家庭生态系统中的 Raspberry Pi:特性和示例(第 1 部分)

-

前段时间我 购买的 单板微型计算机 Raspberry Pi 4(又名“覆盆子» 在业余爱好者中),不是特别了解如何在家中使用它以及它可以用于什么。 相反,它是另一种技术玩具,而且价格绝对可以接受,所以你可以负担得起试验。 展望未来,我可以说我目前在我的树莓派 4 上运行了诸如全网广告拦截器之类的服务 AdGuard 主页, 备份存储系统 Apple 时间机器霍姆布里奇 将非认证设备添加到生态系统 Apple HomeKit, 一个下载种子的程序 传输, 媒体服务器 PLEX 和一个复古游戏机 RetroPie. 我计划尝试使用自托管密码管理器 Bitwarden,著名的 1Password 的开源类似物。 对于像一包香烟那么大的小东西来说还不算太少,对吧?

带键盘和鼠标的树莓派 4

在这个循环中 文章中,我将尝试尽可能详细地讲述我是如何安装和配置所有这些的。

首先 文章 对罂粟种植者更有用,因为它涉及特定的生态系统 Apple 要点,尽管任何桌面或移动操作系统的用户都会对涉及 AdGuard 的部分感兴趣。

在第二篇 考虑无一例外地对每个人都有用的普遍服务。 而你我会像正常人一样进步——从简单到复杂。

树莓派准备

需要注意的是,树莓派的早期版本在硬件方面相当薄弱,因此每个软件开发人员都将这台计算机视为单任务机器。 因此,任何可以在 RPi 上运行的服务都将默认作为操作系统的现成映像提供。 我下载了它,将其记录在 SD 卡上,将其插入 RPi 并打开安装了服务的现成计算机。 但我们的任务是同时启动多项服务,因为当前版本允许这样做。 因此,我们将它们安装为应用程序。

假设您已经将带有“干净”Raspbian 系统的 Raspberry Pi 连接到本地网络。 如果你是初学者,甚至不知道从哪里开始,那么就从  官方说明 (点击链接 - 带有大量交互式插图的精彩分步向导),然后继续下一阶段。

第1步

首先,您需要启用访问权限 SSH的 到你的树莓派。 为此,您需要执行几个简单的步骤:

  • 在“首选项”菜单中打开“Raspberry Pi 配置”窗口ces“ 操作系统
  • 点击“界面ces»
  • 选择 SSH 旁边的启用
  • 单击“确定”按钮使更改生效

如果您安装了没有图形界面的 Raspbian Lite,请在 Raspberry Pi 本身的终端中执行以下命令:

sudo systemctl 启用 ssh sudo systemctl 启动 ssh

访问已启用。

- 广告 -

我有一台 macOS 计算机,所以我可以直接进入下一步,就像 Linux 计算机所有者一样。 Windows 10 用户不久前还收到了一个内置的 OpenSSH 客户端作为其操作系统的一部分,但可能需要一些操作才能激活它。

打开 Windows 命令提示符或 PowerShell shell(无论您喜欢哪个)并键入以下命令:

获取-WindowsCapability -在线| ? 名称类似“OpenSSH*”

如果安装了 SSH 客户端,对命令的响应将如下所示:

已安装 Windows 10 OpenSSH

如果 OpenSSH.Client 在 State 字段中告诉我们它是 NotPresent,那么激活它的最快方法是输入以下命令:

添加-WindowsCapability -Online -Name OpenSSH.Client*

这完成了准备的第一阶段,包括 Windows 用户。 考虑到 Raspberry Pi 的性质以及 Raspbian 操作系统实际上是 Linux 的另一个版本这一事实,我们将不得不在命令行上做很多工作。 对某些人来说这可能看起来很不寻常,但相信我,这没有什么困难或无法弥补的,所以要勇敢一点。 事情会变好的。

第2步

现在您需要确保您的 Raspberry Pi 在本地网络上始终获得相同的内部 IP 地址。 最简单的方法是在路由器设置中。

我使用三组件 MESH 系统  ASUS ZenWiFi 迷你 与该公司任何路由器的标准网络界面。 要链接 MAC 和 IP 地址,您需要从已连接设备列表中选择一个设备,然后在弹出窗口中简单地指定所需的 IP。 在我的例子中,我选择了 192.168.50。10 只是为了方便记忆。

ASUS 无线网络设置

在其他制造商的路由器中,菜单项的名称可能不同,但其本质将保持不变 - 向连接的设备发布静态本地 IP。

第3步

我们从标准的 macOS、Linux 或 Windows 集在您的计算机上启动终端(命令行、PowerShell 等)。

我们杀了团队

ssh pi@

(在哪里而不是 <ip address of your server> 我们插入上一步中“raspberries”的IP),我们看到大致如下图:

树莓派ssh密码

在这里,您需要取消您在初始设置期间指定的 Raspberry Pi 密码。

- 广告 -

重要的! 输入密码时,密码不会显示在屏幕上。 而且“星星”也不会显示。 您需要按字面意思“盲目”输入密码,然后按 Enter 键。

如果密码输入正确,结果将是这样的:

树莓派ssh进入你好,你在你的 Raspberry Pi 里面。 欢迎! 您可以继续进行个别服务的设置。 我们将从最简单的开始。

AdGuard 主页徽标

在 Raspberry Pi 上安装和配置 AdGuard Home

AdGuard 主页,根据开发者的证词 - “一个强大的网络工具来对抗广告和跟踪。 随着物联网的作用越来越大,管理整个网络变得越来越重要。 设置完成后,AdGuard Home 将覆盖您所有的家庭设备,无需客户端软件。”

简而言之,它是一个广告过滤器,不能在您的每台设备上作为单独的应用程序或浏览器插件使用,而是一个通用的解决方案,可以通过过滤器覆盖您的整个家庭局域网。

让我们回到终端窗口 (让我们同意 Windows PowerShell 和其他用于输入命令的 shell,在文本中我将简单地称为终端,好吗?), 我们执行以下命令来下载和解压 AdGuard Home 存档:

cd $HOME wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_armv6.tar.gz tar xvf AdGuardHome_linux_armv6.tar.gz

剩下的就是安装服务并运行它:

cd AdGuardHome sudo ./AdGuardHome -s install

结果看起来像这样:

安装 AdGuard 主页

AdGuard 主页已经安装! 很简单,不是吗?

现在您需要访问新安装的服务的 Web 界面。 启动浏览器(Safari、Chrome、Firefox 或任何你拥有的浏览器——没关系)并在地址栏中 kill https://<ip address of your server>:3000. 在我的例子中,正如我们所记得的那样,https://192.168.50.10:3000。

您将看到一个逐步的初始设置向导。 如果您更喜欢另一种语言的界面,您可以立即切换到所需的界面。 除其他外,该列表包括乌克兰语、波兰语和俄语。

Raspberry Pi AdGuard Home 欢迎界面在第三步中,系统会要求您创建 AdGuard Home 用户并输入密码。 第四,将解释 Raspberry Pi IP 地址(在我的例子中是相同的 192.168.50.10)必须在路由器设置的适当部分注册为 DNS。 做这个:

ASUS 路由器DNS设置

在其他制造商的路由器中,所需的设置点将大致位于同一路径上。

接下来,我们进入 AdGuard Home 本身的设置,它仍然非常干净。

Raspberry Pi AdGuard Home 全新安装

如果您有智能电视 Samsung、LG 或类似产品,转到菜单“过滤器 - 添加黑名单”,然后“从列表中选择”。 激活相应的阻止列表。

Raspberry Pi AdGuard 家庭电视过滤器

现在您需要手动添加俄语/乌克兰语广告过滤器。 再次单击“添加黑名单”,然后单击“添加您的列表”,并在相应字段中依次输入以下值:

Ім'я 网址
AdGuard 基础过滤器 https://filters.adtidy.org/extension/chromium/filters/2.txt
AdGuard 俄语过滤器 https://filters.adtidy.org/extension/chromium/filters/1.txt
AdGuard 跟踪保护过滤器 https://filters.adtidy.org/extension/chromium/filters/3.txt

首先,这些过滤器就足够了。

为了进行比较,我通常使用 exler.ru,这是一个充满经典横幅的网站。 左侧 - 之前,右侧 - 应用过滤器之后。

AdGuard Home 的更新以手动模式进行,但它实际上是通过一个按钮开始的,只需几秒钟,无需干预。

Raspberry Pi AdGuard 主页更新

大体上就是这样。 从现在开始,您所有的家庭设备几乎都没有广告。 这里有一个不愉快的例外是客户端程序 YouTube 在游戏机上 Apple TV,但这里 tvOS 架构的限制生效,因此 AdGuard 在这种情况下无能为力。

Apple 时间机器标志

在 Raspberry Pi 上安装和配置 Time Machine

根据维基百科,Time Machine 是开发的备份系统 Apple 并且内置于 Mac OS X Leopard 和更高版本的 macOS 中,还有一个同名程序,允许您查看备份副本的内容并恢复单个文件和整个操作系统。

简而言之,它是 macOS 内置的每小时备份系统,需要兼容的文件服务器。 如果将外部 USB 硬盘连接到树莓派,您可以将其变成这样的服务器。

为使 Time Machine 正常工作,只有 Raspberry Pi 4 或更高版本是合适的,具有 USB 3.0 端口(在早期型号中,端口较慢)和一个合适的容量为 1-3 TB 的 HDD(具有外部电源,如果它是3,5 英寸磁盘)。

重要的! 有两种网络协议允许 macOS 在本地网络上存储时间机器数据。 过时的 Netatalk,或更现代的 Samba。 原则上,您可以将它们中的任何一个用于 Time Machine 任务。 Internet 上充满了通过 Netatalk 组织流程的说明,所有这些说明都具有不同程度的奇思妙想,但我的任务是提供最简单、有保证的工作选项。 而你的任务是选择一个对你方便的。 因此,在本文中,我们将同时考虑两者。

硬盘准备

我们将 HDD 连接到 Raspberry Pi 的 USB 3.0 端口,通过 SSH 在终端中访问它并运行命令 lsblk,这将在控制台中显示已连接驱动器的列表。 我们注意磁盘的大小,以确定我们将使用哪个磁盘,它的名称和安装点,在我的例子中很简单 sda,你的仍然有一个挂载点,很可能 /dev/sda‌. 我们需要她。

树莓派硬盘格式化

输入命令 sudo fdisk /dev/sda (或与您的情况相关的任何其他挂载点),然后单击键盘 m, 查看完整的命令列表。 您甚至可以将其复制到单独的文本文件(或使用下面的提示)。

GPT M 输入保护/混合 MBR 通用 d 删除分区 F 列出空闲未分区空间 l 列出已知分区类型 n 添加新分区 p 打印分区表 t 更改分区类型 v 验证分区表 i 打印有关分区的信息 Misc m打印此菜单 x 额外功能(仅限专家) 脚本 I 从 sfdisk 脚本文件加载磁盘布局 O 将磁盘布局转储到 sfdisk 脚本文件 保存并退出 w 将表写入磁盘并退出 q 退出而不保存更改 创建一个新标签 g 创建一个新标签空 GPT 分区表 G 创建一个新的空 SGI (IRIX) 分区表 o 创建一个新的空 DOS 分区表 s 创建一个新的空 Sun 分区表

我们的任务是做 delete a partition 根据需要多次从分区中完全清除磁盘,然后使用创建一个新的 add a new partition. 不要忘记写下更改,即 write table to disk and exit. 你成功了吗? 完美。

现在我们在磁盘上创建一个文件系统。 通常的 ext4 就足够了,尽管网络上的意见多种多样,磁盘必须格式化为其中一种文件系统 Apple. 实际上,这只会使准备过程复杂化,而不会带来任何好处。

输入命令 sudo mkfs.ext4 /dev/sda1... 做完了

现在我们需要找出新分区的 UUID。
让我们进入 ls -lha /dev/disk/by-uuid 我们看到这样的事情:

树莓派硬盘格式化

复制我们的 UUID sda1 如果您不使用带有历史记录的高级剪贴板,则将其保存到一个单独的文本文件中。

现在我们需要创建一个文件夹,我们将在其中安装我们的磁盘并为其提供适当的访问权限。

sudo mkdir /mnt/tm && sudo chmod -R 777 /mnt/tm && sudo chown pi:pi /mnt/tm

挂载磁盘。 为此,请使用以下命令编辑配置文件

须藤纳米/ etc / fstab中

纳米 在这种情况下,我更喜欢使用系统中安装的编辑器的名称。

通过向其添加以下行来更改打开的文件

UUID=b32c00d8-0aa8-4ec4-b01f-18cbade45e7c /mnt/tm ext4 nofail,defaults 0 2

但使用上一步的 UUID。 它应该是这样的:

树莓派硬盘格式化

单击保存更改 按Ctrl + O і 输入,然后通过单击退出编辑器 按Ctrl + X.

使用命令 sudo reboot 重启 Raspberry Pi,重启后通过 SSH 再次登录。

杀队 df -h 并确保驱动器此时已安装到系统 /mnt/tm.

太好了,磁盘已准备就绪。


NETATALK的安装和配置(选项1)

我们安装:

sudo apt-get install netatalk -y

我们在同一个编辑器中配置所有内容 纳米:

须藤纳米 /etc/netatalk/afp.conf

而我们把配置文件的内容做成这样:

‌; ; Netatalk 3.x 配置文件; [全球的] ; 全局服务器设置 mimic model = TimeCapsule6,106 [Time Machine] path = /mnt/tm time machine = yes valid users = pi ; [家园]; basedir 正则表达式 = /xxxx ; [我的法新社卷] ; path = /path/to/volume ; [我的时光机卷] ; 路径 = /路径/到/备份; 时间机器=是`

不要忘记在帮助下保存结果 按Ctrl + O → 输入 → Ctrl+X

该文件现已编辑 配置文件, 在行尾添加 hosts: 额外价值 mdns4 mdns.

须藤纳米 /etc/nsswitch.conf

结果应如下所示:

# /etc/nsswitch.conf
#
# GNU 名称服务切换功能的配置示例。
# 如果您安装了 `glibc-doc-reference' 和 `info' 软件包,请尝试:
# `info libc "Name Service Switch"' 了解有关此文件的信息。

密码:文件
组: 文件
阴影:文件
gshadow:文件

主机:文件 mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
网络:文件

协议:数据库文件
服务ces: 数据库文件
以太:数据库文件
rpc:数据库文件

网络组:nis

我们再次通过以下方式保存更改 按Ctrl + O → 输入 → Ctrl+X

然后只剩下启动服务了:

sudo service avahi-daemon start sudo service netatalk start

并检查他们在团队中的表现:

sudo 服务 netatalk 状态

sudo service avahi-daemon 状态

结果应如下所示:

Netatatlk 状态消息

剩下的就是转到 macOS 设置,选择时间机器部分,然后在可用驱动器中查看我们的 Raspberry Pi。

时间机器 Netatalk

我们指定为登录 pi,作为密码 - 用于 SSH 访问的密码。

完成,配置通过 Netatalk 的标准选项。 现在,只要您的 Mac 与 Raspberry Pi 处于同一本地 Wi-Fi 网络中,就会自动对您的驱动器进行备份。

现在考虑一种更可靠的 Samba 协议形式的替代方案。

安装和配置 SAMBA(选项 2)

我们安装Samba:

sudo apt-get 安装 samba

我们设置用户密码(对于同一个 pi 用户)并编辑配置。 第一个密码:

‌sudo smbpasswd -a pi (您可以使用与 SSH 相同的方法)。

然后 Samba 配置都在同一个编辑器中 纳米:

sudo nano /etc/samba/smb.conf

阻止内容 [global] 最后应该是这样的:

[global] security = user encrypt passwords = true 映射到 guest = bad user guest account = nobody

在配置文件的最后,添加一个新块:

[TimeCapsule] comment = Time Capsule path = /mnt/tm browseable = yes writeable = yes create mask = 0600 directory mask = 0700 spotlight = no vfs objects = catia fruit streams_xattr fruit:aapl = yes fruit:time machine = yes

我们保存结果: 按Ctrl + O, 输入, 按Ctrl + X.

重启服务:

sudo systemctl 重新启动 smb.service

完毕与 Netatalk 的情况一样,它仍然可以在 Time Machine 设置面板中显示的列表中找到磁盘。

家桥标志

在 Raspberry Pi 上安装和配置 Homebridge

好吧,我们已经成功到达了文章的最大块。

霍姆布里奇 是一个基于 NodeJS 的服务器,它使用 Homekit API 进行未经认证的设备集成和初始支持 Apple HomeKit。

配置 Homebridge 的难点在于它的插件支持多种协议和设备,使它们可见和可管理 Apple 家庭用品。 因此,每个插件都以自己的方式配置,通常与另一个设备的对应方式完全不同。

开始吧。 像往常一样,我们通过 SSH 访问 Raspberry Pi 并执行几个步骤。

安装 Node.js

您可以将整个代码块复制并粘贴到终端中。 在绝大多数情况下,这就足够了。 但是,如果碰巧在某个阶段安装失败,则从块中逐个输入剩余的命令。

# 设置 repo curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - # 安装 Node.js sudo apt install -y nodejs gcc g++ make python net-tools # 测试节点正在工作 node -v # 升级 npm(版本 6.13.4 存在 git 依赖问题) sudo npm install -g npm

安装 Homebridge 和 Homebridge Config UI X

首先,让我们使用以下命令设置基础...

sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x

...并将其作为系统服务运行。

sudo hb-service install --user homebridge

通过 Web 界面配置 Homebridge

转到计算机上浏览器中的地址 http://<ip address of your server>:8581 在哪里而不是 <ip address of your server> 在我的例子中,仍然是文章开头的相同 IP

用户和密码的默认值是一样的: admin

我建议立即转到“用户”菜单项并将那里的默认值更改为更安全的值。

Raspberry Pi Homebridge 用户设置

你做了吗? 太好了,接下来我们将配置插件。

家里有各种各样的设备决定了我们需要安装哪些插件。 在您的情况下,插件集很可能会略有不同,但是使用我的配置示例,您可以了解在设置它们的过程中会遇到哪些细微差别。

在撰写本文时我的插件集:

  • Homebridge 用户界面 (包含在基本配置中,没有自己的设置)
  • 色调 (用于照明控制 Philips 色调)
  • Apple 电视遥控器 (用于控制机顶盒 Apple 电视)
  • 物联网 (用于管理 盖佛灯 з 固件 来自 Whilser)
  • Samsung 十二 (用于智能电视控制 Samsung 使用 Tizen 操作系统)
  • 天气加 (根据天气情况实现智能家居自动化)
  • Yeelight 无线网络 (用于灯控制 Xiaomi Yeelight)

让我们一一进行。

色调插件设置

要在 Homebridge 中安装任何插件,只需转到 Web 界面的相应选项卡,在搜索栏中输入所需熨斗的名称,然后从可用插件列表中选择插件。 我建议注意“🛡Verified”标签,插件的版本和更新日期(如果作者几年没有更新,很有可能无法使用)并确保打开插件主页的链接,里面通常有详细的安装过程介绍。

树莓派 Homebridge 色调

单击所需插件上的“安装”按钮,等待一两分钟,直到插件安装完毕。

插入 家桥色调 很容易设置。 您只需要设置将显示在 Homebridge 日志中的默认名称,并选择插件将处理的兼容设备类型。 就我而言,它只是照明 Philips Hue,甚至第一版的轮毂,都是圆形的。

填写数据并保存结果后,您只需按下集线器上的中央按钮 Philips 色调并等待 15 秒,直到插件识别集线器。 完毕!

剩下的就是拿起 iPhone,将其摄像头对准位于 Homebridge 网络界面“状态”选项卡上的二维码,然后将其添加为 HomeKit 的桥梁。

如果 HomeKit 本身已经预先配置好(选择 Apple 电视或 iPad 作为主要枢纽,添加房间等),然后分步向导将立即提议将所有找到的 Hue 照明设备分配到相应的房间,并为每个设备命名。 例如,在我的客厅里,我有“Ceiling 1”、“Ceiling 2”和“Ceiling 3”灯,但通过 iPhone 上的 HomeKit 本身(项目“与其他设备结合”),我将它们组合成一个逻辑组“上光”,对我来说更方便。 同时,在同一个客厅里,我有一个“落地灯”和“夜灯”——不同的设备,但 Siri 无需任何额外训练就能完美理解各种命令:

  • “打开客厅的灯(客厅的灯全部亮起)”
  • “打开落地灯”
  • “小夜灯的亮度是百分之二十”
  • “打开夜灯”
  • “关掉顶灯”
  • “落地灯上的蓝色”
  • “Turn off the lights in the living room(关掉客厅里所有的灯)”
  • “Turn off all the lights(关闭整个公寓的照明)”

等等。 如果配置正确 Apple-家庭,相关且绝对合乎逻辑的命令自动可供所有进入您家庭的成员使用 Apple ID。

插件设置 Apple 电视遥控器

我将此插件用于一个目的:为控制台创建一个额外的开关 Apple 电视。 事实是在 Apple 例如,HomeKit 能够根据预先确定的条件(例如“当我回家时”)对专辑或播放列表的播放进行编程。 一切都会好起来的,但是如果此时机顶盒处于休眠状态,这种场景的存在是无法唤醒它的。 但是额外的虚拟交换机是可能的。 我们去了:

步骤1。 我们安装用于捕获凭据的服务 Apple TV

sudo npm install -g 节点-apple电视-x

步骤2。 我们正在寻找本地网络上可用的机顶盒 Apple TV

须藤 apple电视对

步骤3。 我们用所需的前缀创建一对。 控制台输出看起来像这样:

% apple电视对 ✔ 连接到客厅 ✔ 开始配对? 输入当前显示在 Living Room 上的 4 位数密码

在台阶上 ‌? Enter the 4-digit pin that's currently being displayed on... 在您选择的机顶盒的屏幕上 Apple 电视,将出现一个标准的四位数代码,用于与遥控器配对(在我们的示例中,它将是 1234),它必须在控制台中被杀死。

% apple电视对 ✔ 连接到客厅 ✔ 开始配对? 输入当前显示在客厅 4 上的 1234 位密码 ✔ 完成配对凭证:77346115-ED48-46A8-A288-

反而 <snip> 将有几行字母和数字的混合,需要将它们完整地复制到一个单独的文本文件中,从该行的第一个数字开始 Credentials:. 稍后这些相同的 证书 我们将非常需要它。

步骤4。 在“配置”选项卡上的 Homebridge Web 界面的配置部分添加以下块 "platforms": [

{ “平台”: ”Apple电视平台", "名称": "Apple 电视平台”,
   “黛维ces”:[
      {
         "name": "宾馆",
         “凭据”:“77346115-ED48-46A8-A288-”,
         “isOnOffSwitchEnabled”:真,
         “onOffSwitchName”:“Apple 电视” } ] },

...并排成一行 "credentials": 只需插入上一步中文本文件的全部内容。

我们为前缀选择任何名称,这里的“Guest house”只是一个例子。

步骤5。 我们安装插件本身。

在 Homebridge 网络界面的“模块”选项卡上,在搜索栏中输入  Apple TV Remote 然后按“安装”按钮。 安装插件后,系统会提示您重新启动 Homebridge,这是通过按相应的按钮来完成的。

Raspberry Pi Homebridge 重启按钮

就是这样,在 HomeKit 中 iPhone 上出现了一个新的开关,现在可以添加到所有需要自动打开机顶盒的场景。

语音命令,例如“Siri,打开 Apple 电视”或“Siri,关掉 Apple 电视”也自动支持。 而且,如果你在不同的房间配置了多个机顶盒,Siri 也会自动开始理解关闭它的请求 Apple 在特定房间或同时观看所有电视。

事实上,这个插件正在快速发展,它已经知道如何识别控制台上运行的应用程序的 Bundle ID 并干预它们的工作,例如,暂停 Netflix 上的电影。 但是,如果需要,您将自己处理。

配置 Mqttthing 插件

我将此插件与上面提到的 Guyver 灯一起使用 - 带有 Arduino 板和 16x16 可寻址 LED 矩阵的自制灯。 灯本身必须装有 Whilser 的固件。 愿原力与你同在!

带 Grogu 的 Gyver 灯

步骤1。 安装 MQTT 代理

我们执行许多命令。 它们不能批量工作,所以我们一次一个地将它们输入到控制台中。

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key 添加 mosquitto-repo.gpg.key
cd /etc/apt/源ces.list.d/
须藤wget 
sudo apt update
sudo apt 安装 mosquitto mosquitto-clients
sudo /etc/init.d/mosquitto 停止
须藤纳米 /etc/mosquitto/mosquitto.conf

最后一个命令启动已经熟悉的编辑器 纳米,其中我们将打开的文件的内容替换为以下内容:

# 将本地配置放在 /etc/mosquitto/conf.d/ # # 配置文件的完整描述位于 # /usr/share/doc/mosquitto/examples/mosquitto.conf.example # pid_file /var/run/ mosquitto.pid allow_anonymous true listener 1883 persistence true persistence_location /var/lib/mosquitto/ log_dest 主题 log_type 错误 log_type 警告 log_type 通知 log_type 信息 connection_messages true log_timestamp true include_dir /etc/mosquitto/conf.d

照常, 按Ctrl + O, 输入, 按Ctrl + X,然后使用命令重新启动代理

sudo /etc/init.d/mosquitto 启动

安装了 MQTT 代理。

步骤2。 安装 Mqttthing 插件

我们通常去Homebridge web界面的“Modules”选项卡,搜索 Mqttthing 然后单击“安装”。

步骤3。 Mqttthing插件配置

每个 Guyver 灯都有自己的 ESP 芯片 ID。例如,ESP-3bd20b。如果您自己制作并闪烁了灯,那么您会完全了解它,如果没有,则将灯置于​​配对模式,当连接到您的 Wi-Fi 网络时,iPhone 上的相应对话框将显示所需的 ID 。写下来。

  1. 关闭灯的电源;
  2. 关闭路由器;
  3. 打开灯的电源;
  4. 在 iPhone 上,转到“设置 → WiFi”
  5. 选择 SSID 如“ESP12345678”的不安全网络,然后在对话框中单击“配置 WiFi”
  6. 配置窗口的最底部需要芯片 ID

如果之前已经配置了灯泡,您只需将其关闭,打开路由器并再次打开灯泡 - 将采用旧设置。 如果这是第一次连接灯泡,请打开路由器并在设置列表中选择您的网络,然后输入所有必要的数据,例如家庭 Wi-Fi 密码和 Raspberry Pi 的 IP 地址。

打开 Homebridge 网络界面的“配置”选项卡,并在部分 "accessories": [ 输入这么一大段代码,把之前的ID换成 ESP-3bd20b 靠你自己:

{
    “交流cessory": "mqttthing", "type": "lightbulb", "name": "Nightlight", "url": "http://127.0.0.1:1883", "mqttPubOptions": { "retain": false } , "topics": { "getOn": "homeassistant/light/ESP-3bd20b/status", "setOn": "homeassistant/light/ESP-3bd20b/switch", "getBrightness": "homeassistant/light/ESP-3bd20b /brightness/status", "setBrightness": "homeassistant/light/ESP-3bd20b/brightness/set", "getRGB": "homeassistant/light/ESP-3bd20b/rgb/status", "setRGB": "homeassistant/light /ESP-3bd20b/rgb/set" }, "onValue": "ON", "offValue": "OFF" }, { "accessory": "mqttthing", "type": "电视", "name": "夜光效果", "url": "http://127.0.0.1:1883", "topics": { "setActive" : " homeassistant/light/ESP-3bd20b/switch", "getActive": "homeassistant/light/ESP-3bd20b/status", "setActiveInput": "homeassistant/light/ESP-3bd20b/effect/set", "getActiveInput" : " homeassistant/light/ESP-3bd20b/effect/status" }, "inputs": [ { "name": "Confetti", "value": "Confetti" }, { "name": "Fire", "value ": "Fire" }, { "name": "Rainbow Vert.", "value": "Rainbow Vert." }, { "name": "Rainbow Horrors.", "value": "Rainbow Horrors." } , { "name": "颜色变化", "value": "颜色变化" }, { "name": "3D 疯狂", "value": "3D 疯狂" }, { "name": "3D 云" , " value": "3D 云" }, { "name": "3D Bench", "value": "3D Bench" }, { "name": "3D Plasma", "value": "3D Plasma" } , { "name": "彩虹 3D", "value": "彩虹 3D" }, { "name": "孔雀 3D", "value": "孔雀 3D" }, { "name": "斑马 3D" , " value": "Zebra 3D" }, { "name": "森林 3D", "value": "森林 3D" }, { "name": "海洋 3D", "value": "海洋 3D" } , { "name": "降雪", "value": "降雪" }, { "name": "矩阵", "value": "矩阵" }, { "name": "萤火虫", "value": "萤火虫" }, { "name": "水族馆", "value": "水族馆" }, { "name": "Starfall", "value": "Starfall" }, { "name": "Paintball", "value": "彩弹射击" }, { "name": "螺旋", "value": "螺旋" }, { "name": "暖光", "value": "暖光" }, { "name": "螺旋" ": "Pendulum", "value": "Pendulum" }, { "name": "Blink", "value": "Blink" }, { "name": "警笛", "value": "警笛" } , { "name": "Drift", "value": "Drift" }, { "name": "Flock", "value": "Flock" } ], "onValue": "ON", "offValue “: “离开” }

完毕在 Apple HomeKit 中出现了两个新设备,灯“Night Light”和“Night Light Effects”。 它们相互关联,目的非常明确。 如果需要,您可以在配置中重命名它们。

不幸的是,固件的作者用俄语写了参数,所以有了这样的配置,你也必须用俄语联系 Siri。 但如果你用英语与 Siri 交谈,你可以像这样修复每个代码点:

{ "name": "Fire", "value": "Ogon" },

然后 iOS 上的结果将如下所示:

Gyver Lamp Siri 已修补

插件设置 Samsung 十二

步骤1。 检查电视的兼容性

在路由器的控制面板中,给电视一个静态本地 IP,就像我们一开始为树莓派所做的那样。 例如,在我的例子中是 192.168.50。100.

转到计算机上浏览器中的地址  http://TV_IP:8001/api/v2,在我的例子中意味着 http://192.168.50.100:8001/api/v2/

如果你看到一个包含一堆服务信息的页面,看起来像这样......

{"device":{"FrameTVSupport":"false","GamePadSupport":"true","ImeSyncedSupport":"true","OS":"Tizen","TokenAuthSupport":"true","VoiceSupport":"false","countryCode":"UA","description":"Samsung DTV RCR","developerIP":"0.0.0.0","developerMode":"0","duid": ......

……那么这意味着有成功的机会。 但您需要了解,并非所有型号的电视 Samsung 与插件兼容。 例如,那些需要 PIN 识别的将不起作用。

从服务页面复制字段值"wifiMac": 准备好电视遥控器,让它触手可及。

步骤2。 安装插件

没什么新的,我们正在根据要求寻找插件 Samsung Tizen,选择所需的(作者身份 @塔维库) 并安装。

Raspberry Pi的 Samsung Tizen插件

启动后,转到设置并在那里输入以下值:

Raspberry Pi的 Samsung Tizen 插件设置

“电视”这个名字就足够了,因为 Siri 完全理解在客厅打开电视的要求,客厅里几乎没有 2 台电视。 她也完全听懂了“打开卧室电视”的指令,没有再拉开客厅的电视机。

步骤3。 连接到电视

这里的一切都很简单:拿起电视遥控器,等待上下文菜单出现在屏幕上,并显示有关某些设备试图控制电视的警告。 当然,电视必须打开。 当屏幕右上角出现相应请求时,使用电视遥控器选择按钮 Allow... 做完了

步骤4。 将电视添加到 Apple HomeKit

是的,与以前的情况不同,电视不会神奇地出现在您家中的设备列表中。 于是,我们把iPhone拿在手里,一步步来:

  1. 启动 Home 应用程序,然后在主页面上,按右上角的 +;
  2. 选择“添加附件”;
  3. 在屏幕底部,点击“无代码或扫描”;
  4. 在下一个屏幕上,选择您的电视;
  5. 当提示输入HomeKit设置码时,点击“Use Camera”;
  6. 将相机对准 Homebridge 状态选项卡上的二维码。

步骤5。 插件设置

经过深挖 文档 对于插件,您可以让 Siri 从已安装的列表中运行电视上的特定程序、暂停它们等。 现在,作为练习,我们将更改虚拟遥控器中单个按钮的功能 Apple 远程,内置于 iOS 控制中心的“窗帘”中。

这是 ℹ︎(信息)按钮,默认情况下它会在电视屏幕的上部显示有关当前图像模式的信息。 同时,从遥控器到达 Apple 无法将 Remote 添加到电视上安装的程序列表中。 我们现在就修复它。

Apple iOS 遥控器 Samsung TV

转到插件设置,“Key Mapping”部分,查找“INFORMATION”字段并将其值更改为 KEY_HOME. 重启 Homebridge,瞧——虚拟遥控器中的 ℹ︎ 按​​钮会调出主应用程序菜单! 虚拟遥控器很有意义。

设置 Weather Plus 插件

步骤1。 创建一个 OpenWeather 帐户

让我们去现场 https://home.openweathermap.org 并注册一个帐户,好处是它是免费的。

步骤2。 API密钥生成

OpenWeather

转到 OpenWeather 个人帐户的所需选项卡,指定密钥名称后,单击“生成”按钮。

OpenWeather

步骤3。 安装和配置 Weather Plus 插件

我们使用通常的方法搜索并安装所需的插件,然后继续进行设置。 结果应该是这个样子:

在预测中,我个人只对下一个小时的值感兴趣,所以其他的都被禁用了:

Raspberry Pi OpenWeather 预报设置

为了让不必要的虚拟天气传感器不会因不必要的激活而烦恼,我们在相应的隐藏值部分禁用了它们。 最好禁用:

  • 空气压力
  • 云盖
  • 露点
  • 表观温度
  • 风向
  • 紫外线指数
  • 风的速度
  • 最大风速

然后单击设置窗口最底部的“保存”。

结果,在界面中 Apple HomeKit 会显示接下来一小时的温度和湿度值,以及“雪”和“雨”两个虚拟传感器,可用于各种场景。 例如,我编写了 HomeKit 自动化程序,其中,当近期预报中出现雨或雪时,Guyver 灯会显示相应的水坑或飘落的雪花效果一分钟。 同时,该效果只会在上午 8:00 到晚上 23:00 之间激活,并且只有在有人在家的情况下才会激活。 在其他时候,不太可能需要带伞或穿防水衣服的警告。

设置 Yeelight WiFi 插件

根据要求 Yeelight Homebridge 提供了很多插件供安装,包括一个经过验证的插件。 但我更喜欢另一种,状态之间的转换尽可能平滑,而不是“夜幕降临”的风格。 此外,它支持 自适应照明 vid Apple, 但这里是标准应用程序 Xiaomi 自从这个功能出现在 HomeKit 中以来的一年里从未学过这个。

Raspberry Pi Yeelight WiFi 插件

重要的! 只留下一个灯泡 Xiaomi, 一开始避免混淆。 我们将与她合作。

安装插件后,重启Homebridge,在日志中寻找类似这样的内容: ‌[Yeelight] Received advertisement from ab1234. 这是有条件的 ab1234 还有你的灯泡。 也许价值将是 color-ab1234,那么你就会和他一起工作。

转到插件设置并将以下代码粘贴到那里:

{ "platform": "yeelight", "name": "Yeelight", "transitions": { "power": 400, "brightness": 400, "color": 1500, "temperature": 1500 }, "multicast" :{“接口”:“0.0.0.0”},“默认值”:{“color-ab1234”:{“名称”:“落地灯”,“黑名单”:[“set_hsv”]}}}

在哪里而不是 color-ab1234 应该是您日志中的值,而不是 ‌"name": "Торшер" 反映灯泡拧入位置的任何名称:夜灯、壁灯、天花板等。

Raspberry Pi Yeelight WiFi 插件设置

单击保存按钮保存粘贴的代码并重新启动 Homebridge。 完成,灯泡已以您选择的名称出现在 HomeKit 中。 通过按插件设置中的“+ 添加平台”按钮,以完全相同的方式一个接一个地添加其余的 Yeelight 灯泡。

在 Raspberry Pi 上更新 Homebridge 和 Node.JS

Homebridge 本身的更新(和回滚版本)非常简单:您需要在 Web 界面中单击当前版本号,然后从对话框的列表中选择所需的版本。

但是随着Node.JS和NPM的更新,安装某个插件的更新迟早要用到,就没那么容易了。 更准确地说,这些命令与标准说明中描述的不完全相同。

使用以下命令更新 Node.JS:

sudo hb-服务更新节点

而 NPM 多达两个连续的:

sudo npm 缓存清理 -f
须藤 npm install -g npm

不幸的是,无论是 Homebridge 本身,还是它的插件,或者它所搭载的“轨道”都不能自动更新。 每天进入控制面板检查是否有任何新东西迟早会变得无聊。 因此,为了使该过程自动化,他们为 iOS 14 设计了一个特殊的小部件,它可以监控所有 Homebridge 节点的状态,并能够通过 PUSH 消息直观地指示更新或任何问题的存在。

安装 Homebridge Status 小部件

Raspberry Pi Homebridge 状态小部件

如您所见,该小部件显示了很多关于您的 Homebridge 的有用和不太有用的信息,但其中最有价值的部分是有关 Homebridge 本身、其插件和 Node.JS 的状态的信息。

要获取小部件本身,我们首先需要它的父应用程序。 从 App Store 将其安装到您的 iPhone 上。

可编写脚本
可编写脚本
价格: Free+

现在开始安装小部件的相当漫长但令人兴奋的过程。 我们将在 Scriptable 程序中另一个名为 ScriptDude 的脚本的帮助下安装它。 ScriptDude 很好,因为它跟踪位于地址库中的大量脚本代码的变化 脚本.net. 也许你会在那里找到对你有用的其他东西,但现在我们有一个任务,我们会解决它。

步骤1。 从 App Store 安装 Scriptable.app。

步骤2。 在 iPhone 浏览器中打开网站 脚本杜 然后单击安装 ScriptDude 按钮。

scriptdu.de 网站

步骤3。 在打开的页面上,单击 Copy Installer 按钮,然后在我们的剪贴板中收到有关脚本代码的消息后,单击 Open Scriptable 按钮。

步骤4。 将剪贴板的内容插入标题为 Untitled Script 的空白字段,然后按播放按钮 ▶️。

ScriptDude 安装

步骤5。 在打开的屏幕上,单击链接 浏览 scriptables.net 然后在下一页点击标签 (技术). 万岁,Homebridge Status 脚本排在第一位! 请随意单击“使用 ScriptDude 下载”按钮。

步骤6。 我们按 Install 并同意两个警告,我们在 Installed 列表中看到所需的脚本。 主 Scriptables 屏幕现在看起来像下面的第四个屏幕截图,我们单击 Homebridge Status 磁贴中的三个点并转到编辑选项。

步骤7。 首先,我们改变值 覆盖持久配置 з falsetrue

覆盖PersistedConfig = true

将脚本设置保存到 iCloud。

Raspberry Pi Homebridge 状态配置

步骤8。 再往下一点,我们编辑三个字段:IP 地址和 Homebridge 端口(记住,这是已经提到的 http://<ip address of your server>:8581 在哪里而不是 <ip address of your server> 在我的例子中,仍然是文章开头的相同 IP ) 并同意有关在本地网络中搜索设备的警告。 万岁,脚本有效!

剩下的就是以与其他任何方式相同的方式将小部件添加到 iOS 14 屏幕。 添加后,您需要转到小部件设置(长按它)并指定一些参数:选择所需的脚本,指定与之交互时要执行的操作,然后在参数字段中输入以下值

USE_CONFIG:紫色.json

之后不要忘记返回脚本代码并返回值

覆盖持久配置 = false

就这样。 该小部件可以工作,当 Node.JS、Homebridge 或其插件有更新时,您将收到包含相关内容的推送通知。

结论

机会 Apple HomeKit 对我来说成长了很多倍。 我想出了一堆脚本和自动化,让我和我所爱的人的生活更轻松。

例如,在一天的黑暗时间,第一个回家的家庭成员会受到外面、走廊、客厅和浴室的灯光的欢迎——现在不需要跑到开关前用没洗过的手。

当最后一位家庭成员离开家时,HomeKit 会小心地关闭电视、电灯以及一般情况下所有可以关闭的东西。 而如果家里至少有一个人,随着黄昏的来临,外部照明和里面的一些灯会被打开。

同样,Siri 可以使用完全合乎逻辑的命令控制所有连接的设备,逐字逐句,就像您需要在特定房间打开或关闭某些东西时会问家里的人一样。 只是没有人需要再跑到这个房间了。

早晨和晚上的音乐混合来自 Apple, Guyver 灯的灯光效果附在上面。 可以使其他灯光与轻音乐一起工作,但我对效果并不满意。

总的来说,应用场景只凭想象,不会对钱包造成太大压力,因为标有“Works with Apple HomeKit 不再是唯一可用的选择。

下篇循环,你我小趣事:我们来教 我们的 Raspberry Pi 下载种子,让我们把它变成一个强大的媒体中心和复古游戏机。

敬请关注!

尤里·斯坦尼斯拉夫斯基
尤里·斯坦尼斯拉夫斯基http://notarecords.com
SwiftUI 开发人员。我收集黑胶唱片。有时是记者。 Nota 唱片店的老板。
- 广告 -
注册
通知关于
客人

0 评论
嵌入式评论
查看所有评论