本帖最后由 zxl_hass 于 2022-4-3 17:50 编辑
不需要增加任何硬件成本,但是电脑必须支持WOL(远程唤醒)
1、安装 python3,并安装 jsonrpclib-pelix 库
pip3 install jsonrpclib-pelix
2、按win+R键输入: shell:startup 会打开一个文件夹,在此文件夹新建一个后缀名为.pyw文件,然后右键打开方式 设置为 python 复制粘贴以下内容:
import subprocess
import socket
from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
def poweroff(on_off):
if on_off.lower() == "sleep": #休眠
print(f"on_off: {on_off.lower()}")
res = subprocess.run('rundll32.exe powrprof.dll,SetSuspendState 0,1,0',shell=True,encoding='utf-8',stdout=subprocess.PIPE)
return "ON"
elif on_off.lower() == "off": #关机
print(f"on_off: {on_off.lower()}")
res = subprocess.run('shutdown -s -f -t 03',shell=True,encoding='utf-8',stdout=subprocess.PIPE)
return "OFF"
return "unknown"
# 单线程
print(f"Server Start")
server = SimpleJSONRPCServer(('192.168.1.123', 1234)) #本地IP地址和监听端口
server.register_function(poweroff, 'poweroff')
server.serve_forever()
#curl -X POST -d '{"id": "1234", "method": "poweroff", "params": ["off"], "jsonrpc": "2.0"}' "http://192.168.1.123:1234"
3、编辑Homeassistant 配置文件在 switch下添加:
- platform: command_line
switches:
poweroff_mycomputer:
friendly_name: 台式机关机
command_on: >
curl -X POST -d '{"id": "123", "method": "poweroff", "params": ["sleep"], "jsonrpc": "2.0"}' "http://192.168.1.123:1234"
command_off: >
curl -X POST -d '{"id": "123", "method": "poweroff", "params": ["off"], "jsonrpc": "2.0"}' "http://192.168.1.123:1234"
unique_id: poweroff_mycomputer
value_template: '{{ value_json.result=="ON"}}'
改一下同样适用于Linux系统的主机.
以上完成后重启Homeassistant和电脑测试就行了。
其实有很多种玩法,根据需要改一下文件和调用就行。
|