Страница 1 из 79

[Модуль] Yandex Home (yandexhome)

Добавлено: Вс июн 09, 2019 2:26 pm
skysilver
Модуль поддержки личных (приватных) навыков для платформы умного дома Яндекс.

Платформа умного дома Яндекс имеет открытое API и позволяет интегрировать Яндекс Алису с оборудованием сторонних производителей и системами умного дома. На старте имеется поддержка Philips Hue, Redmond, SmartThings, Xiaomi, Rubetek. Модуль Yandex Home, в свою очередь, реализует приватный API-провайдер (включая авторизацию по протоколу OAuth 2.0) и позволяет интегрировать с платформой Яндекс уже имеющиеся в MajorDoMo устройства.

Особенностью платформы умного дома Яндекс является новая специальная категория навыков Алисы, которая предназначена для голосового управления домашними устройствами и не требует предварительного запуска навыка по его имени. Теперь устройствами можно управлять прямыми командами вида "Алиса, включи свет в гостиной", "Алиса, сделай в спальне похолоднее" и т. п. При этом следует понимать, что в отличие от классических навыков, Яндекс не передает в MajorDoMo распознанный текст команды пользователя, а передается непосредственно управляющая команда для устройства, которая интерпретируется модулем и записывается в привязанное свойство объекта.

Модуль реализует классическую концепцию MajorDoMo для взаимодействия с пользователем через метрики и привязанные к ним свойства объекта. К метрикам привязываются уже существующие объекты и свойства, через которые реализовано управление устройствами.

Поддерживаемые умения:
  • Включить/выключить (on);
  • Громкость (volume);
  • ТВ-канал (channel);
  • Температура (temperature);
  • Температура цвета (temperature_k);
  • Температурный режим (thermostat);
  • Режим без звука (mute);
  • Скорость вентиляции (fan_speed);
  • Цвет в формате RGB (rgb);
  • Яркость (brightness).
Требования:
  1. Белый публичный IP-адрес (статический или динамический).
  2. DNS-имя, привязанное к публичному IP-адресу.
  3. Валидный SSL-сертификат на вышеуказанное DNS-имя.
  4. Возможность опубликовать обработчик навыка (endpoint, webhook) для доступа к нему из сети Интернет без запроса логина и пароля.
Кроме того, для работы с базой данных требуется активное PHP-расширение pdo_mysql (подробнее здесь).

Важно! Если в MajorDoMo используется базовая авторизация, то все вебхуки необходимо добавить в исключения авторизации. Подробнее см. здесь.

Модуль на Github - https://github.com/skysilver-lab/majordomo-yandexhome
Модуль в Connect - https://connect.smartliving.ru/tasks/482.html
СкриншотыПоказать
module_yandexhome.png
module_yandexhome.png (28.62 КБ) 21205 просмотров
module_yandexhome_panels.png
module_yandexhome_panels.png (65.4 КБ) 21205 просмотров
module_yandexhome_settings.png
module_yandexhome_settings.png (28.59 КБ) 21205 просмотров
module_yandexhome_new_dev.png
module_yandexhome_new_dev.png (18.23 КБ) 21205 просмотров
module_yandexhome_edit_dev.png
module_yandexhome_edit_dev.png (38.12 КБ) 21205 просмотров
Поддержать разработку, развитие модуля и добавление новых умений: С уважением, skysilver.

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Вс июн 09, 2019 2:26 pm
skysilver

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Вс июн 09, 2019 2:26 pm
skysilver
Как задавать вопрос

В случае обнаружении багов (проблем) в работе модуля включите ведение логов в настройках модуля, воспроизведите проблему повторно и приложите полученные логи с детальным пошаговым описанием ситуации (включая скриншоты) к своему сообщению на форуме. Также укажите сведения о сервере MajorDoMo и способе публикации вебхуков. Вопросы без подробной исходной информации в большинстве случаев будут игнорироваться.

Известные проблемы и ограничения
  • Не синхронизируется список устройств в приложении Яндекс Quasar.
    РешениеПоказать
    1. Вебхуки требуют ввода логина и пароля при доступе к ним не из домашней сети. Необходимо проверить это, открыв адреса вебхуков в браузере через мобильный интернет, либо через прокси и т.п. Если логин/пароль запрашивается, то нужно добавить вебхуки в исключения авторизации MajorDoMo. Подробнее см. здесь.
    2. Невалидный SSL-сертификат (истек срок действия, выпущен не на тот домен, либо вообще отсутствует). Необходимо сгенерировать и установить корректный SSL-сертификат и проверить доступность вебхуков из вне по протоколу HTTPS.
    3. Истек срок действия токена доступа. Необходимо отвязать аккаунт вашего приватного навыка в приложении Яндекс и затем повторно объединить аккаунты.
    4. Некорректная настройка веб-сервера Nginx (актуально для образа Raspberry Pi от 9.07.19). Необходимо в файл /etc/nginx/fastcgi_params добавить строку fastcgi_param PATH_INFO $fastcgi_path_info; и перезапустить Nginx.
  • Не удаляются устройства из приложения Яндекс Quasar.
    РешениеПоказать
    В настройках приложения Яндекс Quasar удалить комнату(ы), к которым привязаны устройства. После этого такие устройства перейдут в состояние "требуется настройка", и их можно будет удалить.

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Вс июн 09, 2019 3:15 pm
skysilver
Всем причастным спасибо за донаты. Публикация модуля запланирована на следующую неделю.

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Пн июн 10, 2019 1:13 pm
Aven
А зачем нужен PDO ?

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Пн июн 10, 2019 1:17 pm
skysilver
Aven писал(а):
Пн июн 10, 2019 1:13 pm
А зачем нужен PDO ?
Не стал с нуля писать поддержку OAuth2. Использовал готовую библиотеку, а в ней хранилище токенов в MySQL через PDO реализовано.

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Пн июн 10, 2019 1:45 pm
dmw
skysilver писал(а):
Пн июн 10, 2019 1:17 pm
Использовал готовую библиотеку, а в ней хранилище токенов в MySQL через PDO реализовано.
Эту брали? https://github.com/bshaffer/oauth2-server-php

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Пн июн 10, 2019 1:48 pm
skysilver
dmw писал(а):
Пн июн 10, 2019 1:45 pm
Эту брали? https://github.com/bshaffer/oauth2-server-php
Да, она самая.

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Пн июн 10, 2019 10:43 pm
skysilver
Изображение

MajorDoMo и Яндекс Алиса. Модуль Yandex Home.

Часть 5. О модуле Yandex Home.

Читать статью в блоге

Re: [Модуль] Yandex Home (yandexhome)

Добавлено: Вт июн 11, 2019 4:06 pm
Aven
skysilver писал(а):
Пн июн 10, 2019 1:17 pm
Aven писал(а):
Пн июн 10, 2019 1:13 pm
А зачем нужен PDO ?
Не стал с нуля писать поддержку OAuth2. Использовал готовую библиотеку, а в ней хранилище токенов в MySQL через PDO реализовано.
Понятно, я велосипед написал, хотя там малая часть возможностей OAuth2 нужна... ))