Як підключити будь-який розумний пристрій до HomeKit (за допомогою Raspberry Pi)

Багато розумних пристроїв пропускають підтримку Apple HomeKit і інтегруються лише з Alexa, Google та іншими платформами. Однак за допомогою цього хака Raspberry Pi ви можете додати підтримку HomeKit до будь-якого розумного пристрою за допомогою програмного забезпечення Homebridge з відкритим вихідним кодом.

HomeKit для будь-якого розумного пристрою

Якщо ви робите олл-ін на HomeKit, одна велика проблема полягає в тому, скільки розумних пристроїв підтримують це. Наприклад, єдине, що стримує деякі недорогі розумні лампочки, це відсутність підтримки HomeKit. Вибір Amazon для «розумної лампочки» – це a чотири упаковки від TECKIN, яка на момент написання цього матеріалу коштувала близько 40 доларів США — менше, ніж одна лампочка LIFX.

Звичайно, вони не такі преміальні, як LIFX; кольори не такі яскраві, і вони видають чутне дзижчання у ванній кімнаті, але за 10 доларів за порцію вони є досить неперевершеною ціною.

Головна проблема, однак, полягає в тому, що вони не мають підтримки HomeKit. Вони не зовсім тупі — вони працюють з Google Home, Alexa, IFTTT і додатком виробника. Вони підходять для тих, хто має лише розумні лампочки TECKIN.

Однак, оскільки ви не можете отримати до них доступ з HomeKit, ви не можете керувати ними з програми Home, віджета в Центрі керування або Siri. Ви також не можете включати їх у сцени з лампочками інших брендів або використовувати їх в автоматизації. Якщо ви вже інвестували в HomeKit, це, швидше за все, порушує угоду.

Знайомтесь, Homebridge

На щастя, є хитрість, яка робить ці лампочки набагато кориснішими. HomeKit API дозволяє пристроїв, які називаються мостами, наприклад цей від Philips Hue, щоб підключити дочірні пристрої, які працюють за іншими протоколами. Ви просто додаєте міст як пристрій у HomeKit, і він реєструє кожен підключений до нього світло в HomeKit. Щоразу, коли ви робите запит на оновлення освітлення, ваш телефон розмовляє з мостом, а міст розмовляє зі світлом.

  Як увімкнути двофакторну аутентифікацію в Slack

Отже, міст просто передає інформацію від одного API до іншого. Оскільки ви можете керувати лампочками TECKIN через Інтернет, їх цілком можливо підключити до HomeKit лише за допомогою програмного забезпечення — не потрібно власне обладнання.

Якщо у вас є Raspberry Pi (5 доларів США Пі Нуль це добре), ви можете налаштувати його як міст із фреймворком під назвою Homebridge. Ця легка програма NodeJS емулює HomeKit API і пересилає запити на ваші розумні пристрої, які не належать до HomeKit.

По суті, ви запускаєте його на Pi, і він додає кожен «немий» пристрій у програму Home. Коли ви намагаєтеся керувати лампочкою за допомогою програми Home або Siri, Homebridge розмовляє з пристроями за вас. Після того, як ви його налаштували, пристрій спочатку мав підтримку HomeKit.

Для цього потрібно, щоб пристрій постійно працював із Homebridge, тому це не те, що ви б встановили на своєму ноутбуку. Raspberry Pi ідеально підходить, але якщо у вас є старий пристрій, який ви можете змінити на сервер або робочий стіл, який постійно працює, ви можете встановити його там.

Homebridge — це фреймворк, і ви можете розширити його за допомогою плагінів. Він має досить велику підтримку спільноти, тому є велика ймовірність, що будь-який розумний пристрій, ймовірно, має плагін Homebridge, щоб додати його підтримку. Якщо на вашому пристрої немає плагіна, але на вашому розумному пристрої є API, і ви володієте технікою, ви можете написати його самостійно.

Однак для більшості людей установка — це лише встановлення Homebridge і фірмового плагіна для пристрою, а також трохи конфігурації. Якщо ви можете використовувати командний рядок і маєте трохи часу, це досить легко.

Встановлення та налаштування Homebridge

Homebridge — це програма NodeJS, тому вам потрібно встановити node і npm, щоб використовувати її. Якщо на вашому комп’ютері працює Linux, ви, ймовірно, можете отримати його зі свого менеджера пакетів.

В Ubuntu вам потрібно ввести наступне, щоб налаштувати репозиторію Node вручну, а потім встановити nodejs:

curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
sudo apt-get install -y nodejs

В іншому випадку можна проконсультуватися Сторінка завантаження Node для отримання інформації про те, як встановити його для вашої конкретної ОС.

  Що таке і як це виправити?

Якщо ви використовуєте Linux, вам також потрібно встановити деякі залежності, як показано нижче:

sudo apt-get install libavahi-compat-libdnssd-dev

Після цього ви можете встановити Homebridge глобально за допомогою npm, як показано нижче:

sudo npm install -g --unsafe-perm homebridge

Ви також хочете встановити потрібні вам плагіни бренду, оскільки Homebridge — це лише каркас. Для ламп TECKIN, наприклад, є плагін homebridge-tuya-web, який також встановлюється по всьому світу.

Ви б ввели наступне:

npm i homebridge-tuya-web -g

Після того, як все буде встановлено, ви можете дійсно використовувати річ! Введіть наступне, щоб запустити Homebridge один раз і ініціалізувати все:

homebridge

Він буде скаржитися на відсутність конфігурації, яку вам доведеться створити. Каталог за замовчуванням ~/.homebridge/, але ви можете використовувати параметр -U, якщо хочете його перемістити.

Введіть наступне, щоб створити новий файл конфігурації JSON у цій папці:

nano ~/.homebridge/config.json

Незалежно від плагінів, які ви використовуєте, вам потрібна така базова конфігурація:

{
  "bridge": {
    "name": "Homebridge",
    "username": "CC:22:3D:E3:CE:30",
    "port": 51826,
    "pin": "031-45-154"
  },

  "description": "Custom HomeBridge Server",

  "ports": {
    "start": 52100,
    "end": 52150,
  },

  "platforms": [

  ]
}

Це налаштовує Homebridge з портом за замовчуванням, назвою, PIN-кодом і діапазоном портів, доступними для призначення іншим пристроям.

Усередині порожнього масиву платформ ви розміщуєте конфігурацію для кожного плагіна. Ви зможете знайти інструкції та приклади цього на сторінці кожного плагіна GitHub.

У наведеному нижче прикладі плагін homebridge-tuya-web для лампочок TECKIN хоче знати моє ім’я користувача та пароль, щоб підключитися до API для програми лампочки, а також кілька інших речей:

  "platforms": [
     {
       "platform": "TuyaWebPlatform",
       "name": "TuyaWebPlatform",
       "options":
         {
           "username": "username",
           "password": "password",
           "countryCode": "1",
           "platform": "smart_life",
           "pollingInterval": 10
         }
     }
   ]

Коли це все буде налаштовано, Homebridge має бути готовий до роботи. Запустіть його знову, і ваш термінал повинен відобразити гігантський QR-код, який може змусити вас зменшити масштаб. Відскануйте це за допомогою програми Home, щоб додати його та всі підключені пристрої до HomeKit.

  Як увімкнути просторове аудіо для AirPods на iPhone або iPad

Homebridge завантажує ваші плагіни і має реєструвати повідомлення на екрані для кожного знайденого пристрою. Ви повинні побачити їх усі в HomeKit після їх додавання, і вони повинні бути повністю функціональними.

Я помітив невелику затримку порівняно з моїми лампочками LIFX. Це, ймовірно, тому, що лампочки контролюються через API, а не безпосередньо. Спочатку лампочки також не відображали білий і теплий білий колір належним чином, але після невеликого налаштування я зміг налаштувати правильні сцени.

Ви завжди можете налаштувати пристрої у власних програмах, дочекатися оновлення програми Home, а потім налаштувати сцену в HomeKit за допомогою попередньо готової конфігурації.

Якщо вам потрібно повторно додати Homebridge, ви захочете видалити папку persist/ у каталозі конфігурації, а потім видалити міст із HomeKit з налаштувань будь-якої підключеної лампочки на вкладці «Міст».

Додавання Homebridge як послуги

Якщо ви хочете, щоб Homebridge працював постійно, ви, ймовірно, захочете налаштувати його на перезапуск у разі збою або перезавантаження Raspberry Pi. Ви можете зробити це за допомогою служби Unix. Налаштуйте це після того, як переконаєтеся, що Homebridge працює належним чином.

Спочатку додайте нового користувача служби, який називається Homebridge:

sudo useradd -M --system homebridge

Встановіть пароль:

sudo passwd homebridge

Далі вам доведеться перемістити конфігурацію homebridge за межі вашого особистого домашнього каталогу. /var/lib/homebridge/ має бути в порядку:

sudo mv ~/.homebridge /var/lib/homebridge/

Переконайтеся, що особа, яка використовує Homebridge, має право власності на цей каталог і всі підпапки:

sudo chown -R homebridge /var/lib/homebridge/

Коли це буде зроблено, ви можете створити службу. Для цього створіть новий файл під назвою homebridge.service в /etc/systemd/system/:

sudo nano /etc/systemd/system/homebridge.service

А потім вставте таку конфігурацію:

[Unit]
Description=Homebridge service
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
ExecStart=/usr/bin/homebridge -U /var/lib/homebridge
Restart=on-failure
RestartSec=10
KillMode=process


[Install]
WantedBy=multi-user.target

Перезавантажте демон служб, щоб оновити його зі змінами:

sudo systemctl daemon-reload

Тепер ви повинні мати можливість увімкнути свою службу (налаштувавши її на запуск під час завантаження):

sudo systemctl enable homebridge

І почніть:

sudo systemctl start homebridge

Якщо вам потрібно налагодити помилки, які виникають у результаті конфігурації служби, ви можете переглянути журнали служби, ввівши:

journalctl -fn 50 -u homebridge