Часть 1. Об архитектуре платформы умного дома Яндекс и вариантах взаимодействия с MajorDoMo.
Как известно, Яндекс запустил свою платформу умного дома с поддержкой голосового ассистента Алиса.
Платформа имеет открытое API и позволяет интегрировать Алису с оборудованием сторонних производителей и системами умного дома. На старте имеется поддержка Philips Hue, Redmond, SmartThings, Xiaomi, Rubetek.
Особенностью платформы является новая специальная категория навыков Алисы, которая предназначена для голосового управления домашними устройствами и не требует предварительного запуска навыка по его имени. Теперь устройствами можно управлять прямыми командами вида "Алиса, включи свет в гостиной", "Алиса, сделай в спальне похолоднее" и т. п.
Управление устройствами доступно как голосовыми командами, так и через веб-приложение по ссылке. Нативного приложения управления умным домом для iOS и Android у Яндекса нет.
Согласно официальной документации архитектура платформы умного дома Яндекс выглядит так.
Применительно к интеграции с MajorDoMo эту схему можно представить в таком виде.
Как видно из схемы, процедура взаимодействия пользователя с приложением и конечными устройствами умного дома выглядит следующим образом.
Пользователь открывает приложение Яндекс. Приложение отправляет запрос на получение информации об устройствах пользователя в облачную платформу Яндекс. Платформа направляет этот запрос к MajorDoMo. Далее приложение отправляет запрос на получение информации о статусах устройств пользователя. Платформа направляет этот запрос к MajorDoMo. В результате у пользователя на экране отображается список его устройств с актуальными статусами. Отправить актуальный статус устройства по факту его смены в облако Яндекс по инициативе MajorDoMo нельзя - это ограничение текущей версии API платформы.
Если пользователь хочет выключить лампочку, он выбирает ее в списке устройств и выключает с помощью виджета, либо произносит голосовую команду "Алиса, выключи лампочку". В это время приложение отправляет запрос на изменение статуса у устройства в облачую платформу. И от туда направляется запрос в MajorDoMo, который выключает лампочку.
Чтобы запустить навык умного дома и связать его с Яндекс, в общем случае требуется:
В частных случаях, к примеру при размещении приватного навыка на своем домашнем сервере, возникают дополнительные требования:
По аналогии с Google Home интеграция MajorDoMo и платформы умного дома Яндекс возможна несколькими способами:
У каждого способа свои преимущества и недостатки. Какой выбрать - каждый решает сам. Лично мне интересен вариант приватного навыка, несмотря на его трудоемкость и требования, предъявляемые к запуску.
Мой проект по разработке модуля интеграции MajorDoMo и платформы умного дома Яндекс находится здесь.
Ссылки на официальные ресурсы: