本帖最后由 zooven 于 2025-3-10 09:05 编辑
在网上找了一圈,发现现有的各种方法实现起来都好麻烦,干脆自己写了个MQTT控制电脑关机的服务,配合WOL实现开关机的效果,配置起来非常简单
1.HA中的MQTT配置就不说了,论坛里都是大佬
2.确保电脑上安装了.net8运行时
.net8运行时下载地址
3.下载并修改appsetting.json文件中的相关配置,代码开源,可以自行修改
github下载地址
GUANJI-Windows.zip
(1.46 MB, 下载次数: 17)
如果需要控制多台电脑,每台电脑的配置文件中的topic配置不一样的即可,暂时不支持win7,等我下周改一下
4.执行目录下的install.bat安装服务
服务安装好以后如果需要修改配置,可以执行uninstall.bat卸载服务后重新再安装服务
5.configuration.yaml中添加以下配置
如果需要控制多台电脑,那么相应的实体就需要多配置两个,topic和对应的电脑上安装的服务的topic配置一致
mqtt:
- button:
unique_id: guanji_btn
name: "电脑关机"
command_topic: "homeassistant/computer_control"
payload_press: "shutdown"
qos: 0
retain: false
entity_category: "config"
device_class: "restart"
switch:
- platform: wake_on_lan
name: "家里电脑" # 定义HA中实体的名称,可任意命名
mac: "电脑的mac地址" # 主机(电脑)的MAC地址
broadcast_address: "192.168.1.255" # 广播地址.不可省略.此处假设路由器地址为192.168.1.1,如为其他网段需要修改
broadcast_port: 9 # 止定wol端口,可省略
turn_off:
service: button.dian_nao_guan_ji
6.仪表盘中添加custom:button-card卡片,贴入下面的代码
如果需要控制多台电脑,配置多个按钮即可,注意实体id和上一步添加的保持一致
type: custom:button-card
entity: switch.jia_li_dian_nao
name: 家里电脑
icon: mdi:desktop-classic
show_name: true
show_icon: true
tap_action:
action: call-service
service: |
[[[ return entity.state === 'off' ? 'switch.turn_on' : 'button.press'; ]]]
service_data:
entity_id: >
[[[ return entity.state === 'off' ? 'switch.jia_li_dian_nao' :
'button.dian_nao_guan_ji'; ]]]
confirmation:
text: |
[[[ return entity.state === 'off' ? '确定要打开电脑电源吗?' : '确定要关机吗?'; ]]]
7.最终效果
|