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

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

Модератор: immortal

ZyaK
Сообщения: 417
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 71 раз

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

Сообщение ZyaK » Пт май 02, 2025 11:23 am

рассказываю как делал:
исходные - роутер кинетик гига 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 КБ) 1672 просмотра
доменное имя.JPG
доменное имя.JPG (80.28 КБ) 1672 просмотра
в настройках яндекс диалогов прописан просто путь к системе, возможно даже и не надо прописывать еще одно доменное имя в кинднс с портом 8443. отключать не пробовал.
в общем путь прописан без указания всяких портов и работает.
яндекс диалоги.JPG
яндекс диалоги.JPG (45.47 КБ) 1672 просмотра
яндекс диалоги 2.JPG
яндекс диалоги 2.JPG (71.47 КБ) 1672 просмотра
ну и само собой проверка доступа к файлам
token.php.jpg
token.php.jpg (37.15 КБ) 1672 просмотра
smarthome.php.jpg
smarthome.php.jpg (18.04 КБ) 1672 просмотра
никакие сертификаты подписывать серботом и прочим не надо.
UPD
да, проверил. оключил доменное имя к 8443 порту, прекрасно работает и без него.
PI2 + MQTT + 5 ESP8266 + Atmega16
Аватара пользователя
mab
Сообщения: 47
Зарегистрирован: Сб янв 19, 2019 1:26 am
Благодарил (а): 5 раз
Поблагодарили: 9 раз

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

Сообщение mab » Сб июн 28, 2025 2:31 pm

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

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
Сообщения: 302
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск
Благодарил (а): 17 раз
Поблагодарили: 71 раз

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

Сообщение V.A.S.t » Вс июн 29, 2025 6:29 am

Надо смотреть в сторону того, что отдает MDM при отключении телевизора. Если при этом действии есть какие-то ворнинги от PHP, то наблюдается такое поведение.
Ответить