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

24 авг. 2018 г.

Не так давно в телеграмм канале, Роман показал свою наработку как можно управлять 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 '{print $2}'" для выяснения состояния (включен/выключен дисплей или Mac)

Как пояснил Роман

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

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

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

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

sudo npm install -g homebridge-ssh
sudo npm install -g homebridge-wol

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

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

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

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

"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 OS

2. "your_user" - Это имя пользователя, только полное имя, а не так как у вас написано при входе (СИСТЕМНОЕ ИМЯ)

3."your_mac's_ip" - IP адрес мака

Но у тут настройки закончены.

Второй вариант это сон только монитора

"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"
              }
}
    ]

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

"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, и смотри как твои друзья будут до глубины души. Проще говоря офигеют. 

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

Не забываем ставить лайки, поддержите меня. Я очень старался.


Мы в Telegram - t.me/soprut
  1. (IlyaKupriyanov2) 5 месяцев назад

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

    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

  2. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 5 месяцев назад

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

    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

  3. Ян Янушкевич (yan_yan) 5 месяцев назад

    Огонь!

    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

  4. Роман Елизаров (FantomNotaBene)
    Роман Елизаров (FantomNotaBene) 5 месяцев назад

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

    Красавец!

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

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

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

    sudo npm i -g homebridge-ssh homebridge-wol

    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

  5. Артём Суровцев (surovtsev.artyom)
    Артём Суровцев (surovtsev.artyom) 5 месяцев назад

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

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

    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

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

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

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

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

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

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

      • Артём Суровцев (surovtsev.artyom)
        Артём Суровцев (surovtsev.artyom) 5 месяцев назад

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

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

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

    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

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

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

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

      • Артём Суровцев (surovtsev.artyom)
        Артём Суровцев (surovtsev.artyom) 5 месяцев назад

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

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

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


    • Вячеслав Фетисов (Ziracul)
      Вячеслав Фетисов (Ziracul) 5 месяцев назад

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

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

  6. Юрий Сапунов (Mobibet)
    Юрий Сапунов (Mobibet) 5 месяцев назад

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

К списку статей

Похожие статьи

15 нояб. 2018 г.
Xiaomi Mi Remote 360 добавляем Apple HomeKit
9 нояб. 2018 г.
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
4 сент. 2018 г.
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
15 нояб. 2018 г.
Способы автоматизации механических ворот
15 окт. 2018 г.
Прошивка для Sonoff c нативным HomeKit
27 окт. 2018 г.
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
1 окт. 2018 г.
Нативный HomeKit на ESP8266
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
2 окт. 2018 г.
Установка SDK для компиляции прошивок под HomeKit
28 авг. 2018 г.
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.