- PVSM.RU - https://www.pvsm.ru -
Ноябрь 2017 года, на календаре отображалось число одиннадцать. Распродажа на Aliexpress шла полным ходом, руки чесались что-нибудь купить. Выбор пал на "Ми-свет RGBW светодиодный лампы AC86-265V удаленного управление Smart освещения". В итоге были приобретены два экземпляра максимальной мощности, на 9 ватт, и хаб-контроллер MiLight WiFi iBox. Доставка из Китая не заставила себя долго ждать, а спустя 4 месяца, 13 марта 2017, открылась платформа Яндекс.Диалоги [1] (платформа, позволяющая сторонним разработчикам добавлять умения голосовому помощнику «Алиса»). Следом Алиса научится управлять освещением (и не только) у вас в квартире, а мы с вами ей в этом поможем, поэтапно и без единой строчки кода.
Первое, что необходимо сделать, это настроить управление лампами, хотя бы с помощью приложения от Xiaomi. Если для вас этот этап пройден, смело переходите далее, к настройке сервера умного дома, или еще дальше, непосредственно к интеграции Алисы и openHAB. Но, обо всем по порядку. Сами лампы к вашему домашнему роутеру не подключатся, для этого нужен хаб iBox, который может контролировать до четырех групп источников света. Необходимо подключить его к сети, а затем связать с ним лампы.
Уже сейчас можно поуправлять цветом и яркостью самого iBox, но нам необходимо подключить лампы. Для этого выполним привязку ламп к одной из четырех зон, доступных хабу для управления.
В принципе, на данном этапе у вас уже есть пульт для удаленного управления светом. Более того, вы можете написать свою систему управления освещением, благо протокол общения с хабом давно известен (когда-то он был доступен по ссылке limitlessled.com/dev). Есть готовые библиотеки на php [10], javascript [11], python [12]. Но управление это возможно только из локальной сети, чего для Алисы явно не достаточно. Попробуем решить данную проблему.
Кратко, что такое openHab [13]. Это сервер для управления умным домом с открытым исходным кодом. Разрабатывается сообществом, поддерживает управление огромным количеством устройств. Есть мобильный клиент, есть возможность управления Алексой от Amazon и ассистентом от Google. Написан на java, на базе фреймворка Eclipse SmartHome [14]. А значит его можно установить хоть на холодильник, главное чтобы на этом холодильнике работала виртуальная машина Java. Инструкции по установке есть для Linux [15], Windows [16], Mac OS [17], Raspberry Pi [18], для различных сетевых хранилищ Synology [19] и QNAP [20]. Быстро пробежимся по первому варианту.
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
sudo apt-get install apt-transport-https
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
sudo apt-get update
sudo apt-get install openhab2
sudo apt-get install openhab2-addons
sudo apt-get install openhab2-addons-legacy
sudo systemctl start openhab2.service
sudo systemctl status openhab2.service
sudo systemctl daemon-reload
sudo systemctl enable openhab2.service
http://openhab-device:8080
появится веб интерфейс.
Итак, у нас есть рабочий сервер умного дома и лампы от Xiaomi с возможностью удаленного управления. Необходимо их соединить. openHAB поддерживает биндинги (инструкции, позволяющие управлять подключенной электроникой) для множества устройств, в том числе и для данных ламп.
По соображениям безопасности, после описанных выше манипуляций, управление сервером умного дома возможно только из локальной сети. Этого для нашей задачи явно не достаточно. Вариантов настройки несколько [21]: настроить VPN для доступа из интернета к локальной сети, сконфигурировать реверсивную прокси или же соединить ваш сервер с сервисом myopenHAB Cloud по адресу myopenHAB.org. Так-как в России число сотрудников Роскомнадзора прямо пропорционально числу пользователей VPN и прокси-серверов, воспользуемся последним вариантом.
Не следует множить сущее без необходимости
Теперь управление лампой возможно из интернета, через API openHAB Cloud, которое поддерживает авторизацию по OAuth2. Но, к сожалению, клиенты заранее предопределены, это Alexa, Google Assistant и сервис IFTTT. Алисы в данном списке пока нет. Но это не проблема!
Если это тогда то.
Сервис, позволяющий выстроить из нескольких сервисов цепочку действий. Условно отреагировать действием в одном сервисе, если сработал триггер на событие в другом сервисе. IFTTT поддерживает огромное количество сервисов, в том числе и интересующий нас myopenHAB. Но не поддерживает Алису. Вообще, любой желающий может создать там модуль для своего сервиса, в первую очередь для этого надо связаться с отделом продаж и выяснить размер вашего ежегодного платежа в пользу IFTTT. Наша же цель бесплатно воспользоваться сервисом, чтобы иметь возможность перенаправлять запросы от Алисы к openHAB.
Для проверки нам необходимо вызвать триггер у сервиса Webhooks. Как это сделать? Отправить POST запрос.
Осталось создать аналогичный рецепт для события light_off, который будет отправлять команду OFF элементу управления светом. А затем научить Алису вызывать эти триггеры по нашему желанию.
По моему веленью, по моему хотенью Алиса включит свет, если использовать платформу Яндекс.Диалоги [26]. Платформа открылась в марте этого года и позволяет любому желающему добавить Алисе умений, за счет написания соответствующего кода. На данный момент в каталоге [27] уже представлено огромное количество умений. Разработка умения, это тема для отдельной статьи на хабре, а у нас тут "без единой строчки кода". Так что воспользуемся имеющимися наработками.
https://maker.ifttt.com/trigger/light_on/with/key/{user_id}
Если вы теперь нажмете на соответствующую кнопку или озвучите предложение, то запрос от серверов Яндекса поступит на сервер умения, оттуда в IFTTT, следом в myopenHAB, который передаст данные в ваш локальный инстанс, имеющий непосредственный доступ к хабу ламп, и свет включится. Аналогичную команду сразу добавим и для выключения освещения.
Надо понимать, что недостаточно просто включить Алису и произнести "включи свет". Яндекс ничего не знает о наших командах для умного дома, данные о них хранятся в базе умения "волшебные заклинания". Поэтому сначала нужно вызвать умение, произнеся "включи волшебные заклинания", а уже потом включать и выключать свет голосом.
Подход с интеграцией Алисы и openHAB через IFTTT ни чем не ограничивает вашу фантазию. Вы можете с помощью умения "волшебные заклинания" голосом управлять любыми вещами в вашем умном доме. К примеру, в openHAB есть биндинг для Samsung SmartTV, который позволяет управлять звуком и каналами телевизора. Взаимодействие Алисы и Webhooks представляет из себя реализацию голосового интерфейса ко всем сервисам IFTTT, "волшебные заклинания" позволяют выполнить команду любого из них. А можете вообще не использовать Алису, и написать свой фронтэнд, к примеру мобильное приложение, которое будет выполнять запросы к IFTTT через все те же Webhooks. Да и IFTTT использовать не обязательно, по аналогии можно настроить "волшебные заклинания" на выполнение запросов к вашему серверу.
Автор: d0lfin
Источник [30]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/280631
Ссылки в тексте:
[1] открылась платформа Яндекс.Диалоги: https://habr.com/company/yandex/blog/350968/
[2] Настройка умных ламп от Xiaomi: #xiaomi
[3] Установка openHAB: #openhab
[4] Управление светом через openHAB: #binding
[5] Внешний доступ к openHAB: #myopenhab
[6] IFTTT: #ifttt
[7] Алиса: #alice
[8] iOS: https://itunes.apple.com/ru/app/id1156007632
[9] Android: https://play.google.com/store/apps/details?id=com.irainxun.wifilight
[10] php: https://github.com/yasharrashedi/LimitlessLED
[11] javascript: https://github.com/goliatone/limitlessled
[12] python: https://github.com/happyleavesaoc/python-limitlessled
[13] openHab: http://www.openhab.org
[14] Eclipse SmartHome: http://www.eclipse.org/smarthome/
[15] Linux: https://docs.openhab.org/installation/linux.html
[16] Windows: https://docs.openhab.org/installation/windows.html
[17] Mac OS: https://docs.openhab.org/installation/macosx.html
[18] Raspberry Pi: https://docs.openhab.org/installation/rasppi.html
[19] Synology: https://docs.openhab.org/installation/synology.html
[20] QNAP: https://docs.openhab.org/installation/qnap.html
[21] Вариантов настройки несколько: https://docs.openhab.org/installation/security.html
[22] myopenHAB: https://myopenhab.org/
[23] https://myopenhab.org/account: https://myopenhab.org/account
[24] myopenhab.org/items: https://myopenhab.org/items
[25] ifttt.com: http://ifttt.com
[26] Яндекс.Диалоги: https://beta.dialogs.yandex.ru/
[27] в каталоге: https://beta.dialogs.yandex.ru/store/
[28] бета версию поискового приложения Яндекс: https://play.google.com/store/apps/details?id=ru.yandex.searchplugin.beta&referrer=utm_source%3Dhabr%26utm_medium%3Dalice%26utm_campaign%3Duserskills
[29] волшебные заклинания/волшебное заклинание: https://beta.dialogs.yandex.ru/store/skills/4d62be82-volshebnye-setevye-zaklinani
[30] Источник: https://geektimes.com/post/301021/?utm_campaign=301021
Нажмите здесь для печати.