Статья

Автоматизируем наш Mac блокировка\разблокировка через приложение Дом и Siri

Не так давно в телеграмм канале, Роман показал свою наработку как можно управлять Mac через приложение дом.Поговорив с Романом, оказалось он сам написал плагин для колобка, но я человек не богатый и пользуюсь Малинкой с Homebridge, но желание пользоваться таким решением у меня не отпадало ни на минуту.Немного подумав вместе с Романом пришли к выводу, что такое можно реализовать на Малинке Homebridge использую плагин Homebridge-SSH.Роман скинул часть конфига и я начал тестировать данное решение.Ложка дегтя и подводные камни в данном решении все таки есть, и я о них расскажу в конце статьи.Тестирование проварилось на двух машинах.1. Хакинтош с ОС MAc OS X Sierra 2. Mac BookPro 2007 года с операционной системой El Capitan.

Настройка системы 

Для того чтобы все работало нам нужно настроить в операционной системе доступ по ssh к нашему Mac.

Заходим Системные настройки --> Общий доступ и включаем параметр Удаленный вход

И должно получиться как на скрине ниже.

На этом настройки не закончены с Mac OS.Заходим Системные настройки --> Экономия энергии и раздел Сетевой адаптерИ выставляем как показано на скрине ниже.

На более новых версия Mac OS X, в частности Mac OS Mojave есть настройки которые отличаются от моих, а разницу можете посмотреть на скрине ниже. Скрин предоставил сам Роман.

На этом настройка нашей ОС закончена. Еще не забываем прописать статический IP адрес нашему Mac, делаем это либо в настройках мак или же закрепляем в настройках роутера за определенным устройством определенный ip, на это нет смысла тратить время, у каждого разный роутер и настройки происходят по-разному, ну а в Mac каждый найдет как это сделать.И начинаем настройку Homebridge

Как это все работает или суть работы

Малина Homebridge homebridge-ssh плагин немного apple script для ввода пароля в автоматическом режиме.Суть сводится к трем командам: 'pmset sleepnow' для отправки в сон'caffeinate -u -t 1; sleep 0.5; osascript -e \'tell application "System Events" to keystroke "here_your_password"\' -e \'tell application "System Events" to keystroke return\'' для разблокировки"pmset -g powerstate IODisplayWrangler | grep IOD | awk ''" для выяснения состояния (включен/выключен дисплей или Mac)Как пояснил Роман

Но суть в следующем, что малинка и плагин homebridge-ssh не могут разбудить мак если он глубоко спит, по этому будем использовать костыль в виде плагина homebridge-wol.

Настройка Homebridge и установка плагинов

Нам нужно установить плагин Homebridge-ssh и Homebridge-wol

Заходим в терминал или подключаемся к Малинке по SSH и устанавливаем командой

bash
Копировать
sudo npm install -g homebridge-ssh
sudo npm install -g homebridge-wol

На этом установка закончена и теперь нам нужно настроить config.json

Настройка config.json

Я приложу два варианта конфига, для разного решения отличаться они будут только одним параметром это Sleep - полный сон Mac и displaysleepnow - сон экрана.

Первый вариант конфига это глубокий сон ноутбука

json
Копировать
"accessories": [
{
              "accessory": "SSH",
              "name": "Mac",
              "on": "caffeinate -u -t 1; sleep 1.5; osascript -e 'tell application \"System Events\" to keystroke \"your_password\"' -e 'tell application \"System Events\" to keystroke return'",
              "off": "pmset sleepnow",
              "state": "pmset -g powerstate IODisplayWrangler | grep IOD | awk '{print $2}'",
              "on_value" : "4",
              "exact_match": false,
              "ssh": {
                "user": "your_user",
                "host": "your_mac's_ip",
                "port": 22,
                "password": "your_password"
              }
}
    ]

Данные настройки нужно поменять в обоих примерах.1. "your_password" в двух метстах, здесь мы прописываем Ваш пароль от Mac OS2. "your_user" - Это имя пользователя, только полное имя, а не так как у вас написано при входе (СИСТЕМНОЕ ИМЯ)3."your_mac's_ip" - IP адрес макаНо у тут настройки закончены.Второй вариант это сон только монитора

json
Копировать
"accessories": [
{
              "accessory": "SSH",
              "name": "Mac",
              "on": "caffeinate -u -t 1; sleep 1.5; osascript -e 'tell application \"System Events\" to keystroke \"your_password\"' -e 'tell application \"System Events\" to keystroke return'",
              "off": "pmset displaysleepnow",
              "state": "pmset -g powerstate IODisplayWrangler | grep IOD | awk '{print $2}'",
              "on_value" : "4",
              "exact_match": false,
              "ssh": {
                "user": "your_user",
                "host": "your_mac's_ip",
                "port": 22,
                "password": "your_password"
              }
}
    ]

Теперь нужно настроить прописать наш второй плагин.

javascript
Копировать
"accessories": [
  {
    "accessory": "NetworkDevice",
    "name": "My MacBook",
    "ip": "192.168.1.51",
    "mac": "aa:bb:cc:dd:ee:ff"
  }
]

Здесь меняем "name","ip": "192.168.1.51", "mac": "aa:bb:cc:dd:ee:ff" подставляем ваши значенияЭтот плагин нужно подключать только тогда, когда вы будете использовать глубокий сон.

Но тут почти все готово, мы все настроили теперь можно перегружать homebridge и увидем наш выключатель с названием Mac и в моем случае еще My MacBook

Настройка в приложении Дом

Чтобы у нас ноутбук все таки просыпался нам нужно создать сценарий и назвать его Включить Mac и поместить туда 2 переключателя это в моем случае Mac и My MacBook или же сгруппировать эти 2 устройства чтобы получилось одно целое

Ну теперь расскажу по порядку почему 2 переключателя и какой за что отвечает

  1. Mу MacBook - отвечает за отправку волшебного пакетика чтобы разбудить Mac
  2. Mac - после пробуждения из глубокого сна, выводит монитор из режима сна и проводит авторизацию на ноутбуке

Пришлось прибегнуть к такому костылю, но он работает.

Если все было правильно сделано, то все заработает и можно пользоваться данным решением.

Ложка дегтя и какие проблемы у меня все таки возникли

Ну первая проблема с которой я столкнулся что если ноутбук у меня подключен по wi-fi то у меня не получиться его разбудить, на некоторых Macbook есть возможность разбудить мак по wi-fi у кого то нет, все конечно зависит скорее всего от модуля беспроводной связи. 

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

Вроде больше ни каких проблем я не нашел.

Прилагаю пример как у меня это работает.

Вывод

Для чего вообще нужна данная автоматизация? 

Если вы еще не придумали или думаете зачем Вам такое решение, как она облегчит Вам жизнь, позвольте предложить пару кейсов как я использовать буду данное решение.

  1. Когда я буду ложиться спать я пропишу Свои маки (а у меня их 2) в сценарий Спокойной ночи, и когда я буду ложиться спать то и мои ноутбуки как часть экосистемы Умный дом тоже пойдут спать.
  2. Бывают такие ситуации когда Вам нужно чтобы кто-то Вам отправил файл с вашего Mac или Жене (другу, девушке, подруге, собаке, кошке и т.д.) потребовался Ваш Mac для учебы (работы, просто погулять по просторам интерната), но Вы не хотите говорить свой пароль, то можно спокойно, удаленно разблокировать Mac и не кто не сможет узнать Вашего пароля. Удобно, даже очень
  3. Удиви друзей - попроси Siri чтобы она включила Mac, и смотри как твои друзья будут до глубины души. Проще говоря офигеют. 

Просьба кто будет тестировать данное решение, не забывайте оставлять комментарии, если где-то доделаете, тоже не забывайте отписаться, может кто-то сделает еще проще решение, пишите, будем обновлять статью и дополнять.Не забываем ставить лайки, поддержите меня. Я очень старался.


Ну слов нет, удивляете, товарищ! Лайкос определенно!

спасибо огромное, мне очень приятно

Огромнейшее спасибо за проделанную работу ;) Жду продолжения )))

Олег, спасибо, будем работать:)

Огонь!

Спасибо большое.

Надо поправить мелочи вроде "чать конфига" и несколько речевых ошибок в стиле "проезжая мимо перрона с меня слетела шляпа", но суть донесена верно и довольно подробно :)

Красавец!

Еще несколько мелких замечаний:

Статический ойпишнег мака не обязателен, вместо него можно использовать MacBA-VFetisov-2.local в твоем случае. Этот адрес есть на первом скриншоте.

Два плагина можно установить единой командой:

sudo npm i -g homebridge-ssh homebridge-wol

Лучше ip прописать так вернее будет, ну мне так кажется, а устанавливал я 2 командами, чтобы начинающий юзер не запутался, суть не поменялась.
Ну а мелочи которые я описался, да я такой, но буду работать.

Спасибо за огромный труд, но я что-то не пойму, зачем все это нужно? Отправлять в сон и будить Мак через iPhone - это извращение. Мак должен делать все это самостоятельно, хоть по расписанию, хоть по определенным событиям, как угодно, но зачем использовать один гаджет, чтобы отключить другой? Это не автоматизация, а усложнение любой системы. 

А для блокировки-разблокировки уже давно придумано приложение MacID, разблокировать Mac можно при приближении к компьютеру или через отправленный запрос в виде уведомления. Для разблокирвоки используется Iouch ID или Face ID. Для этого нужны лишь Mac и iPhone, никакие малинки, хоумбриджи и подобное не нужны вовсе. 

Спасибо Вам за Ваш отзыв, ну а теперь рассказу как и что и для чего, по полочкам разложу, если у меня это не получилось сделать в статье.

На первое ваше предложение: Mac это для меня такое же устройство как и свет и термостат и так далее, у меня в руках всегда находится телефон и он используется для управления всем моим домом. Для меня это удобно. Выключать Mac через iPhone может быть и извращение, но мне лень вставать и его закрывать, сделалось это от моей лени. Это тоже своего рода автоматизация, когда я управляю одной кнопкой всеми устройствами в доме.

Ответ на вторую качать вопроса: MacID - разблокировка по Bluetooth 4.2 которого в априори нет в макбуке 2007 года, разблокировка по блютузу ограничена радиусом действия синего зуба, мое решение меня не ограничивает вообще.  Iouch ID (если я правильно понял, то вы имени ввиду Touch ID)  или Face ID смотрим выше мой ответ, но добавлю одно, опять же ограничения по железу, а именно сколько сейчас стоит макбук с Touch ID минимум 80к и у меня на Хакинтоше нет таких функций.

Чтобы использовать ваши решения нужно нужно понимать стоимость этих решений.

Да и на последок, прежде чем писать комментарий, вы еще раз подумайте и посмотрите технологии которые я использовал и вы предлагаете.

Мое решение мне обошлось в 2000 рублей, предложение которое вы говорите стоит начиная от 80к.

Если все таки вы готовы подискутировать напишите общий чат в телеграм и я готов Вам ответить на все ваши вопросы.



Прежде чем отвечать на комментарий, внимательно изучите ответ, чтобы понять, что я не предлагаю заменить решение за 2К аналогом за 80К. 



Вы меня неверно поняли на счет MacID. Приложение умеет разблокировать Мак сканом пальца или лица на айфоне. Не нужно ничего для этого докупать и доделывать. Как только iPhone появляется в зоне действия блютуз - компьютер разблокируется, как только пропадает - блокируется. При этом для подтверждения удаленной блокировки (за пределами действия блютуз) используется Touch ID или Face ID на iPhone. В Вашем случае потребуется лишь совместимый с macos USB bluetooth адаптер 4.2, цена которого сопоставима с малинкой. 

А на счет удаленного отключения Мак с телефона, я все равно не пойму, зачем это делать? Почему не настроить самостоятельный уход в спящий режим по таймеру?

Уход в сон настроен, но я хочу так же контролировать в каком состоянии находится мак.

USB bluetooth адаптер 4.2 - у меня дома по факту если быть уж совсем четными то 3 макбука 1 хакинтош более мощный и 2 стареньких макбука, вкладывать в них деньги нет смысла, тем более USB свистки которые очень и очень тяжело подобрать чтобы работала данная программа + программа сама по себе платная и работает так себя прямо.

А на счет удаленного отключения Мак с телефона, я все равно не пойму, зачем это делать? - Я хочу знать все о своих устройствах в каком они состоянии находятся ни кто ли не использует его без моего ведома и так же я могу его спокойно из любой точки мира включить и выключить. Каждому свои карандаши нравятся вот и все.

А 3 USB свистка это - 800-900 рублей за каждый и не факт что он заработает настой версии Mac OS X + неудобной рорчащий свисток и занятый USB порт которых и так не хватает.

Как кто-то может без Вашего ведома использовать Мак, если пароль никому не говорите? Как часто нужно проверять состояние компьютеров удаленно (только честно), можно же потом по факту логи посмотреть и все? Как часто нужно выключать их не по таймеру, а именно со смартфона? 

Вы сами себе противоречите в статье и комментариях. 

Приведенные сценарии использования ну просто высосаны из пальца. Я не пытаюсь преуменьшить потраченные усилия, но, мне кажется, это крайне сомнительная автоматизация. 


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

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

Отличный кейс, огромное спасибо!

упомянутый в комментах MacID уже deprecated, создатели рекомендуют переходить на их новую такую же софтину: Unlox, тоже стоит 300р

но в комментах очень много жалоб на нестабильную работу


А как плагин для колобка называется?


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