本帖最后由 Sunbelife 于 2019-7-16 09:31 编辑
前言
教程在下面。
先给你们看看家伙,哈哈:
[1]
仅支持 macOS,支持实时反馈。
也就是说手机上操作,电脑会静音/不静音。
电脑按下静音键,手机上也会显示静音状态。
想法原理
其实这事分三步。
第一步是如何让 Hassio 和 macOS 发生关系,用 Hassio 让 Mac 静音,这得写个开关。
第二步是如何让它反馈状态,这得写个 Sensor。
第三步就是让 Sensor 和开关联动,这得写个自动化。
再就是排坑了,一言难尽。
误打误撞写完了。
想法实现
具体到实现简单很多。
一切的起源来源于 Apple Script,可以理解为它能用代码执行 macOS 上的任何操作,当然,包括静音,以及获取静音状态。
总之,静音的命令就是:
osascript -e 'set volume output muted true/false'
获取静音状态的命令就是:
osascript -e 'output muted of (get volume settings)'
此外其实还可以调音量进度。
我是在这学到的:Set/get OSX volume/mute from the command line[2]
步骤如下:
0、在 macOS 上开启 SSH 访问,在「偏好设置 - 共享 - 远程登录」画勾:
然后登录进树莓派,执行下面的命令。
一路回车。
创建免秘钥登录:
sudo docker exec -it homeassistant bash
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 你电脑的用户名@你电脑的IP
1、用 Command line Switch 实现 macOS 的静音开关,自己调整好缩进吧:
- platform: command_line
switches:
mute:
command_on: ssh 你的用户名@你的IP osascript -e \'set volume output muted false\'
command_off: ssh 你的用户名@你的IP osascript -e \'set volume output muted true\'
2、用 Command line Binary Sensor 实现状态反馈,自己调整好缩进吧:
binary_sensor:
- platform: command_line
name: mac_mute_status
command: ssh 你的用户名@你的IP osascript -e \'output muted of \(get volume settings\)\'
payload_on: 'false'
payload_off: 'true'
scan_interval: 1
device_class: "sound"
3、写两个自动化,上面的 Sensor 感应到关了,就把开关关掉,感应到开了,就吧开关打开:
- id: '1563231514344'
alias: Mac mute state
trigger:
- entity_id: binary_sensor.mac_mute_status
from: 'off'
platform: state
to: 'on'
condition: []
action:
- alias: ''
data:
entity_id: switch.mute
service: switch.turn_on
- id: '1563231650909'
alias: Mac mute state off
trigger:
- entity_id: binary_sensor.mac_mute_status
from: 'on'
platform: state
to: 'off'
condition: []
action:
- data:
entity_id: switch.mute
service: switch.turn_off
4、然后就搞定了,随便起个名字玩吧:
附链接
[1]: http://v.youku.com/v_show/id_XND ... j.8428770.3416059.1[/media]
[2] Set/get OSX volume/mute from the command line: https://coderwall.com/p/22p0ja/s ... om-the-command-line
版权所属 @Sunbelife,转载需署名
|