Сейчас стал распространенным удаленный режим работы и все рабочие встречи перетекли из переговорок и кабинетов во кучу всяких скайпов, зумов, хэнгаутсов и прочих. Каждое приложение считает правильным установить свою комбинацию на включение и выключение микрофона.
У меня нет рабочего кабинета в квартире, зато есть двое детей и жена. Если своевременно не отключать микрофон, то они становятся участниками всех совещаний. А вкл-выкл микрофона в каждой программе вносит паузы по секунд 5, пока разберешься с интерфейсами или хоткеями) Вообщем, у кого ситуация похожа, тот поймет проблематику.
После прочтения статьи с ссылкой на другую статью я захотел немного добавить комфорта в рабочий процесс, как будто я использую какой-нибудь дорогущий Polycom. Хочу нажать на какую-нибудь кнопку и микрофон выключится. Хочу нажать еще раз и он включится.
Что есть у меня для этого:
- xiaomi smart wireless switch
- zigbee2mqtt + CC2531
- node-red
Принцип реализации такой:
- находим скрипт, который переключает состояние микрофона с вкл на выкл и обратно
- включаем на macOS возможность удаленного подключения по ssh
- ловим нажатие кнопки и дергаем скрипт по ssh
Вот скрипт, взят с честных просторов интернета "как есть"
#! /bin/sh /usr/bin/osascript -e ' set inputVolume to input volume of (get volume settings) if inputVolume = 0 then set inputVolume to 100 display notification "" with title "Mic ON" else set inputVolume to 0 display notification "" with title "Mic MUTE" end if set volume input volume inputVolume '
Сохранить в /usr/local/bin с именем toggle-mic.sh
Добавляем права на выполнение и первый этап завершен
chmod +x /usr/local/bin/toggle-mic.sh
Далее надо включить доступ для удаленного входа по SSH. В macOS это делается в Системные настройки - Общий доступ - Удаленный вход
В статьях, приведенных вначале, ребята использовали Homebridge с плагином. У меня же на сервере УД стоит Node-Red, на нем и поднимем оставшуюся часть.
Процесс спаривания кнопки и zigbee2mqtt я опущу, он нетривиален и ищется на раз-два при необходимости.
Дергать скрипт на удаленной машине будем с помощью клиента ssh, которого получаем из плагина
node-red-contrib-ssh-v2-reconnection.
Я пренебрег мерами дополнительной безопасности и не стал настраивать вход по сертификатам.
Итоговое флоу выглядит совсем просто:
Ну и добавим немного визуализации, чтобы видеть в любом приложении включен микрофон или нет.
С этим поможет бесплатное приложение MuteMyMic
Ну и в качестве бонуса для тех кто захочет продолжить дальше:
- можно вместе с включением микрофона включать какую-нибудь лампу, например торшер, сигнализируя режим on air. У меня не зашло в быту, так как детям пофиг какая лампа горит или не горит
- можно назначить свой глобальный хоткей для этого скрипта, используя Automator и системные настройки. Гуглится легко.
А не проще через какое-нибудь приложение, например, bettertouchtool, забить отключение микрофона на уровне системы или для каждого приложения на один шорткат?