type
status
date
slug
summary
tags
category
icon
password
Wake On LAN,一个挺简单的功能,可是小爱音箱不支持,为了每天少伸一次手,于是有了这篇文章。
📝 前提
安装Home Assistant
连接米家
电脑启用WOL
💻 开机
在https://pkgs.org/搜索etherwake
下载对应系统架构的软件包,解压出软件包中的data.tar,在bin或sbin中找到etherwake
或者直接用我提供的软件包
在homeassistant容器中创建目录/config/custom_components/wol
将etherwake程序放进去
chmod +x etherwake
-i
指定网络接口,后接MAC或IP,测试执行:etherwake -D -i br-lan A0:B1:C2:D3:E4:F5
修改homeassistant配置文件在configuration.yaml末尾添加:
创建自动化
添加触发条件>实体-状态
实体:Mi AI Speaker Pro Play Control conversation
属性:Content
变为:开机
添加动作>调用服务
服务:Shell Command: wake_on_etherwake
官方提供更简单的方法,但对我无效,可以尝试看看
📴 关机
Windows安装OpenSSH服务器
创建SSH密钥对
ssh-keygen -t ed25519 -f myssh
得到公钥myssh.pub和私钥myssh
将myssh.pub重命名为 administrators_authorized_keys,放入C:\ProgramData\ssh\目录下
myssh复制到homeassistant的/config/.ssh目录下
打开C:\ProgramData\ssh\sshd_config
找到
PubkeyAuthentication yes
取消注释设置服务启动类型为自动,并启动服务
进入homeassistant
docker exec -it homeassistant bash
修改私钥权限
chmod 600 /config/.ssh/myssh
运行下面的命令测试连接,用户名和IP自行修改
ssh -i /config/.ssh/myssh username@192.168.x.x
修改configuration.yaml,在shell_command后面添加:
turn_off_pc: "ssh -o 'StrictHostKeyChecking no' -i /config/.ssh/myssh username@192.168.x.x 'shutdown -s -t 60'"
同样的,还可以添加取消关机命令。
cancel_turn_off_pc: "ssh -o 'StrictHostKeyChecking no' -i /config/.ssh/myssh username@192.168.x.x 'shutdown -a'"
重启homeassistant
创建自动化
触发条件同上,内容修改为关机
创建动作将conversation的值清空,可以连续触发并且避免意外误触发
服务Shell Command: turn_off_pc
Shell Command可以通过响应变量获得执行结果:
📑 以YAML编辑
下面是yaml格式的自动化,将实体ID替换成自己的。
🧰 Shell命令调试
如果遇到命令执行失败,可启用 shell_command 的调试日志记录,然后再次进行测试。它将为您提供有关系统日志中出现问题的更多详细信息。
转到开发人员工具>服务
📎 参考文章
- 作者:Biliko
- 链接:https://biliko.net/article/homeassitant-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。