Home Assistant 创建控制电脑开关实体、使用 Home Assistant 控制电脑开关机、并使用HomeKit桥接插件将开关桥接到HomeKit 实现远程控制以及Siri语音控制电脑开关机!
实现原理:
Wake-On-Lan进行开机
SSH连接进行关机
实现功能及支持:
Home Assistant 控制 ✅
Home Assistant 实体 ✅
Home Assistant 开关实时状态 ✅
HomeKit Bridge ✅
Siri语音控制 ✅
场景自动化 ✅
无需额外硬件 ✅
1. 确认电脑或主板支持 Wake-on-LAN即网络唤醒
在开始之前,我们需要确保你的 Windows 电脑支持 Wake-on-LAN 功能,并在 BIOS 中启用相应的设置。具体步骤如下:
重启电脑,进入 BIOS 设置(通常是按下 F2、Del 或 Esc 键)。
在 BIOS 设置中找到电源管理(Power Management)选项。
启用 PCIe 唤醒(Enable Wake on PCIe)。
2. 在 Home Assistant 中安装 OpenSSH
我们需要在 Home Assistant 的命令行终端中安装 OpenSSH,以便使用 SSH 连接和控制 Windows 电脑。
首先查看你的 HomeAssistant 安装方式选择对应类型进行安装OpenSSH
1.Container 为Docker容器模式 按照以下步骤进行安装OpenSSH
首先,我们需要进入 Home Assistant Docker 容器:
docker exec -it homeassistant /bin/bash # 以你的容器名为准
根据你自己的系统选择命令安装 OpenSSH ,一般选择第一个"apk"即可
Alpine Linux(容器默认的 Linux 发行版):
apk add openssh
CentOS/RHEL:
yum install openssh-clients
Debian/Ubuntu:
apt-get update apt-get install openssh-client
2.Supervised 安装 OpenSSH (Terminal & SSH)
进入Home Assistant页面→配置→加载项商店→搜索 "Terminal & SSH"→下载安装
3.Windows、MacOS、Linux安装 OpenSSH 及配置仅密钥连接
如果觉得配置密钥比较麻烦可以跳过密钥配置部分,安装OpenSSH后使用密码进行连接
为了提高安全性,建议使用密钥进行连接
Windows
安装 OpenSSH:
打开“设置” -> “应用” -> “可选功能” -> “添加功能”。
找到并安装“OpenSSH 服务器”。
确认安装完成后,打开 PowerShell 以管理员身份运行,并启动 OpenSSH 服务:
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
配置 OpenSSH 仅使用密钥连接
在 Windows 电脑上生成 SSH 密钥:
打开 PowerShell 或命令提示符。
运行以下命令生成 SSH 密钥对:
ssh-keygen -t rsa -b 2048
按提示操作,选择保存位置(默认是
C:\Users\<用户名>\.ssh\id_rsa
)。
确保
.ssh
目录和authorized_keys
文件存在并设置正确的权限:mkdir C:\Users\<用户名>\.ssh type NUL > C:\Users\<用户名>\.ssh\authorized_keys
将公钥复制到
authorized_keys
文件中:cat C:\Users\<用户名>\.ssh\id_rsa.pub >> C:\Users\<用户名>\.ssh\authorized_keys
确保文件权限正确:
icacls C:\Users\<用户名>\.ssh /inheritance:r icacls C:\Users\<用户名>\.ssh /grant:r <用户名>:F icacls C:\Users\<用户名>\.ssh\authorized_keys /inheritance:r icacls C:\Users\<用户名>\.ssh\authorized_keys /grant:r <用户名>:F
MacOS
安装 OpenSSH
macOS 通常默认已经安装了 OpenSSH。如果没有安装,可以通过 Homebrew 安装:
生成 SSH 密钥对(如果还没有生成的话):
brew install openssh
配置 OpenSSH 仅使用密钥连接
生成 SSH 密钥对(如果还没有生成的话):
ssh-keygen -t rsa -b 2048
将公钥添加到
authorized_keys
文件:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
配置 SSH 服务器仅接受密钥连接: 编辑
/etc/ssh/sshd_config
文件,确保以下几行配置被启用并设置:PasswordAuthentication no PubkeyAuthentication yes
重启 SSH 服务:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
Linux
安装 OpenSSH
根据不同的 Linux 发行版,使用相应的包管理器来安装 OpenSSH:
Debian/Ubuntu:
sudo apt-get update sudo apt-get install openssh-server
CentOS/RHEL:
sudo yum install openssh-server
Fedora:
sudo dnf install openssh-server
Arch Linux:
sudo pacman -S openssh
配置 OpenSSH 仅使用密钥连接
生成 SSH 密钥对(如果还没有生成的话):
ssh-keygen -t rsa -b 2048
将公钥添加到
authorized_keys
文件:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
配置 SSH 服务器仅接受密钥连接: 编辑
/etc/ssh/sshd_config
文件,确保以下几行配置被启用并设置:PasswordAuthentication no PubkeyAuthentication yes
重启 SSH 服务:
Debian/Ubuntu:
sudo systemctl restart ssh
CentOS/RHEL:
sudo systemctl restart sshd
Fedora:
sudo systemctl restart sshd
Arch Linux:
sudo systemctl restart sshd
安装OpenSSH、配置密钥好之后,先在 Home Assistant 中使用SSH命令连接一次自己的电脑
密码连接:
ssh username@hostname_or_ip
username
是你的电脑用户名
hostname_or_ip
是你的电脑主机名或IP地址
密钥连接:
生成好的密钥对有两个文件:
id_rsa
(私钥)id_rsa.pub
(公钥)你需要将生成的私钥文件id_rsa
复制到 Home Assistant 存储目录中,建议存储位置:/config/.ssh
将配置好的密钥
ssh username@hostname_or_ip
如果密钥文件不在默认位置,可以指定密钥文件:
ssh -i /path/to/private_key username@hostname_or_ip
/path/to/private_key
为你存放的私钥文件地址
4. 在 Home Assistant 中配置开关
编辑 Home Assistant 的配置文件(configuration.yaml
),添加以下配置以创建电脑开关机控制开关:
# 开机配置
switch:
- platform: wake_on_lan
name: "电脑开关机" # 开关的名称
mac: "11:22:33:44:55:66" # 电脑的 MAC 地址 请务必替换为你电脑的MAC地址
host: "192.168.2.2" # 电脑的 IP 地址 请务必替换为你电脑的IP 地址
broadcast_address: "192.168.2.255" # 广播地址 可选可删除
broadcast_port: 9 # 广播端口 可选可删除
turn_off:
service: shell_command.turn_off_connect
# 以下二选一、根据你的系统进行选择,仅保留一个配置即可,多余的必须删除
# Windows 关机配置
shell_command:
turn_off_connect: 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa username@hostname_or_ip shutdown /s /t 5 /c "您的电脑将在5秒后关机"'
# 使用 SSH 命令关闭电脑,忽略未知主机并跳过密钥检查
# "shutdown /s /t 5 /c" 中的 "5" 代表多少秒后进行关机 可自行更改
# "您的电脑将在5秒后关机" 代表提示语可自行设置
# MacOS 或Linux 关机配置
shell_command:
turn_off_connect: 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa username@hostname_or_ip "(sleep 5 && sudo shutdown -h now \'您的电脑即将关机\') &"'
# sleep 5 代表等待5秒钟、如无须等待直接关机 删除 "sleep 5 &&" 即可
注意:
/config/.ssh/id_rsa
为你的私钥文件地址
username
是你的电脑用户名
hostname_or_ip
是你的电脑主机名或IP地址
shutdown /s /t 5 /c "您的电脑将在5秒后关机"
此处可自行配置时间和提示
请务必仔细查看配置文件以及注释项,将你自己的配置信息进行替换修改
修改完成之后、保存文件、重启 Home Assistant
5. 添加开关到 Home Assistant 界面
进入 Home Assistant 概览页面,点击右上角的“编辑仪表板”
添加新的卡片,选择“实体”类型
在实体列表中搜索并选择
switch.电脑开关机
添加开关卡片时记得勾选“使图标根据状态变色”
你还可以使用 HomeKit 桥接功能,将开关桥接到 HomeKit,并使用 Siri 进行控制
以及配置场景自动化,实现开机或关机时,其他智能家居自动开启或关闭等等
6. 使用 HomeKit 桥接插件
通过 HomeKit 桥接插件,可以将开关桥接到 HomeKit,实现 Siri 语音控制
安装并配置 HomeKit 桥接插件
在 Home Assistant 中添加 HomeKit 集成,并选择需要桥接的实体
在 HomeKit 中添加 Home Assistant 设备
总结
通过本文的步骤,您可以在 Home Assistant 中创建一个可以控制电脑开关机的实体,并通过 HomeKit 桥接,实现 Siri 语音控制。这个解决方案无需额外硬件,适用于各种场景的自动化需求。
注意:在配置和操作过程中,请务必确保各个步骤中的信息和配置准确无误,以确保系统的正常运行。如果遇到任何问题,建议查阅 Home Assistant 的官方文档或下方评论寻求帮助。
关键步骤
经过以上步骤,您现在已经可以在 Home Assistant 中远程控制电脑的开关机,并通过 HomeKit 实现 Siri 语音控制。以下是我们在教程中涉及的关键步骤:
确认电脑支持 Wake-on-LAN 并启用 BIOS 设置。
在 Home Assistant 中安装 OpenSSH,以便使用 SSH 连接和控制电脑。
安装 OpenSSH 并配置密钥连接,以提高安全性。根据不同的操作系统(Windows、macOS、Linux)进行相应配置。
在 Home Assistant 中配置开关,通过编辑
configuration.yaml
文件添加开关配置。添加开关到 Home Assistant 界面,使其可以在 UI 中进行控制。
使用 HomeKit 桥接插件,将开关桥接到 HomeKit 实现 Siri 语音控制。
错误检查
确保 Wake-on-LAN 配置正确:在 BIOS 中启用 PCIe 唤醒。
确保 SSH 配置正确:包括 OpenSSH 安装、密钥生成和配置。
验证 SSH 连接:在 Home Assistant 中使用 SSH 命令测试连接。
确保 Home Assistant 配置文件无误:尤其是
configuration.yaml
中的各项配置。测试开关功能:在 Home Assistant UI 中测试开机和关机功能。
后续计划
此教程是关于远程控制电脑开关机的系列文章之一,后续文章将继续探讨更多远程管理和控制方案。敬请关注我们的博客,获取更多有用的智能家居技巧和解决方案。还会开发开关机控制的HACS插件版本,更加方便的安装和快速配置,关注一下敬请期待!
免责声明
操作 SSH 和 BIOS 设置涉及系统核心配置,请确保在操作前备份重要数据,并谨慎执行每一步骤。由于每个系统和网络环境的差异,配置过程可能会有所不同,如遇问题请查阅官方文档或下方评论寻求帮助。
本文介绍的配置方法适用于 Home Assistant 控制 Windows、macOS 和 Linux 电脑的开关机操作,并通过 HomeKit 桥接实现 Siri 语音控制。希望这篇教程能为你远程控制电脑开关机以及智能家居系统提供便捷的解决方案。如有任何问题或建议,欢迎在评论区留言交流。
转载声明
本站所有文章未经许可,禁止转载。如需转载或引用本站内容,请联系博主获得授权。未经授权擅自转载、引用本站内容,将依法追究相关法律责任。
感谢您的理解与配合。
希望这篇详细的教程对你有所帮助,如果有任何疑问或需要进一步的支持,请随时评论或者联系我。谢谢阅读!
关注我
为了让大家更方便地获取我的最新内容和动态,你还可以在以下平台关注我:
微信公众号 📲:LittleXing
微博 🐦:LittleXing_OFFICIAL
Bilibili 🎥:LittleXingzzZ
小红书 📕:LittleXing
知乎 ❓:LittleXing
简书 📖:LittleXing
今日头条 📰:LittleXing
感谢大家的关注和支持,希望我的博客能给你带来启发和帮助!🙏
如果你有任何问题或建议,欢迎与我交流📧。
评论区