• Главная
  • Карта сайта
Не найдено

«Аліса, включи світло». Голосове управління розумним будинком на базі openHAB. Без програмування і СМС

  1. 1. Налаштування розумних ламп від Xiaomi.
  2. 2. Установка openHAB
  3. 3. Управління світлом через openHAB
  4. 4. Зовнішній доступ до openHAB
  5. 5. IFTTT
  6. 6. Аліса
  7. PS

Листопад 2017 року, на календарі відображалося число одинадцять. Розпродаж на Aliexpress йшла повним ходом, руки свербіли що-небудь купити. Вибір припав на "Мі-світло RGBW світлодіодний лампи AC86-265V віддаленого управління Smart освітлення". У підсумку були придбані два примірника максимальної потужності, на 9 ват, і хаб-контролер MiLight WiFi iBox. Доставка з Китаю не змусила себе довго чекати, а через 4 місяці, 13 березня 2017, відкрилася платформа Яндекс.Діалогі (Платформа, що дозволяє стороннім розробникам додавати вміння голосовому помічнику «Аліса»). Слідом Аліса навчиться керувати освітленням (і не тільки) у вас в квартирі, а ми з вами їй в цьому допоможемо, поетапно і без єдиної строчки коду.

  1. Налаштування розумних ламп від Xiaomi
  2. установка openHAB
  3. Управління світлом через openHAB
  4. Зовнішній доступ до openHAB
  5. IFTTT
  6. Аліса

1. Налаштування розумних ламп від Xiaomi.

Перше, що необхідно зробити, це налаштувати управління лампами, хоча б за допомогою програми від Xiaomi. Якщо для вас цей етап пройдено, сміливо переходите далі, до налаштування сервера розумного будинку, або ще далі, безпосередньо до інтеграції Аліси і openHAB. Але, про все по порядку. Самі лампи до вашого домашнього роутера НЕ підключаться, для цього потрібен хаб iBox, який може контролювати до чотирьох груп джерел світла. Необхідно підключити його до мережі, а потім зв'язати з ним лампи.

  1. Подаємо харчування на iBox, підключивши його по usb, наприклад, із зарядним пристроєм для телефону.
  2. При першому підключенні необхідно скинути настройки хаба, тому натискаємо RST.
  3. Далі встановлюємо на телефон додаток від Xiaomi під iOS або Android . Переконуємося що Ви отримуєте доступ до домашньої мережі Wi-Fi.
  4. Відкриваємо додаток Mi-Light 3.0, натискаємо +. Тут нас цікавить вкладка Smart Link.
  5. Вводимо назвою і пароль домашньої Wi-Fi мережі, до якої підключений телефон і планується підключити iBox.
  6. Зараз у вас iBox повинен бути підключений до мережі, а індикатори SYS і LINK повинні моргати, повільно і швидко відповідно. Якщо це не так, натисніть RST ще раз.
  7. Якщо індикатори блимають, натисніть в додатку Start Configuration, почнеться процес налаштування підключення для хаба.
  8. Через секунд десять миготіння припиниться, потім SYS знову почне повільно кліпати, а LINK залишиться горіти. У додатку відобразиться повідомлення Configured. Хаб підключений до мережі. Якщо в списку Device List його немає, то просто натисніть Searching for device.

Вже зараз можна покерувати кольором і яскравістю самого iBox, але нам необхідно підключити лампи. Для цього виконаємо прив'язку ламп до однієї з чотирьох зон, доступних хабу для управління.

  1. Відкриваємо в додатку Mi-Light 3.0 зі списку хаб Mi-Light. Заходимо в розділ Colors.
  2. У верхній частині екрану вибираємо одну з зон, нехай буде Zone1. І натискаємо на іконку зв'язування пристроїв в правому верхньому куті. Відкриється екран LINK / UNLINK з інструкцією.
  3. Тепер налаштовуємо ті лампи, які ми хочемо прив'язати до Zone1, управління ними в подальшому буде відбуватися синхронно. Для управління яскравістю і кольором кожної лампи окремо, їх треба віднести до окремих зонах. Отже, включаємо лампу, і протягом перших трьох секунд натискаємо в додатку Link. Якщо лампа моргнула три рази, то все відмінно, синхронізація пройшла успішно. Можна керувати лампою.

В принципі, на даному етапі у вас вже є пульт для віддаленого управління світлом. Більш того, ви можете написати свою систему управління освітленням, благо протокол спілкування з хабом давно відомий (колись він був доступний за посиланням limitlessled.com/dev). Є готові бібліотеки на php , javascript , python . Але управління це можливо тільки з локальної мережі, чого для Аліси явно не достатньо. Спробуємо вирішити дану проблему.

2. Установка openHAB

Коротко, що таке openHab . Це сервер для управління розумним будинком з відкритим вихідним кодом. Розробляється співтовариством, підтримує управління величезною кількістю пристроїв. Є мобільний клієнт, є можливість управління Алексой від Amazon і асистентом від Google. Написаний на java, на базі фреймворка Eclipse SmartHome . А значить його можна встановити хоч на холодильник, головне щоб на цьому холодильнику працювала віртуальна машина Java. Інструкції по установці є для Linux , Windows , Mac OS , Raspberry Pi , Для різних мережевих сховищ Synology і QNAP . Швидко пробіжимося за першим варіантом.

  1. Додаємо ключі сховища: wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https
  2. Додаємо власне сховище: echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
  3. Оновлюємося і ставимо сервер разом з доповненнями: sudo apt-get update sudo apt-get install openhab2 sudo apt-get install openhab2-addons sudo apt-get install openhab2-addons-legacy
  4. Налаштовуємо автоматичний запуск сервісу після перезавантаження пристрою і запускаємо його: sudo systemctl start openhab2.service sudo systemctl status openhab2.service sudo systemctl daemon-reload sudo systemctl enable openhab2.service
  5. Тепер чекаємо в районі 15-20 хвилин (це не перебільшення, це сувора реальність з жартами про швидкість роботи Java), поки він завантажиться і за адресою http: // openhab-device: 8080 з'явиться веб інтерфейс.
  6. На цій сторінці нас цікавить пункт Paper UI. Саме з цим типом інтерфейсу будемо працювати надалі.

Саме з цим типом інтерфейсу будемо працювати надалі

3. Управління світлом через openHAB

Отже, у нас є робочий сервер розумного будинку і лампи від Xiaomi з можливістю віддаленого управління. Необхідно їх з'єднати. openHAB підтримує Біндінг (інструкції, що дозволяють управляти підключеної електронікою) для безлічі пристроїв, в тому числі і для даних ламп.

  1. Заходимо в Add-onBindings.
  2. Встановлюємо Milight Binding.
  3. Для додавання нашого пристрою натискаємо на + в розділі ConfigurationThings.
  4. Вибираємо Milight Binding, починається автоматичний пошук пристрою.
  5. У мене автоматично нічого не знайшлося, тому я додавав вручну "Manually add thing".
  6. Вибираємо для додавання хаб iBox / iBox2.
  7. На сторінці, необхідно заповнити поля IP і Bridge ID (mac адресу пристрою, що підключається), їх можна дізнатися, наприклад, в панелі управління роутером (у мене хаб реєструється в мережі з ім'ям використовуваного в ньому Wi-Fi модуля HF-LPB100). Додаємо.
  8. Відмінно, в списку пристроїв тепер відображається iBox / iBox2 з написом "Online".
  9. Знову натискаємо на + і вибираємо Milight Binding, щоб на цей раз додати безпосередньо лампи.
  10. Тепер руками додавати нічого не потрібно, достатньо вибрати групу ламп зі списку (в моєму випадку це пункт Rgbww Color (Zone 1)).
  11. Обраний пункт повинен з'явитися в списку речей так само з написом "Online".

    Online

  12. Пристрої налаштовані, тепер необхідно додати до них елементи управління. Для цього натискаємо по щойно доданому пункту.
  13. Відкривається список параметрів лампи, якими ми можемо дистанційно керувати. Кількома по синьому колі Brightness.
  14. Далі вибираємо елемент управління, з яким хочемо зв'язати параметр пристрою, тому що у нас їх ще немає, натискаємо по Create new item.
  15. Задаємо довільне ім'я, наприклад Light_Switcher, і, міняємо тип з Dimmer на Switch, тому що у мене немає необхідності регулювати яскравість лампи, я хочу її просто вмикати і вимикати. Міняємо категорію просто на Light, щоб елемент управління відобразився з іконкою в розділі Control. Натискаємо Link.
  16. Переходимо в розділ Control і насолоджуємося роботою перемикача Brightness у пристрої.

4. Зовнішній доступ до openHAB

З міркувань безпеки, після описаних вище маніпуляцій, управління сервером розумного будинку можливо тільки з локальної мережі. Цього для нашої задачі явно не достатньо. Варіантів настройки кілька : Налаштувати VPN для доступу з інтернету до локальної мережі, конфігурувати реверсивну проксі або ж поєднати ваш сервер з сервісом myopenHAB Cloud за адресою myopenHAB.org. Так-так в Росії число співробітників Роскомнадзора прямо пропорційно числу користувачів VPN і проксі-серверів, скористаємося останнім варіантом.

Не слід множити суще без необхідності

  1. Реєструємося на сайті myopenHAB , Авторізуемся і заходимо за адресою https://myopenhab.org/account . На даній сторінці нас цікавлять два поля: openHAB UUID і openHAB Secret. Саме вони дозволяють організувати зв'язок серверів. Давайте розберемося де їх взяти.
  2. Заходимо в панель управління PaperUI openHAB.
  3. Відкриваємо розділ ConfigurationAdd-onsMisc.
  4. Встановлюємо openHAB Cloud Connector.
  5. В ConfigurationServices повинен з'явитися модуль openHAB Cloud з режимом "Notifications & Remote Access".
  6. В ConfigurationSystemAdd-on Management її потрібно активувати перемикач "Acceess Remote Repository".
  7. Після установки аддона, шукані нами дані виявляться в файлах / var / lib / openhab2 / uuid і / var / lib / openhab2 / openhabcloud / secret (userdata / uuid і userdata / openhabcloud / secret, якщо ставили не з пакета). Вводимо їх в налаштуваннях облікового запису на myopenHAB і тиснемо Update. Якщо все настрій коректно, то зліва від адреси вашої пошти має з'явитися слово "Online". Це говорить про те, що доступ до вашого розумному будинку з мережі інтернет відкритий, але відразу Аліса їм скористатися не зможе. Для початку треба зробити доступним зовні налаштоване раніше пристрій.
  8. Переходимо в розділ ConfigurationServicesopenHAB CloudConfigure.
  9. У списку Items to expose to apps such as IFTTT активуємо чекбокс для елемента управління яскравістю і натискаємо Save.
  10. Через деякий час перевіряємо, що обраний елемент присутній в списку на сторінці myopenhab.org/items зі статусом "ON".

org/items   зі статусом ON

Тепер управління лампою можливо з інтернету, через API openHAB Cloud, яке підтримує авторизацію по OAuth2. Але, на жаль, клієнти заздалегідь визначені, це Alexa, Google Assistant і сервіс IFTTT. Аліси в даному списку поки немає. Але це не проблема!

5. IFTTT

Якщо це тоді то.

Сервіс, що дозволяє вибудувати з декількох сервісів ланцюжок дій. Умовно відреагувати дією в одному сервісі, якщо спрацював тригер на подію в іншому сервісі. IFTTT підтримує величезну кількість сервісів, в тому числі і цікавий для нас myopenHAB. Але не підтримує Алісу. Взагалі, будь-який бажаючий може створити там модуль для свого сервісу, в першу чергу для цього треба зв'язатися з відділом продажів і з'ясувати розмір вашого щорічного платежу на користь IFTTT. Наша ж мета безкоштовно скористатися сервісом, щоб мати можливість перенаправляти запити від Аліси до openHAB.

  1. Реєструємося на сайті ifttt.com і заходимо в AppletsNew Applet.
  2. Після натискання + this, необхідно вибрати сервіс, подія в якому буде тригером. Оскільки сервісу Аліси в списку немає, нам треба вибрати щось, що зможе отримувати від неї команди. Це сервіс Webhooks. Натискаємо Connect.
  3. Далі вибираємо зі списку з одним пунктом тригер "отримання web запиту".
  4. Вказуємо ім'я події, наприклад light_on, і тиснемо Create.
  5. Тепер треба вибрати відповідне дію, натискаємо на + that. Наш вибір openHAB, підключаємо.
  6. У вікні, згаданої раніше OAuth2 авторизації, натискаємо по Allow.
  7. Доступна єдина реакція "відправити команду".
  8. У списку вибираємо елемент управління лампою (наприклад Light_Switcher), а в якості команди включення світла вказуємо слово "ON". Створюємо.

Для перевірки нам необхідно викликати тригер у сервісу Webhooks. Як це зробити? Надіслати POST запит.

  1. Шукаємо на сайті IFTTT сервіс Webhooks і заходимо в пов'язану з ним документацію.
  2. На сторінці є команда, яку нам треба виконати, замінивши {event} на light_on.
  3. Після натискання на Test It, ваша лампа повинна включитися.

Залишилося створити аналогічний рецепт для події light_off, який буде відправляти команду OFF елементу управління світлом. А потім навчити Алісу викликати ці тригери за нашим бажанням.

6. Аліса

На мою велінню, по моєму бажанню Аліса включить світло, якщо використовувати платформу Яндекс.Діалогі . Платформа відкрилася в березні цього року і дозволяє будь-якому охочому додати Алісі умінь, за рахунок написання відповідного коду. На даний момент у каталозі вже представлена ​​величезна кількість умінь. Розробка вміння, це тема для окремої статті на Хабре, а у нас тут "без єдиної строчки коду". Так що будемо використовувати наявними напрацюваннями.

  1. встановлюємо бета версію пошукового додатка Яндекс , Тільки в ньому на даний момент є підтримка користувацьких умінь.
  2. Говоримо Алісі "включи магічні заклинання". Саме вміння магічні заклинання / чарівне заклинання дозволить нам виконувати POST запити до серверів IFTTT.
  3. Натискаємо Додати і вказуємо адресу для включення світла виду: https://maker.ifttt.com/trigger/light_on/with/key/{user_id}
  4. Наступним кроком вимовляємо фразу або слово, на яке Аліса реагуватиме виконанням запиту за вказаною адресою (моя Аліса відповідає на «включи світло»).

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

Треба розуміти, що недостатньо просто включити Алісу і вимовити "включи світло". Яндекс нічого не знає про наших командах для розумного будинку, дані про них зберігаються в базі вміння "магічні заклинання". Тому спочатку потрібно викликати вміння, вимовивши "включи магічні заклинання", а вже потім включати і вимикати світло голосом.

PS

Підхід з інтеграцією Аліси і openHAB через IFTTT ні чим не обмежує вашу фантазію. Ви можете за допомогою вміння "магічні заклинання" голосом управляти будь-якими речами у вашому розумному будинку. Наприклад, в openHAB є Біндінг для Samsung SmartTV, який дозволяє управляти звуком і каналами телевізора. Взаємодія Аліси і Webhooks вдає із себе реалізацію голосового інтерфейсу до всіх сервісів IFTTT, "магічні заклинання" дозволяють виконати команду будь-якого з них. А можете взагалі не використовувати Алісу, і написати свій фронтенд, наприклад мобільний додаток, яке буде виконувати запити до IFTTT через все ті ж Webhooks. Та й IFTTT використовувати не обов'язково, за аналогією можна налаштувати "магічні заклинання" на виконання запитів до вашого сервера.

Com/user/downloadSubjectPublicKey?
Як це зробити?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью