В системе Tuya очень много разных устройств, которые можно заказать с AliExpress для расширения домашних систем автоматизации, но до некоторых пор у этой системы был один существенный недостаток - они работали через облако, что, кроме ненадёжности соединения с китайскими серверами выливалось ещё и в достаточно долгий отклик. В частности, у меня есть один выключатель и одно двухканальное реле Tuya, и если время отправки команд на них особого раздражения не вызывает, то вот обновление статуса - очень даже. Часто бывало так, что индикатор показывает, будто свет горит, а на самом деле уже несколько минут как нет. Когда нет возможности ногами подойти и проверить - это достаточно неудобно для контроля.
Оказалось, что уже достаточно давно существует очень полезная интеграция, о которой я узнал только недавно: localtuya - подключение устройств Tuya к HomeAssistant локально по сети. Правда, для этого надо проделать не самые простые манипуляции по получению токена. Об этом и расскажу.
Настройка облака
Для подключения устройств Tuya локально нам нужен локальный ключ. Получить его можно в настройках разработчика в облаке Tuya, поэтому первым делом нам нужно получить этот аккаунт.
На гитхабе есть ссылка на оригинальную инструкцию по подключению к облаку, я не исключаю, что спустя некоторое время что-то изменится в процедуре регистрации, так что если что-то не получается - я рекомендую заглянуть туда.
Итак.
Переходим на сайт iot.tuya.com и создаём новую учётку по кнопке SIgn Up:
Заполняем регистрационную форму:
Получаем на почту код и вводим его:
Готово, теперь заходим под своей новой учёткой:
Переходим в левой панели в Cloud -> Projects и выбираем план Free Trial, перекинет на страницу подтверждения оплаты, там ничего вводить не надо, достаточно просто подтвердить. После этого возвращаемся на страницу Cloud -> Projects и обновляем её. Появляется возможность создать новый проект:
Создаём новый проект:
И заходим в него:
Проект создан. Создаём App SDK, переходим в меню App -> SDK Development и нажимаем Create:
Вводим параметры нашего SDK (везде можно вводить что угодно, но Android Package Name должно начинаться с com.):
SDK создано, возвращаемся в Cloud -> Projects, заходим в наш проект и нажимаем Link Apps:
Появляется наше приложение, которое мы создали на странице SDK:
Раздаём разрешения для нашего приложения. В левом меню находим API Groups и заходим, теперь внимательно проставляем галочки (во всплывающих окнах можно писать что угодно):
- Authorization Management
 - User Management
 - Device Management
 - Network Management
 - Device Control
 - Home Management
 
На второй странице:
- Data Service
 - Device Statistics
 
И на третьей:
- Device User Mangement
 
Теперь остаётся только подтянуть все устройства из мобильного приложения. Переходим в Cloud -> Link Devices, на вкладку Link devices by App Account и нажимаем кнопку App App Account. Откроется окно с QR-кодом:
В мобильном приложении (я пользуюсь Smart Life) переходим в Профиль, наверху иконка сканирований QR-кода - сканируем код и готово:
Получение ключей
Теперь нам надо получить ключ для привязки нашего проекта к Home Assistant. Для этого надо установить утилиты через npm (при условии, что Home Assistant установлен в ubuntu через npm, это не должно вызвать затруднений):
npm i @tuyapi/cli -g
Или, если недостаточно прав:
sudo npm i @tuyapi/cli -g
И вводим параметры от нашего облака:
The API key from tuya.com - это параметр Access ID/Client ID в нашем проекте
The API secret from tuya.com - это параметр Access Secret/Client Secret в нашем проекте
Provide a 'virtual ID' of a device currently registered in the app - виртуальный идентификатор устройства в приложении, чтобы его получить, заходим в приложение, выбираем любое из подключенных устройств, нажимаем значок с карандашом в верхнем правом углу и выбираем пункт "Информация об устройстве", будут показаны параметры устройства, в том числе IP-адрес, MAC-адрес и виртуальный ID, который нам и нужен.
Если все параметры были введены верно, выведется полный список устройств, зарегистрированных в приложении:
Добавление устройств через гуи
После установки интеграции в HACS самый простой способ добавления устройств Tuya в Home Assistant - через визуальный интерфейс. Но есть неочевидные нюансы.
Я добавил два устройства: выключатель в детской и двухканальное реле на туалет и ванную.
Чтобы добавить новое устройство - идём в Настройки - Интеграции и нажимаем "Добавить новую интеграцию":
Выбираем LocalTuya integration и, если раньше всё было сделано правильно, нам сразу предложат выбрать из найденных устройств:
Например, подключаем выключатель TuyaPlayroom. Смотрим в параметры, которые мы получили из консоли и выбираем устройство, которое начинается на 1767. Вводим название и ключ, который соответствует этому устройству:
Поскольку наше устройство - это выключатель, выбираем соответсвующий тип:
Вот тут начинаются неочевидности:
ID из доступных значений 1 и 9 выбираем 1. При чём там value: False и value: 0 - непонятно. Friendly name пишем такой, какой хотим. Остальные параметры значения не имеют, их можно не заполнять.
После нажатия кнопки "Подтвердить" вываливается следующее окошко:
Казалось бы, зачем ещё раз выбирать тип устройства. Опытным путём установлено, что тут предлагается сразу добавить следующее устройство, к текущему это отношения уже не имеет. Если оставить установленную галочку, то добавление первого устройства будет завершено, остаётся только определить помещение для него:
Если же галочку в предыдущем окне не снимать, можно продолжать добавлять следующие устройства, при этом надо учитывать, что двух/трехканальные реле лучше добавлять сразу, при этом ID устройства у объектов одного устройства должны быть разные (интеграция всё равно не даст добавить два объекта с одним ID внутри одного устройства, будет высвечивать ошибку).
Добавление устройств в коде yaml для этой интеграции я даже не рассматривал. Если смотреть документацию, там всё достаточно понятно, но зачем, если всё это можно сделать в интерфейсе?
Заключение
Что я получил, подключив свои устройства Tuya через эту интеграцию? Я получил то, чего мне не хватало - мгновенное (ну почти) отображение статуса устройств. Теперь, когда свет в детской выключается по датчику движения, я вижу, что он действительно выключился.
Плюс я получил независимость от облачного сервиса Tuya, так что если начнутся какие-то проблемы с великим Китайским файрволом, то мои устройства продолжат работать.
Мне кажется, описанные выше манипуляции стоят того.
Ну а на этом всё, шер, лайк, подписка, всем привет.