Блог

macOS: включаем и выключаем микрофон с помощью кнопки Xiaomi и Node-Red

Сейчас стал распространенным удаленный режим работы и все рабочие встречи перетекли из переговорок и кабинетов во кучу всяких скайпов, зумов, хэнгаутсов и прочих. Каждое приложение считает правильным установить свою комбинацию на включение и выключение микрофона.

У меня нет рабочего кабинета в квартире, зато есть двое детей и жена. Если своевременно не отключать микрофон, то они становятся участниками всех совещаний. А вкл-выкл микрофона в каждой программе вносит паузы по секунд 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, забить отключение микрофона на уровне системы или для каждого приложения на один шорткат?

У меня оба варианта работают и глобальный шорткат на выполнение скрипта и кнопка. После всяких аудиогарнитур для конф-коллов и специализированного оборудования для видеоконференций вариант с кнопкой для меня зашел.


Вернуться назад
Вернуться назад