Доброго времени суток, уважаемые хабровчане!

Навык OH Cloud
Навык OH Cloud

Сегодня я хотел бы рассказать про навык (интеграцию) голосового помощника Яндекс Алисы с умным домом, построенным на openHAB. Как мы все знаем, управление умным домом (далее - УД) с помощью голосовых команд прочно вошло в нашу жизнь - GoogleHome, Homekit, Умный дом с Алисой и прочее прочее давно уже на слуху у каждого. Не обошел этот тренд и опенсурс систем умного дома, но именно голосовой ассистент Яндекса из коробки нигде не поддерживается.

И если для HomeAssistant давно уже был написан компонент Yandex Smart Home , позволяющий интегрировать Алису в умный дом, то в случае с openHAB все гораздо печальнее.

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

Идея создать простую и удобную, а главное надежную, интеграцию Алисы в УД openHAB витала в воздухе давно, но только сегодня получилось ее осуществить благодаря стараниям @Petrosts, @iPavel89 и неоценимой помощи остальных людей, принимавших участие в проекте.

Как это работает?

Для того, чтобы воспользоваться возможностью голосового управления через ассистент Яндекс Алису в УД openHAB, необходимо установить так называемый биндинг (Binding). На данный момент биндинг можно загрузить с github разработчика, или установить из маркетплейса в самом ОХ. Я буду использовать второй вариант.

Подразумевается что openHAB у вас уже установлен и настроен, в частности должен быть установлен дополнительный биндинг openHAB Cloud Connector. Если это не так, то давайте исправим ситуацию.

Заходим в Настройки, выбираем Bindings.

Установка биндингов
Установка биндингов

Переходим на вкладку Search, ищем нужные биндинги, устанавливаем их по кнопке INSTALL

Пользуемся поиском
Пользуемся поиском
openHAB Cloud Connector
openHAB Cloud Connector
Binding for Yandex Alice
Binding for Yandex Alice

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

Вкладки в разделе настроек
Вкладки в разделе настроек

Настройка биндинга openHAB Cloud для работы с навыком OH Cloud чрезвычайно проста - необходимо лишь поставить галочку напротив пункта Show advanced и прописать новый сервер облака - https://ohcloud.ru/

Настройка сервера
Настройка сервера

Не забудьте сохранить настройки, нажав кнопку Save в правом верхнем углу. Всякое бывает..

Как вы уже поняли, навык OH Cloud использует свой собственный облачный сервер для взаимодействия с голосовым ассистентом Алисой. По функционалу он практически ничем не отличается от официального облачного сервиса myopenhab.org, с ним так же может работать родное android приложение openHAB - вы сможете получать пуш-уведомления и отсылать и передавать на свой сервер умного дома данные о заряде батареи телефона, времени срабатывания будильника и так далее. Но, к сожалению, официальное приложение для iOS имеет некоторые ограничения при работе со сторонними облачными серверами.

Осталось лишь зарегистрироваться на облачном сервере OH Cloud, указав openHAB UUID и Secret. Но для начала необходимо узнать эти самые UUID и Secret - сделать это можно воспользовавшись официальной документацией openHAB по этой ссылке.

Если кратко, то интересующие нас данные, в зависимости от типа инсталляции, лежат тут.

Расположение файлов
Расположение файлов

Например, если вы устанавливали openHAB из репозитория, получить содержимое этих файлов можно с помощью команды cat указав полный путь до файла.

Содержимое файлов.
Содержимое файлов.

Не смотря на то что вывод команды cat немного кривоват, цель достигнута. Аккуратно копируем текст до имени пользователя ( в моем случае до openhab@openhab3).

Также можно посмотреть содержимое этих файлов через nano / vi / mc, или скопировать их с помощью WinSCP и на локальной машине открыть их блокнотом, в общем вариантов масса.

В моем случае тестовый сервер openHAB работает на машине с Windows, поэтому я просто зайду в папку где лежит ОХ, затем в каталог userdata, скопирую содержимое файла uuid открыв его через блокнот. Тоже самое необходимо провернуть с файлом secret, расположенном в папке openhabcloud.

Содержимое файла secret
Содержимое файла secret

Чтож, все что необходимо для регистрации в облаке мы получили, приступим непосредственно к самой регистрации. Заходим на сайт https://ohcloud.ru/ и заполняем форму.

Форма регистрации
Форма регистрации

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

Настало время прикрутить навык для взаимодействия с Алисой. Открываем на мобильном телефоне приложение Умный дом с Алисой, жмем плюсик для добавление устройств и выбираем "Устройства умного дома". В поиске ищем наш навык OH Cloud и жмем кнопку "Привязать к Яндексу".

Вас перекинет на уже знакомую форму входа\регистрации облачного сервера OH Cloud, но на этот раз регистрироваться само собой не придется. Вводим емейл и пароль, которые были использованы при создании учетной записи и жмем Sign in.

После успешного входа в облако OH Cloud вас должно перекинуть на страницу предоставления доступа через OAuth2. Необходимо нажать на кнопку Allow, разрешив тем самым доступ Яндексу к нашей системе умного дома openHAB. В случае если что-то пошло не так, вы можете вернуться на предыдущий шаг, заного нажать кнопку "Привязать к Яндексу" и повторить процедуру снова. Как показывает практика, с первого раза попасть на страницу предоставления доступа OAuth2 получается только лишь в том случае, если вы УЖЕ залогинены. Внимательно вводите логин и пароль. В случае успешного предоставление доступа к openHAB вы вернетесь к приложению Дом с Алисой, где вас уже будет радостно ждать кнопка "Обновить список устройств". Естественно что устройств с которыми Яндекс Алиса может взаимодействовать у нас еще нету, поэтому нажимать сию кнопку бессмысленно. Однако, пол дела уже сделано, осталось эти самые устройства настроить в соотвествии с требованиями Яндекса, а именно указать типы устройств для существующих девайсов в умном доме openHAB, а также прописать им умения и свойства.

Настройка устройств

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

Рассмотрим пример - добавим лампочку. Так как устройства могут быть, грубо говоря, простыми и составными, разберем оба варианта. Начнем с самого сложного - составное устройство (эквипмент) с органами управления внутри.

Как я уже упоминал, для того, чтобы эквипмент Лампочка появилась в приложении Умный дом с Алисой, достаточно прописать соответсвующему итему тег Yandex и тег, описывающий устройство (для составного устройства) . Нужный итем в данном случае - это итем группы. Жмем на него!

Попадаем в настройки, и выбераем в правом верхнем углу кнопку Edit.

Теперь добавляем нужные теги в поле Add tag и жмем Enter. Не забываем про кнопку Save.

В этом примере нам надо добавить два тега - Yandex и Light. Так алиса поймет что имеет дело с лампочкой. Если мы изначально все делаем по правилам семантической модели openHAB, то выключатель внутри лампочки уже имеет тег Switch и прописывать его не нужно. Если нет - прописываем. в итоге должно получиться что то типа такого:

Теги для составного устройства
Теги для составного устройства

А внутри у лампочки неонка выключатель с тегом Switch и семантическим свойством Light.

Выключатель
Выключатель

Почему я называю лампочку составным устройством, хотя внутри группы только выключатель? Потому что помимо него может присутсвовать любой другой элемент управления, например регулятор яркости с тегом range, или выбор цвета для RGB ламп с тегом color_setting. Полный список умений и свойств можно найти тут и тут.

А может у нас не лампочка, а кофеварка с режимами приготовления кофе, подсветкой и датчиком температуры. Это уже точно составное устройство, не так ли?

Но давайте посмотрим что в итоге получилось после наших магических манипуляций! Заходим в приложение Умный дом с Алисой, находим навык OH Cloud и обновляем список устройств. Ничего себе, оно работает!

Однако слишком много телодвижений для добавления лампочки, не правда ли?

Давайте рассмотрим пример простого устройства - той же лампочки. Уберем тег Yandex с группы (эквипмента) и просто добавим его выключателю.

Удалим из приложения умный дом с Алисой навык OH Cloud и его устройства и добавим заного. Теперь обновим списко устройств, и убедимся что на этот раз в приложение добавится устройство с названием Выключатель который прикидывается лампочкой. Так гораздо проще, не правда ли? Конечно проще. Но так как это устройство простое, то ни диммирования, ни смены цветов тут не будет, это надо учитывать.

Теги для термометра
Теги для термометра

Так выглядят установленные теги для итема типа Number, который в Алисе будет определяться как простое устройство с названием Температура (название можно поменять в приложении Алисы, если вам вдруг не нравится дефолтное значение, которое берется из названия итема).

Конечный результат мы можем наблюдать на изображении слева - виртуальное устройство моего тестового сервера openHAB залетело в Алису как родное, и даже показывает температуру на Марсе в альтернативной вселенной.Таким же образом, используя соотвествующие теги, мы можем добавить датчики открытия двери, датчики влажности, розетки и RGB ленты. Все что нам для этого нужно это внимательно ознакомиться с документацией на данный навык.

Учитывая что навык все еще в активной разработке, автор будет благодарен за любую посильную помощь в развитии данного проекта. Для тех, кто заинтересовался проектом, (или для тех кто ничего не понял, но ему очень интересно), еще раз оставляю ссылку на гитхаб автора и ссылку на чат в телеграмм, где можно задать вопрос автору. Надеюсь что сервер умного дома openHAB обретет такую же популярность в нашей стране, как и HomeAssistant, а количество интеграций для всевозможных устройств, популярных на просторах нашей Родины, будет пополняться.

Благодарю за потраченное на чтение этого поста время, и да пребудет с вами Сила!

Комментарии (1)


  1. svyatoslav12
    18.04.2023 05:39

    Если совместить чат GTP и Алису, то можно получить голосового помощника, который будет уметь отвечать на вопросы, связанные с технологиями и IT-сферой. Пользователи смогут задавать вопросы о программировании, разработке сайтов, настройке компьютеров и других темах, связанных с IT. Кроме того, такой голосовой помощник сможет помочь пользователям в выборе и покупке компьютерной техники и программного обеспечения.