Голосове управління розумним будинком на Z-wave через Siri

Ідея покерувати розумним будинком з допомогою голосових команд народилася вже давно. І в будь-яких системах так чи інакше це реалізовано. Siri – хороший і зручний голосовий помічник для власників айфонів. Розуміє людську мову, зручний. Але з причини закритого протоколу, не використовується для голосового управління «розумних» пристроїв. Добре, що у Apple є HomeKit – якийсь «тунель» для прийому команд розумними пристроями від Siri.

image

У цій статті я опишу процес встановлення та налаштування шлюзу для взаємодії Siri з пристроями домашньої автоматизації і розповім про деякі особливості різних версій.
Основним контролером розумного будинку у мене служить Vera3. Керує відповідно всякої Audio/Video компонентами і Z-wave пристроями. Ну а «чарівною паличкою» буде Node-JS додаток VeraHomeKitBridge. Нижче я напишу, чому зупинив свій вибір саме на цьому додатку.
Завантажуємо архів з GitHub'а. Потрібно все це десь розгорнути. У мене для цього є виртуалка. Хто не тримає вдома сервер, можна задіяти Raspberry Pi під це діло.

Процес установки
Короткий мануал по установці є на сторінці проекту. Я рекомендую додатково скористатися інструкцією сусіднього проекту на GitHub'е (на мій погляд вона більш зрозуміла).
Повністю копіювати команди сюди не буду. Пройдуся по пунктах:
  1. Встановлюємо необхідні пакети: nodejs, npm, git-core, libnss-mdns, libavahi-compat-libdnssd-dev.
  2. Копіюємо в lib/ сам HAP-NodeJS. Завантажуємо його окремим архівом звідси.
  3. Встановлюємо плагіни для роботи з додатком.
  4. Правимо config.json. Вписуємо IP адресу контролера Vera, і ще можна змінити пін-код на свій.
  5. Намагаємося запустити програму за допомогою команди node app.js
Бажано відразу встановити останню версію nodejs. У мене з стандартних репозиторіїв Debian, а встановилася версія 0.10.29. Із-за чого виникла помилка «error: 'REPLACE_INVALID_UTF8' is not a member of...» щось там. Підключаємо інший репозиторій і встановлюємо звідти.

curl -sL https://deb.nodesource.com/setup | sudo bash -
apt-get install nodejs

після цього версія повинна бути 0.10.44.

Ще в процесі запуску виникнуть помилки про відсутніх плагінах. Ставимо:
npm install ім'я_пакету

Ще може виникнути помилка «...invalid ELF header». Щоб запрацювало, потрібно зайти в lib/HAP-NodeJS і зробити
npm rebuild

У результаті повинно: успішно стартувати Хоумкит для Віри і автоматом подцепиться сцени і вимикачі, які бачить контролер. Якщо це сталося – півсправи зроблено.
Надалі, якщо ніяких помилок немає, можна запускати додаток у фоновому режимі командою:
forever start app.js

попередньо встановивши плагін
npm install forever

Робити це треба, звичайно ж, переконавшись, що ви перебуваєте в директорії VeraHomeKitBridge.

Тепер налаштовуємо HomeKit на iPhone
Встановлюємо додаток Insteon+. При бажанні можна вибрати інші платні аналоги. Головне щоб вони працювали з HomeKit.
Включаємо в Настройки- > Конфіденційність -> HomeKit програму, яку встановили.
У налаштуваннях iCloud треба створити в'язку ключів.
Заходимо в програму Insteon+. Робимо Add Device. Далі вона шукає аксесуар сумісний з HomeKit. У нас це запущений сервіс із запущеним HAP-NodeJS, який повинен бути в тій же локальній мережі, що і iPhone. Знаходимо один аксесуар і додаємо. Вводимо пін-код, який вказали в config.json. Перший раз додавання триває близько хвилини. Якщо все пройшло успішно, то все актуатори та сцени з Віри буде видно Insteon+ і навіть будуть працювати від натискання.
Але у мене є додаток від Віри. Повыключать я там можу. Insteon+ потрібен для голосового управління. Для цього в настройках програми вибираємо Edit Device. Вибираємо пристрій і переходимо в полі «Siri control». Туди треба вписати людське назва актуатора або сценарію. Наприклад, якщо це реле освітлення, то назвати «лампочка» або «світло». Взагалі «світло» — у Siri більш загальне поняття. Тому намагайтеся робити конкретні назви: праска, чайник, телевізор, теплий пол…
Розклавши пристрою в додатку по кімнатах можна давати команди: «Включи світло на кухні» Siri «бачить» назви кімнат. Ще у налаштуваннях пристрою можна вказати його тип. Зараз там Light і Fan. Може в майбутньому додадуться і інші типи. Зараз же можна для реле освітлення вказати, що це саме світло. Тоді пристрій буде реагувати на «Включи світло на кухні» і не буде реагувати, якщо його тип буде Fan. Нижче на відео я продемонструю голосове управління. Але у мене не так багато пристроїв, щоб показати всі варіанти управління голосом. Поки тільки принцип дії. А далі тільки з розширенням пристроїв і функціоналу Insteon+.

imageimage

Як я і раніше написав, можна працювати через сцени. Це дає нам можливість управляти практично все, що доступно в інтерфейсі Віри. Сцени все видно у додатку доступні при голосові команди. Тому можна керувати приймачем або телевізором, створивши 2 сцени — включення і вимикання ресивера. У Вірі сцени слід навать Receiver — On і Receiver — Off. Тоді можна давати команди на «Включити ресивер» і «Вимкнути ресивер», а не «Включити ресивер» і «Включити вимикання ресивера» відповідно.

Що ще?
HomeKit відкриває двері у голосове управління практично будь домашньою автоматикою. Для цього є більш широке поняття — homebridge. Куди можна запхати автоматику інших виробників. Пошарудів все той же GitHub можна знайти механізми управління для інших контролерів і платформ: WeMo, PhilipsHue… На плагін для Віри я натрапив майже рік тому, і за цей час він просунувся в кращу сторону.
Виділю деякі особливості: Якщо подивитися код, то видно, що взаємодія відбувається через http протокол. Працює швидше аналогів. Додаються відразу всі пристрої у вигляді єдиного аксесуара. При бажанні можна розширювати всю систему вздовж і впоперек.

Трохи лірики або труднощі перекладу
Тут зупинюся трохи на командах для Siri. Якщо назва пристрою вписати не явно, Siri лізе в Інтернет за вашим запитом, а не дає команду на цей пристрій. І команди, буває, розуміє по-різному. Іноді потрібно «Включити ...», але «Вимкни ...» Інакше на запит «Вимкнути тепла підлога», наприклад, буде шукати в інтернеті за запитом як вимкнути тепла підлога.
Є загальні команди, як «Увімкни освітлення ...», «Включи всі ...», «Опустити штори». Є команда на «Закрити», «Відкрити». Але в моєму випадку з гидролоками ця команда не спрацювала. Описував пристрій і як «вода» і як «кран». На команду «Закрити кран в туалеті» вперто не бачить пристрою. Хоча кімнату «Туалет» визначає. Трохи парадоксальна ситуація: називаю гидролок «праскою», даю команду «Увімкни праска» — перекриває воду. Називаю «вода», «кран», лізе в інтернеті шукати як закрити кран. Взагалі, із закриттям, мені здається, працює ця зв'язка тільки з певними пристроями типу замків. Але тоді він повинен бути відповідно описаний тип пристрою. І тоді команду «Закрити вхідні двері» Siri розуміє правильно.

На відео показаний принцип роботи. Перекриття води працює від реле, яке в HomeKit'е не вдалося описати як гидролок або кран.

Загалом, користуйтеся, пробуйте на інших пристроях як воно працює і вдосконалюйте голосове керування домашньою автоматизацією.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.