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

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Ср апр 22, 2020 10:38 am

VOVA_iS писал(а):
Ср апр 22, 2020 10:01 am
У меня вопрос. В случае когда говоришь алисе убавь\прибавь\сделай теплее и т.д. она записывает мне в свойство значение на которое она меняет.(-1\+1\-20\+20 и т.п.) И у меня получается яркость -20 и конечно света нет... Как сделать так чтобы у меня прибавлялось или убавлялось от текущего значения???
Можно конкретные примеры на конкретных умениях? Как настроено в модуле, какие команды в Яндексе, что при этом в логе модуля?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
VOVA_iS
Сообщения: 205
Зарегистрирован: Пн фев 04, 2019 10:23 pm
Благодарил (а): 18 раз
Поблагодарили: 30 раз

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

Сообщение VOVA_iS » Ср апр 22, 2020 10:54 am

skysilver писал(а):
Ср апр 22, 2020 10:38 am
VOVA_iS писал(а):
Ср апр 22, 2020 10:01 am
У меня вопрос. В случае когда говоришь алисе убавь\прибавь\сделай теплее и т.д. она записывает мне в свойство значение на которое она меняет.(-1\+1\-20\+20 и т.п.) И у меня получается яркость -20 и конечно света нет... Как сделать так чтобы у меня прибавлялось или убавлялось от текущего значения???
Можно конкретные примеры на конкретных умениях? Как настроено в модуле, какие команды в Яндексе, что при этом в логе модуля?

Команда алисе "Убавь яркость света"
LOG
11:50:59 0.69300900 smarthome.php >>> {"request_id":"F9CFBF03-BE1F-4717-BBE8-6705C66C4C9A","payload":{"devices":[{"id":"4","capabilities":[{"type":"devices.capabilities.range","state":{"instance":"brightness","action_result":{"status":"DONE"}}}]}]}}
11:50:59 0.69272400 Object 'mqttDimmer03', property 'level', set value=-20
11:50:59 0.62798800 Capabilities type 'devices.capabilities.range', instance 'brightness', value=-20
11:50:59 0.62759700 Incoming action request for device ID4
11:50:59 0.62588000 POST /modules/yandexhome/smarthome.php/v1.0/user/devices/action 5.45.235.83 <<< {"payload":{"devices":[{"id":"4","capabilities":[{"type":"devices.capabilities.range","state":{"instance":"brightness","relative":true,"value":-20}}]}]}}
11:50:40 0.20788000 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=100
11:50:40 0.12473500 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=100
11:50:39 0.98885000 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=100
11:50:39 0.68787300 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=100
11:49:39 0.86606700 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=20
11:49:39 0.81020200 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=20
11:49:39 0.65897700 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=20
11:49:39 0.56968300 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=20
11:47:45 0.90971000 POST /modules/yandexhome/smarthome.php/v1.0/user/devices/query 37.9.87.116 <<< {"devices":[{"id":"4"}]}
11:47:45 0.91151400 Incoming query request for device ID4
11:47:45 0.91275300 Object 'mqttDimmer03', property 'tempvalue', get value=0
11:47:45 0.91366100 Object 'mqttDimmer03', property 'level', get value=20
11:47:45 0.91391700 smarthome.php >>> {"request_id":"b098fdb7-94b0-4c60-be53-010a0247eed6","payload":{"devices":[{"id":"4","capabilities":[{"type":"devices.capabilities.on_off","state":{"instance":"on","value":false}},{"type":"devices.capabilities.range","state":{"instance":"brightness","value":20}}],"properties":[]}]}}
11:47:18 0.29483200 PropertySetHandle for object 'mqttDimmer03' and property 'level' and value=20
11:47:17 0.90856600 smarthome.php >>> {"request_id":"A1C61200-59D8-44E3-B9CF-B8555A64F368","payload":{"devices":[{"id":"4","capabilities":[{"type":"devices.capabilities.range","state":{"instance":"brightness","action_result":{"status":"DONE"}}}]}]}}
11:47:17 0.90821600 Object 'mqttDimmer03', property 'level', set value=20
11:47:17 0.83355100 Capabilities type 'devices.capabilities.range', instance 'brightness', value=20
11:47:17 0.83278900 Incoming action request for device ID4
11:47:17 0.83070100 POST /modules/yandexhome/smarthome.php/v1.0/user/devices/action 37.9.87.116 <<< {"payload":{"devices":[{"id":"4","capabilities":[{"type":"devices.capabilities.range","state":{"instance":"brightness","relative":true,"value":20}}]}]}}
11:47:09 0.24276300 smarthome.php >>> {"request_id":"11b55aa7-9183-48a3-aa07-54f15fc6db05","payload":{"devices":[{"id":"4","capabilities":[{"type":"devices.capabilities.on_off","state":{"instance":"on","value":false}},{"type":"devices.capabilities.range","state":{"instance":"brightness","value":20}}],"properties":[]}]}}
11:47:09 0.24239400 Object 'mqttDimmer03', property 'level', get value=20
11:47:09 0.24140900 Object 'mqttDimmer03', property 'tempvalue', get value=0
11:47:09 0.23557400 Incoming query request for device ID4
11:47:09 0.23322300 POST /modules/yandexhome/smarthome.php/v1.0/user/devices/query 37.9.68.144 <<< {"devices":[{"id":"4"}]}
Вложения
Простые устройства.png
Простые устройства.png (134.2 КБ) 3372 просмотра
Умения.png
Умения.png (89.08 КБ) 3372 просмотра
VOVA_iS
Сообщения: 205
Зарегистрирован: Пн фев 04, 2019 10:23 pm
Благодарил (а): 18 раз
Поблагодарили: 30 раз

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

Сообщение VOVA_iS » Чт апр 23, 2020 6:58 pm

Уточнение
Не прибавляет/не убавляет свет и кондиционер. В свойство записывает значение на которое нужно изменить. Свет -20/+20. Климат -1/+1.
Нормально работает с ТВ. Говорю сделай погромче Телевизор - прибавляет три единицы.
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Пт апр 24, 2020 1:22 pm

VOVA_iS писал(а):
Чт апр 23, 2020 6:58 pm
Уточнение
Не прибавляет/не убавляет свет и кондиционер. В свойство записывает значение на которое нужно изменить. Свет -20/+20. Климат -1/+1.
Нормально работает с ТВ. Говорю сделай погромче Телевизор - прибавляет три единицы.
Есть возможность протестировать?

Файл для замены во вложении.
yandexhome.class.php.zip
(7.17 КБ) 118 скачиваний
За это сообщение автора skysilver поблагодарил:
VOVA_iS (Пт апр 24, 2020 3:27 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
VOVA_iS
Сообщения: 205
Зарегистрирован: Пн фев 04, 2019 10:23 pm
Благодарил (а): 18 раз
Поблагодарили: 30 раз

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

Сообщение VOVA_iS » Пт апр 24, 2020 3:20 pm

skysilver писал(а):
Пт апр 24, 2020 1:22 pm
VOVA_iS писал(а):
Чт апр 23, 2020 6:58 pm
Уточнение
Не прибавляет/не убавляет свет и кондиционер. В свойство записывает значение на которое нужно изменить. Свет -20/+20. Климат -1/+1.
Нормально работает с ТВ. Говорю сделай погромче Телевизор - прибавляет три единицы.
Есть возможность протестировать?

Файл для замены во вложении.

yandexhome.class.php.zip
С удовольствием:)))


Работает и свет и климат, ТВ.
Hion
Сообщения: 3
Зарегистрирован: Сб апр 25, 2020 4:44 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Hion » Сб апр 25, 2020 4:54 pm

Приветствую всех .Форумчане,прошу Вашей помощи. У меня несколько задач ,которые я хочу реализовать через этот модуль.
Что у меня есть:
1)Raspberry pi 3(сервер мажордомо)
2)Большой монитор который подключен к малине и показывает вебинтерфейс majordomo
3)Яндекс Станция рядом с этим монитором
4)Телевизор который весит в другой комнате
Что я хочу сделать:
1)Управление вебинтерфейсом через яндекс станцию(например : Алиса,покажи камеры или Алиса, покажи домофон и тд.)
2)Хочу реализовать в вебинтерфейсе majordomo отображение значка алисы и отображения команды которую я проговариваю в реальном времени.Может быть это можно реализовать через HDMI подключение или через сеть?
3)ну и последнее наверное вообще нереально,но все . Я хочу чтобы телевизор (В соседней комнате ) был подключен к Яндекс станции и при команде показать фильм он открывался на телевизоре
Заранее спасибо)
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Сб апр 25, 2020 5:11 pm

Я правильно понимаю, что данный модуль предназначен для управления устройствами через голосовой помощник Алиса, если они уже интегрированы в MD, а если устройство, как кондиционер LGB09TS, который не имеет интеграции в MD (модуль LG SmartThinq его не видит, он работает на API версии 1, а для управления LGB09TS нужен API версии 2), то данным кондиционером MD не сможет управлять?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
VOVA_iS
Сообщения: 205
Зарегистрирован: Пн фев 04, 2019 10:23 pm
Благодарил (а): 18 раз
Поблагодарили: 30 раз

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

Сообщение VOVA_iS » Сб апр 25, 2020 6:47 pm

Divan писал(а):
Сб апр 25, 2020 5:11 pm
Я правильно понимаю, что данный модуль предназначен для управления устройствами через голосовой помощник Алиса, если они уже интегрированы в MD, а если устройство, как кондиционер LGB09TS, который не имеет интеграции в MD (модуль LG SmartThinq его не видит, он работает на API версии 1, а для управления LGB09TS нужен API версии 2), то данным кондиционером MD не сможет управлять?
Да любым устройством которое есть в MD
я например кондиционер Samsung настроил через ESP8266 по IR
Последний раз редактировалось VOVA_iS Сб апр 25, 2020 6:58 pm, всего редактировалось 1 раз.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Сб апр 25, 2020 6:58 pm

VOVA_iS писал(а):
Сб апр 25, 2020 6:47 pm
Divan писал(а):
Сб апр 25, 2020 5:11 pm
Я правильно понимаю, что данный модуль предназначен для управления устройствами через голосовой помощник Алиса, если они уже интегрированы в MD, а если устройство, как кондиционер LGB09TS, который не имеет интеграции в MD (модуль LG SmartThinq его не видит, он работает на API версии 1, а для управления LGB09TS нужен API версии 2), то данным кондиционером MD не сможет управлять?
Да любым устройством.
я например кондиционер Samsung настроил через ESP8266 по IR
Через IR можно, но меня не устраивает это, так как нет обратной связи, а данный кондиционер имеет возможность управления через библиотеку wideq2 и можно получить управление над ним имея обратную связь. Суть в том, что нет готового модуля для работы с ним. На github есть только библиотека wideq API2, а модуль нужно делать самому, чего я не смогу сделать.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

Сообщение Divan » Сб апр 25, 2020 7:45 pm

Я не совсем понимаю как это все делать по этой инструкцией, а именно 4 пункт. Если я установлю на ubuntu Certbot, не буду сразу делать a2enmod ssl proxy proxy_http и запущу команду для автоматической конфигурации апача и установки сертификата $sudo certbot --apache, то я могу получить доступ к своему MD извне по протоколу https, но у меня не получается сделать так, чтобы MajorDoMo работал в локальной сети и не был доступен из внешнего мира. В роутере настройки точно верные, иначе я бы не смог получить доступ извне по протоколу https.

Я делаю так:

1) Запускаю команды последовательно
sudo a2enmod ssl proxy proxy_http
sudo systemctl restart apache2
sudo apachectl -M | grep 'ssl\|proxy'

2) Создал конфигурационный файл webhooks и вставил содержимое, только указал свой доменный адрес

3) Запускаю команды последовательно
sudo mkdir /var/www/webhooks
sudo a2ensite webhooks.conf
sudo systemctl reload apache2

Потом запускаю certbot --apache и получаю эту ошибку
СпойлерПоказать

Код: Выделить всё

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Error while running apache2ctl configtest.
Action 'configtest' failed.
The Apache error log may have more information.

AH00526: Syntax error on line 57 of /etc/apache2/sites-enabled/webhooks.conf:
SSLCertificateFile: file '/etc/apache2/ssl/webhooks/fullchain.pem' does not exist or is empty

The apache plugin is not working; there may be problems with your existing configuration.
The error was: MisconfigurationError("Error while running apache2ctl configtest.\nAction 'configtest' failed.\nThe Apache error log may have more information.\n\nAH00526: Syntax error on line 57 of /etc/apache2/sites-enabled/webhooks.conf:\nSSLCertificateFile: file '/etc/apache2/ssl/webhooks/fullchain.pem' does not exist or is empty\n",)
root@mjdm-style:/home/gladmin#
Пробовал сделать получить ключи отдельно, не ставя на ubuntu certbot и положить сюда /etc/apache2/ssl/webhooks, так же не работает.

Т.к. я не планировал (и не намерен в будущем) выставлять MajorDoMo в Интернет, то для задачи публикации вебхуков решено было поднять отдельный виртуальный сервер Apache, который будет в режиме реверс-прокси перенаправлять запросы от Яндекс на доступный только из локальной сети виртуальный сервер с MajorDoMo. Соответственно SSL-сертификат ставится именно на него. На этом моменте остановлюсь подробнее (см. ниже).
СпойлерПоказать
Вариант публикации вебхуков через реверс-прокси на базе веб-сервера Apache.
Первым делом активируем модули Apache - ssl, proxy и proxy_http.

sudo a2enmod ssl proxy proxy_http

Рестартуем Apache

sudo systemctl restart apache2

и проверяем, что модули загрузились

sudo apachectl -M | grep 'ssl\|proxy'

В ответе должно быть три строки.

proxy_module (shared)
proxy_http_module (shared)
ssl_module (shared)
Создаем конфигурационный файл нового виртуального сервера. Я назвал его webhooks.

sudo nano /etc/apache2/sites-available/webhooks.conf

Содержимое файла (с комментариями).

<IfModule mod_ssl.c>
<VirtualHost *:443>

# e-mail
ServerAdmin skysilver.da@gmail.com

# Доменное имя
ServerName majordomo.keenetic.pro

# Рабочая директория
DocumentRoot /var/www/webhooks

# Разграничение доступа
<Directory *>
Options All -Indexes
Order deny,allow
deny from all
</Directory>

# Определяем, что и куда нужно перенаправить.

# URL авторизации (authorize.php)
<Location /modules/yandexhome/authorize.php>
ProxyPass http://127.0.0.1/modules/yandexhome/authorize.php
ProxyPassReverse http://127.0.0.1/modules/yandexhome/authorize.php
</Location>

# URL для получения и обновления токена (token.php)
<Location /modules/yandexhome/token.php>
ProxyPass http://127.0.0.1/modules/yandexhome/token.php
ProxyPassReverse http://127.0.0.1/modules/yandexhome/token.php
</Location>

# URL обработчика навыка (smarthome.php)
<Location /modules/yandexhome/smarthome.php>
ProxyPass http://127.0.0.1/modules/yandexhome/smarthome.php
ProxyPassReverse http://127.0.0.1/modules/yandexhome/smarthome.php
</Location>

# URL на директорию с картинками для формы авторизации
<Location /modules/yandexhome/img>
ProxyPass http://127.0.0.1/modules/yandexhome/img
ProxyPassReverse http://127.0.0.1/modules/yandexhome/img
</Location>

# URL на директорию со стилями для формы авторизации
<Location /modules/yandexhome/css>
ProxyPass http://127.0.0.1/modules/yandexhome/css
ProxyPassReverse http://127.0.0.1/modules/yandexhome/css
</Location>

# Включаем логи
ErrorLog ${APACHE_LOG_DIR}/error.webhooks.log
CustomLog ${APACHE_LOG_DIR}/access.webhooks.log combined

# Указываем пути к файлам SSL-сертификата
SSLCertificateFile /etc/apache2/ssl/webhooks/fullchain.pem
SSLCertificateKeyFile /etc/apache2/ssl/webhooks/privkey.pem
SSLCertificateChainFile /etc/apache2/ssl/webhooks/chain.pem

# АктивируемSSL
SSLEngine on

</VirtualHost>
</IfModule>
Здесь ключевые моменты это активация SSL и секции Location, в которых определются правила перенаправления входящего трафика.

Сохраняем и закрываем конфигурационный файл, затем создаем пустую рабочую директорию.

sudo mkdir /var/www/webhooks

Активируем новый виртуальный сервер

sudo a2ensite webhooks.conf

и обновляем конфигурацию Apache для применения изменений.

sudo systemctl reload apache2


Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить