1.开机用wol即可实现
1)进入要控制的win电脑--设备管理器--负责联网的网卡--电源管理--勾选允许此设备唤醒计算--勾选只允许幻数据包唤醒计算机--高级--开启幻数据包唤醒
2)进入homeassistant的configuration.yaml,输入(注意缩进与空格!)
switch:
- platform: wake_on_lan
name: "电脑" # 定义HA中实体的名称,可任意命名
mac: "**-**-**-**-**-**" # 主机MAC地址
host: "192.168.*.**" # 主机IP地址
broadcast_address: "192.168.*.255" # 广播地址
broadcast_port: 9
保存后重启ha,测试的话直接在概览页添加实体即可
2.关机用openssh实现
可以用其他帖子中安装小软件的方式,软件需要实时运行,但我不想实时运行软件,只能用openssh来实现
1)进入要控制的win电脑--设置--搜索可选功能--安装openssh服务端--安装完成后重启电脑--进入服务--找到openssh开头的两个服务--改为开机自启并开启服务
2)打开cmd命令行 输入
ssh-keygen -t ed25519 -f my_ed25519_key
会有提示输入密码 直接全部回车 (设置密钥的密码一定为空 否则生成的密钥文件用不了)
生成的密钥路径为当前cmd指向路径
把id_rsa.pub公钥修改名字为administrators_authorized_keys ,然后把公钥文件复制到C:\ProgramData\ssh,然后修改该目录下sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
修改完之后 重启电脑或重启openssh服务
3)把C:\Users\用户名\.ssh\id_rsa复制到homeassistant的/config/.ssh/ (如果filebrowser插件找不到/config/.ssh/目录,那就只能先将id_rsa复制到~/share目录 然后用terminal插件运行cp ~/share /config/.ssh/)
进terminal给私钥改权限 chmod 600 /config/.ssh/id_rsa
输入ssh -i /config/.ssh/id_rsa 用户名@192.168.*.** shutdown /h 进行测试
如果win电脑休眠就代表可以了
注:有时候windows自己安装的openssh版本过低可能会导致密钥验证失败
查看windows的openssh的版本,进cmd输入ssh -V,如果低于9.5建议升级到9.5+
升级openssh教程:设置--可选功能--卸载旧的openssh服务器版本--重启--删除掉C:\windows\System32\OpenSSH整个文件夹 --打开 https://github.com/PowerShell/Win32-OpenSSH/releases--下载OpenSSH-Win64-v9.5.0.0.msi并安装
4)在configuration.yaml中添加(在刚刚添加的那部分底下添加,注意空格和换行)
turn_off:
service: shell_command.turn_off_connect
shell_command:
turn_off_connect: 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa 用户名@192.168.*.** shutdown /h'
保存后重启ha即可
5)操作完之后你会发现添加的实体按钮无法显示开关机状态 也无法操作关机
原因是显示开关机状态其实是ping win电脑,因为防火墙默认禁止了ping端口导致ping不通,解决方法就是进入命令行,输入命令:netsh firewall set icmpsetting 8
到此即可实现ha控制电脑开机和关机了
3.用小爱音箱来控制电脑开关机
1)注册巴法云账号,并获取密钥
2)在ha的HACS中搜索 bemfa 安装并重启ha
在ha的集成页面,搜索 bemfa并添加,输入巴法云密钥后提交
安装成功后,点击集成--选项--同步需要的实体至巴法云
3)在米家App中添加巴法云设备:
米家app--我的--其他平台设备--点击添加--找到巴法--输入巴法云账号即可