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

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

Модератор: immortal

ZyaK
Сообщения: 421
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск

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

Сообщение ZyaK »

рассказываю как делал:
исходные - роутер кинетик гига 2, серый ip, доменное имя через облако keendns
система на распбери пи2 образ v4_44_int с NGINX
Установка модуля и настройка по инструкции автора с пропиской ключей и прочим.
дальше топаем в в файл конфига /etc/nginx/fastcgi_params
в нем уже есть

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

fastcgi_param   PATH_INFO               $fastcgi_path_info;
но на всякий случай проверяем.
топаем в /etc/nginx/sites-available/default
в нем изменяем

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

include snippets/fastcgi-php.conf;
на

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

fastcgi_split_path_info       ^(.+\.php)(.*)$;
set $tmp_var                $fastcgi_path_info;
include snippets/fastcgi-php.conf;
fastcgi_param PATH_INFO       $tmp_var;
и раскоментируем 2 строчки на работу с портами 443. в принципе то по настройке системы всё.

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

server {
        listen 80 default_server;
        listen [::]:80 default_server;


        # SSL конфигурация:
         listen 443 ssl default_server;
         listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html index.php;

        server_name _;

location /api {
  rewrite ^(.*)$ /api.php;
}

location ~ \.html {
  if (!-e $request_filename){
    rewrite ^(.*)$ /nf.php;
  }
}

        # pass PHP scripts to FastCGI server
        #
        location ~ [^/]\.php(/|$) {
                fastcgi_split_path_info       ^(.+\.php)(.*)$;
                set $tmp_var                $fastcgi_path_info;
                include snippets/fastcgi-php.conf;
                fastcgi_param PATH_INFO       $tmp_var;
                #include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
                fastcgi_read_timeout 300;
        }
далее идем в морду кинетика
настраиваем доступ. у меня доступ к самой системе, к роутеру и теперь к 443-му порту
доменное имя_2.JPG
доменное имя_2.JPG (139.47 КБ) 10628 просмотров
доменное имя.JPG
доменное имя.JPG (80.28 КБ) 10628 просмотров
в настройках яндекс диалогов прописан просто путь к системе, возможно даже и не надо прописывать еще одно доменное имя в кинднс с портом 8443. отключать не пробовал.
в общем путь прописан без указания всяких портов и работает.
яндекс диалоги.JPG
яндекс диалоги.JPG (45.47 КБ) 10628 просмотров
яндекс диалоги 2.JPG
яндекс диалоги 2.JPG (71.47 КБ) 10628 просмотров
ну и само собой проверка доступа к файлам
token.php.jpg
token.php.jpg (37.15 КБ) 10628 просмотров
smarthome.php.jpg
smarthome.php.jpg (18.04 КБ) 10628 просмотров
никакие сертификаты подписывать серботом и прочим не надо.
UPD
да, проверил. оключил доменное имя к 8443 порту, прекрасно работает и без него.
PI2 + MQTT + 5 ESP8266 + Atmega16
Аватара пользователя
mab
Сообщения: 48
Зарегистрирован: Сб янв 19, 2019 1:26 am

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

Сообщение mab »

по фразе "включи телевизор" всё отрабатывает
по фразе "выключи телевизор", говорит "случилось что-то непонятное", вот лог из яндекс диалогов:

2025-06-28T14:22:57+03:00: failed to unmarshal provider action response

2025-06-28T14:22:58+03:00: Handling action result of device {id:cc2d0d60-0c3d-4c25-9d04-72a29941bf69, external_id:5, provider:cb27b063-5e8e-45fe-a86a-b874adfdd35a, user:141807763}

2025-06-28T14:22:58+03:00: Capability (type:devices.capabilities.on_off, instance: on) action status is ERROR, code: INTERNAL_ERROR, message: failed to unmarshal provider action response: provider bad response error: invalid character '<' looking for beginning of value

получается, что:
Система не смогла распарсить (unmarshal) ответ от провайдера устройства, потому что он пришёл в неожиданном формате.
invalid character '<' looking for beginning of value
Это ключевая деталь: ответ начинается с символа <, что характерно для HTML/XML, в то время как система ожидала JSON (который начинается с { или [).

что не так?
V.A.S.t
Сообщения: 352
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск

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

Сообщение V.A.S.t »

Надо смотреть в сторону того, что отдает MDM при отключении телевизора. Если при этом действии есть какие-то ворнинги от PHP, то наблюдается такое поведение.
ZyaK
Сообщения: 421
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск

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

Сообщение ZyaK »

что то у яндекса поломалось, вчера не отправлял команды, решил настроить заново...
теперь не получается в приложении яндекс добавить mjdm. в списке устройст есть, при нажатии на добавление - просто белый экран
PI2 + MQTT + 5 ESP8266 + Atmega16
ZyaK
Сообщения: 421
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск

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

Сообщение ZyaK »

для того, что бы в диалогах опубликовался навык приходится писать вместо
Endpoint URL https://majordomo.keenetic.pro:8443/mod ... rthome.php

Endpoint URL https://majordomo.keenetic.pro:8443/mod ... thome.php/

может быть связано с этим, что на этапе связки аккаунтов в яндексе просто белый экран?

UPD
проблема в доступе от кинетика, вместо keenetic.pro перешел на netcraze.link
PI2 + MQTT + 5 ESP8266 + Atmega16
DSLTIP
Сообщения: 12
Зарегистрирован: Чт авг 22, 2019 11:10 am

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

Сообщение DSLTIP »

Господа, что-то не могу умный дом свой к Алисе привязать. Началось с того, что сертификат истёк. Обновил сертификат - не заработало.
Заново опубликовал навык. Пытаюсь добавить устройства в Алису, ввожу пользователь/пароль и вылетает ошибка, что-то не так с авторизацией OAuth2, вот логи запросов к серверу моему:

2026-07-19 15:08:13 POST /modules/yandexhome/token.php 5.45.207.41 <<< {"code":"d98197dabe9772b634a55d92f2f5ec4573aa58c2","client_secret":"18aef9d1-bb4e-48df-bf18-abde4fdb971f","grant_type":"authorization_code","client_id":"7d90de35773d-4672b34d","redirect_uri":"https:\/\/social.yandex.net\/broker\/redirect"}
2026-07-19 15:08:13 token.php >>> HTTP/1.1 200 OK
Cache-Control: no-store
Content-Type: application/json
Pragma: no-cache

{"access_token":"a1ec584005dd8d13ec628f4c0a0fb21546615812","expires_in":1209600,"token_type":"Bearer","scope":null,"refresh_token":"535e5cfd60b716f2d1c6488f1a35042f489a4bd3"}

2026-07-19 15:08:13 POST /modules/yandexhome/token.php 5.45.207.41 <<< {"code":"d98197dabe9772b634a55d92f2f5ec4573aa58c2","client_secret":"18aef9d1-bb4e-48df-bf18-abde4fdb971f","grant_type":"authorization_code","client_id":"7d90de35773d-4672b34d","redirect_uri":"https:\/\/social.yandex.net\/broker\/redirect"}
2026-07-19 15:08:13 token.php >>> HTTP/1.1 400 Bad Request
Cache-Control: no-store
Content-Type: application/json

{"error":"invalid_grant","error_description":"Authorization code doesn't exist or is invalid for the client"}

Прилетают два одинаковых POST запроса, но на втором почему-то ошибка(
Как у вас, всё работает?
yray
Сообщения: 114
Зарегистрирован: Чт дек 14, 2017 12:51 am

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

Сообщение yray »

Работает, уже пару лет вообще без проблем, как способ с кинетиком придумали, соответственно сертификат не обновлял и привязывать заново не привязывал.
DSLTIP
Сообщения: 12
Зарегистрирован: Чт авг 22, 2019 11:10 am

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

Сообщение DSLTIP »

Так у меня тоже всё работало, 7 лет,а сейчас авторизация не проходит. Я спрашивал, работает ли именно авторизация
yray
Сообщения: 114
Зарегистрирован: Чт дек 14, 2017 12:51 am

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

Сообщение yray »

вы спрашивали: "Как у вас, всё работает?" - У нас всё работает. А оказывается вы где-то между строк спрашивали "работает ли именно авторизация". Извините не разглядел, но ок, удачи вам
DSLTIP
Сообщения: 12
Зарегистрирован: Чт авг 22, 2019 11:10 am

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

Сообщение DSLTIP »

До сих пор пытаюсь победить(
А можно как-то выйти на разработчика этого модуля? Похоже объединение аккаунтов перестало работать.
После ввода логина/пароля на форме, яндекс выдаёт ошибку "Получения данных от сервиса".
Господа, кто-нибудь объединял аккаунты(добавлял модуль в умный дом яндекс) в последние 2-3 дня?
Уже всё переустановил, в логах, всё те же два запроса на токен и дальше дело не идёт...
Ответить