侧边栏壁纸
  • 累计撰写 1 篇文章
  • 累计创建 2 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

《远程控制开关机系列》使用HA控制电脑开关机

LittleXing
2024-07-29 / 0 评论 / 0 点赞 / 544 阅读 / 0 字 / 正在检测是否收录...

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 中启用相应的设置。具体步骤如下:

  1. 重启电脑,进入 BIOS 设置(通常是按下 F2、Del 或 Esc 键)。

  2. 在 BIOS 设置中找到电源管理(Power Management)选项。

  3. 启用 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:

  1. 打开“设置” -> “应用” -> “可选功能” -> “添加功能”。

  2. 找到并安装“OpenSSH 服务器”。

  3. 确认安装完成后,打开 PowerShell 以管理员身份运行,并启动 OpenSSH 服务:

    Start-Service sshd
    Set-Service -Name sshd -StartupType 'Automatic'
  • 配置 OpenSSH 仅使用密钥连接

  1. 在 Windows 电脑上生成 SSH 密钥:

    • 打开 PowerShell 或命令提示符。

    • 运行以下命令生成 SSH 密钥对:

      ssh-keygen -t rsa -b 2048
    • 按提示操作,选择保存位置(默认是 C:\Users\<用户名>\.ssh\id_rsa)。

  2. 确保 .ssh 目录和 authorized_keys 文件存在并设置正确的权限:

    mkdir C:\Users\<用户名>\.ssh type NUL > C:\Users\<用户名>\.ssh\authorized_keys
  3. 将公钥复制到 authorized_keys 文件中:

    cat C:\Users\<用户名>\.ssh\id_rsa.pub >> C:\Users\<用户名>\.ssh\authorized_keys
  4. 确保文件权限正确:

    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 安装:

  1. 生成 SSH 密钥对(如果还没有生成的话)

    brew install openssh

配置 OpenSSH 仅使用密钥连接

  1. 生成 SSH 密钥对(如果还没有生成的话)

    ssh-keygen -t rsa -b 2048
  2. 将公钥添加到 authorized_keys 文件:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. 配置 SSH 服务器仅接受密钥连接: 编辑 /etc/ssh/sshd_config 文件,确保以下几行配置被启用并设置:

    PasswordAuthentication no
    PubkeyAuthentication yes
  4. 重启 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 仅使用密钥连接

  1. 生成 SSH 密钥对(如果还没有生成的话)

    ssh-keygen -t rsa -b 2048
  2. 将公钥添加到 authorized_keys 文件:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. 配置 SSH 服务器仅接受密钥连接: 编辑 /etc/ssh/sshd_config 文件,确保以下几行配置被启用并设置:

    PasswordAuthentication no PubkeyAuthentication yes
  4. 重启 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 语音控制

  1. 安装并配置 HomeKit 桥接插件

  2. 在 Home Assistant 中添加 HomeKit 集成,并选择需要桥接的实体

  3. 在 HomeKit 中添加 Home Assistant 设备

总结

通过本文的步骤,您可以在 Home Assistant 中创建一个可以控制电脑开关机的实体,并通过 HomeKit 桥接,实现 Siri 语音控制。这个解决方案无需额外硬件,适用于各种场景的自动化需求。

注意:在配置和操作过程中,请务必确保各个步骤中的信息和配置准确无误,以确保系统的正常运行。如果遇到任何问题,建议查阅 Home Assistant 的官方文档或下方评论寻求帮助。

关键步骤

经过以上步骤,您现在已经可以在 Home Assistant 中远程控制电脑的开关机,并通过 HomeKit 实现 Siri 语音控制。以下是我们在教程中涉及的关键步骤:

  1. 确认电脑支持 Wake-on-LAN 并启用 BIOS 设置

  2. 在 Home Assistant 中安装 OpenSSH,以便使用 SSH 连接和控制电脑。

  3. 安装 OpenSSH 并配置密钥连接,以提高安全性。根据不同的操作系统(Windows、macOS、Linux)进行相应配置。

  4. 在 Home Assistant 中配置开关,通过编辑 configuration.yaml 文件添加开关配置。

  5. 添加开关到 Home Assistant 界面,使其可以在 UI 中进行控制。

  6. 使用 HomeKit 桥接插件,将开关桥接到 HomeKit 实现 Siri 语音控制。

错误检查

  1. 确保 Wake-on-LAN 配置正确:在 BIOS 中启用 PCIe 唤醒。

  2. 确保 SSH 配置正确:包括 OpenSSH 安装、密钥生成和配置。

  3. 验证 SSH 连接:在 Home Assistant 中使用 SSH 命令测试连接。

  4. 确保 Home Assistant 配置文件无误:尤其是 configuration.yaml 中的各项配置。

  5. 测试开关功能:在 Home Assistant UI 中测试开机和关机功能。

后续计划

此教程是关于远程控制电脑开关机的系列文章之一,后续文章将继续探讨更多远程管理和控制方案。敬请关注我们的博客,获取更多有用的智能家居技巧和解决方案。还会开发开关机控制的HACS插件版本,更加方便的安装和快速配置,关注一下敬请期待!

免责声明

操作 SSH 和 BIOS 设置涉及系统核心配置,请确保在操作前备份重要数据,并谨慎执行每一步骤。由于每个系统和网络环境的差异,配置过程可能会有所不同,如遇问题请查阅官方文档或下方评论寻求帮助。

本文介绍的配置方法适用于 Home Assistant 控制 Windows、macOS 和 Linux 电脑的开关机操作,并通过 HomeKit 桥接实现 Siri 语音控制。希望这篇教程能为你远程控制电脑开关机以及智能家居系统提供便捷的解决方案。如有任何问题或建议,欢迎在评论区留言交流。

转载声明

本站所有文章未经许可,禁止转载。如需转载或引用本站内容,请联系博主获得授权。未经授权擅自转载、引用本站内容,将依法追究相关法律责任。

感谢您的理解与配合。

希望这篇详细的教程对你有所帮助,如果有任何疑问或需要进一步的支持,请随时评论或者联系我。谢谢阅读!

关注我

为了让大家更方便地获取我的最新内容和动态,你还可以在以下平台关注我:

感谢大家的关注和支持,希望我的博客能给你带来启发和帮助!🙏

如果你有任何问题或建议,欢迎与我交流📧。

公众号搜索联合传播样式-标准色版.png

扫码_搜索联合传播样式-标准色版.png

搜索框传播样式-标准色版.png

0

评论区