Homeassistant远程开关NAS
安装环境
首先按照官方指南Install Home Assistant Supervised
HA控制Linux开机与关机
将HA的ssh key添加到nas
众所周知ssh登录是要输入密码的,为了能让关机的ssh可以在没有交互的情况下完成,我们要将HA的ssh key添加到nas。注意不是将HA的宿主机的SSH key添加到nas。
1 | docker exec -it $(docker ps -f name=homeassistant -q) bash |
这样进入docker容器的shell,如果是第一次,下面开始生成ssh key
1 | ssh-keygen -t rsa -f /root/.ssh/id_rsa |
然后一路回车,直到生成密钥,然后执行ssh-id-copy
将密钥复制到nas
1 | ssh-copy-id root@nas的ip地址 |
接着按照提示输入nas的root密码,复制密钥完成,以后就可以免密登录nas了。
可以在docker容器的shell中直接测试ssh root@nas的ip地址
在HA中添加一个名为nas的switch实体
然后编辑HA的配置文件/usr/share/hassio/homeassistant/configuration.yaml
,添加如下字段
1 | switch: |
在HA面板中添加nas
在HA的概览中编辑仪表盘,添加nas开关。然后看看能不能控制nas的开机和关机啦!
HA控制Windows开机与关机
让Windows支持远程关机
- 关闭防火墙,禁用杀毒软件,排除相关干扰
- 必须要设置账户密码,因为要远程开机,所以最好还要设置自动登录(下面会说到)
- 开启RPC相关服务(下面会说到)
首先管理员身份运行CMD,运行如下命令
1 | sc config RemoteRegistry start= auto |
将下面的文字复制到文本文档,更改DefaultUserName
和DefaultPassword
更改为你的用户名和密码
1 | Windows Registry Editor Version 5.00 |
最后将文本文档的后缀改为reg,合并入注册表
简单的RPC Shutdown大法(HA支持Adds-on的情况)
安装RPC Shutdown并配置
这步很简单,直接在Add-ons商店里面搜索RPC Shutdown
并安装就可以了。不过前提是你的HA要支持Add-ons,至少要Supervisor方式安装才有可能支持安装Add-ons。
进入RPC Shutdown的“配置”选项卡,更改address
为你的Windows电脑的IP地址(肯定要是固定的),更改credentials
为Windows用户名%Windows密码
(其中%是不可省略的分隔符),更改alias
为自己好记的名字。
1 | computers: |
保存并重启RPC Shutdown
在HA中添加一个名为PC的switch实体
然后编辑HA的配置文件/usr/share/hassio/homeassistant/configuration.yaml
,在switch
字段下添加如下字段
1 | switch: |
复杂的曲线救国(HA不支持Adds-on的情况)
安装php和samba-common-bin
1 | sudo apt install php samba- -bin |
新建php文件接受GET请求来执行对应的指令
1 | cat > remote_excute.php << 'EOF' |
php开机自启动,添加以下内容到/etc/rc.local
1 | nohup php -S 0.0.0.0:80 /root/remote_excute.php & |
在HA中添加一个名为PC的switch实体
然后编辑HA的配置文件/usr/share/hassio/homeassistant/configuration.yaml
,在switch
字段下添加如下字段
1 | switch: |
在HA面板中添加nas
在HA的概览中编辑仪表盘,添加PC开关。然后看看能不能控制Windows PC的开机和关机啦!