Поиск по базе знаний

Отвал авторизации навыка Tuya Smart / Smart Life в Доме с Алисой

Привет, коллега! Проблема «отвала» интеграции Tuya Smart / Smart Life, когда устройства перестают реагировать на команды из Яндекса (а рядом с названием навыка горит восклицательный знак), — одна из самых частых при построении облачной системы автоматизации. При этом в оригинальном приложении Smart Life на телефоне устройства продолжают исправно работать.

Давай разберем техническую изнанку протокола авторизации OAuth 2.0, логику обновления сессионных токенов и частые проблемы с лимитами бесплатного периода Tuya Developer Platform, которые приводят к прекращению синхронизации.


Механика OAuth 2.0 авторизации и жизненный цикл токенов

Связывание аккаунта Яндекса и Tuya построено на стандартном протоколе OAuth 2.0 (Authorization Code Grant). В процессе привязки происходят следующие транзакции:

  1. Пользователь вводит логин и пароль от Smart Life на сервере авторизации Tuya.
  2. Сервер Tuya генерирует и передает Яндексу пару криптографических ключей:
    • access_token: Используется Яндексом для подписи каждого API-запроса к Tuya (например, включить лампу). Время жизни токена ограничено: $T_{\text{access}} = 7200\text{ секунд}$ (2 часа).
    • refresh_token: Используется Яндексом для автоматического запроса нового access_token без участия пользователя, когда старый истекает. Время жизни: $T_{\text{refresh}} = 2592000\text{ секунд}$ (30 дней).
[ Сервера Яндекса ] --- (Запрос с access_token) ---> [ API Tuya Cloud ] ---> [ Устройство ]
       |                                                    |
       |-- (access_token истек? Отправка refresh_token)---->|
       |                                                    |
       |<-- (Ответ: Новый access_token + refresh_token) ----|

Почему эта схема ломается?

  • Истечение срока refresh-токена: Если Станция Яндекса долгое время была обесточена или не отправляла запросов в облако Tuya более 30 дней, срок действия refresh_token истекает. Яндекс больше не может обновить авторизацию автоматически, и сессия аннулируется.
  • Смена пароля аккаунта: При изменении пароля в приложении Smart Life или отзыве активных сессий (например, при входе на новом телефоне) сервер авторизации Tuya мгновенно инвалидирует все выданные ранее access_token и refresh_token.
  • Лимиты сессий: Платформа Tuya имеет ограничение на количество одновременных активных токенов для одного пользователя. При частом перепривязывании аккаунта в различных экосистемах (Яндекс, Google Home, Home Assistant) старые токены принудительно отзываются сервером Tuya.

Истечение подписки IoT Core на Tuya Developer Platform

Если ты настраиваешь интеграцию через собственное кастомное приложение разработчика на Tuya IoT Platform (например, для локального контроля или интеграции с Home Assistant), то сталкиваешься с ограничением срока действия услуг.

При создании аккаунта разработчика тебе бесплатно подключают сервис IoT Core (главный движок обмена сообщениями API).

  • Срок действия бесплатной подписки составляет 6 месяцев (иногда продлевается до 1 года).
  • По истечении этого срока все запросы к API начинают возвращать ошибку: code: 1106, msg: permission deny или code: 1010, msg: token expired.
  • При этом автоматическое обновление токенов Яндекса полностью блокируется, вызывая перманентный отвал навыка.

Для исправления этой проблемы необходимо зайти в консоль Tuya Cloud, перейти в раздел Cloud ➡️ Service API ➡️ Go to Link и вручную отправить заявку на бесплатное продление подписки IoT Core (обычно одобряется автоматически в течение нескольких часов).


Диагностика и устранение неполадок пошагово

Шаг 1. Перепривязка с очисткой кэша

  1. Открой приложение «Дом с Алисой» ➡️ зайди в настройки профиля ➡️ выбери «Устройства другого производителя».
  2. Найди навык Smart Life (или Tuya Smart) и нажми кнопку «Обновить привязку аккаунта».
  3. Если это не помогло, полностью удали навык (кнопка «Отвязать от Яндекса»). Внимание: это удалит устройства из комнат и сценариев Яндекса, но очистит битые токены в базе данных.
  4. Зайди в веб-браузер на телефоне и очисти файлы cookie для сайтов tuya.com и smartlife.com.cn, так как браузер может автоматически подставлять старую некорректную сессию.
  5. Заново привяжи аккаунт Smart Life в Яндексе.

Шаг 2. Разделение данных и выбор региона

При перепривязке аккаунта обрати внимание на правильность ввода данных:

  • Вводи номер телефона в международном формате (для РФ: +7, без первой восьмерки).
  • Тщательно проверь пароль. Слишком частые попытки ввода неверного пароля блокируют IP-адрес на сервере авторизации Tuya на 24 часа.
  • Детальный разбор проблем с региональной маршрутизацией запросов описан в статье о проблемах интеграции Tuya Smart Life.

Снижение зависимости от облака

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

Рекомендуется:

  1. Использовать Zigbee-устройства Tuya с привязкой напрямую к Яндекс Станции для работы в режиме локальных сценариев.
  2. Или развернуть локальный сервер Home Assistant и пробросить его в Яндекс по инструкции интеграции Home Assistant, что полностью исключит зависимость от стабильности серверов Tuya.
  3. Ограничивать пиковые индуктивные нагрузки на розетки и реле Tuya, предотвращая аппаратные сбои приборов, описанные в статье об отключениях розеток под нагрузкой.
  4. При возникновении ошибок «Устройство не отвечает», не связанных с токеном, воспользуйся универсальным руководством по траблшутингу связи.

Инструкция по устранению

1

Проверка авторизации в приложении Яндекса

Откройте приложение 'Дом с Алисой'. Перейдите в настройки интеграций и найдите навык Tuya Smart (или Smart Life). Если рядом горит красный значок предупреждения, значит сессия авторизации истекла и токен недействителен.

Инструкция: Проверка авторизации в приложении Яндекса
2

Обновление привязки аккаунта

Нажмите кнопку 'Обновить' или 'Перепривязать аккаунт'. Вас перенаправит на страницу авторизации Tuya. Введите ваши учетные данные (почту/телефон и пароль). Важно выбрать правильный телефонный код страны (+7 для РФ).

3

Проверка региона в приложении Tuya

Если перепривязка выдает ошибку, откройте оригинальное приложение Tuya Smart на телефоне. Зайдите в профиль и проверьте регион аккаунта. Если регионы в Tuya и аккаунте Яндекса не совпадают (например, Китай и Россия), интеграция будет отваливаться.

4

Очистка кэша и перезапуск навыка

Если устройства по-прежнему не реагируют, удалите навык Tuya из приложения Яндекса, перезагрузите телефон, а затем добавьте навык заново. Все устройства появятся в списке автоматически, но их комнаты придется настроить заново.