Пользовательская интеграция Home Assistant для локальной работы с устройствами на базе Tuya.
Эта настраиваемая интеграция обновляет статус устройства путем отправки обновлений вместо опроса, поэтому обновления статуса выполняются быстро (даже при ручном управлении). Интеграция также поддерживает API Tuya IoT Cloud для получения информации и локальных ключей устройств.
ПРИМЕЧАНИЕ. Настройка учетной записи Cloud API не является обязательной (LocalTuya может работать и без нее), но настоятельно рекомендуется для легкого получения (и автоматического обновления после повторного сопряжения устройства) local_keys. Вызовы Cloud API выполняются только при запуске и при необходимости обновления local_key.
В настоящее время поддерживаются следующие типы устройств Tuya:
Мониторинг энергопотребления (напряжение, ток, ватты и т. д.) поддерживается для совместимых устройств.
На данный момент поддерживаются протоколы Tuya от 3.1 до 3.4.
Разработка этого репозитория началась с кода @NameLessJedi, @mileperhour и @TradeFace. Затем их код был глубоко переработан, чтобы обеспечить правильную интеграцию со средой Home Assistant, добавив поток конфигурации и другие функции. См. раздел «Благодарность» ниже.
Самый простой способ, если вы используете HACS, — установить LocalTuya через HACS.
Для установки вручную скопируйте папку localtuya и все ее содержимое в папку custom_comComponents вашего Home Assistant. Эта папка обычно находится внутри папки /config
. Если вы используете Hass.io, используйте SAMBA, чтобы скопировать папку. Если вы используете Home Assistant Supervised, папка custom_comComponents может находиться по адресу /usr/share/hassio/homeassistant
. Возможно, вам придется создать папку custom_components
, а затем скопировать в нее папку localtuya и все ее содержимое.
ПРИМЕЧАНИЕ. Для использования LocalTuya у вас должен быть ключ и идентификатор вашего устройства Tuya. Самый простой способ — настроить учетную запись Cloud API в интеграции. Если вы решите не делать этого, существует несколько способов получить local_keys в зависимости от вашей среды и имеющихся у вас устройств. Хорошее место для получения информации — https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md или https://pypi.org/project/tinytuya/.
ПРИМЕЧАНИЕ 2. Если вы планируете интегрировать эти устройства в сеть с доступом в Интернет и заблокировать их доступ к Интернету, вам также необходимо заблокировать DNS-запросы (к локальному DNS-серверу, например 192.168.1.1). Если вы заблокируете только исходящий интернет, то устройство будет находиться в состоянии зомби; он откажется/не ответит на любые соединения с локальным ключом. Поэтому сначала необходимо подключить устройства с активным подключением к Интернету, получить локальный ключ каждого устройства и реализовать блокировку.
ПРИМЕЧАНИЕ. Начиная с версии 4.0.0, настройка с использованием файлов YAML больше не поддерживается. Интеграцию можно настроить только с помощью потока конфигурации.
Чтобы начать настройку интеграции, достаточно нажать кнопку «+ДОБАВИТЬ ИНТЕГРАЦИЯ» на странице «Настройки» — «Интеграции» и в раскрывающемся меню выбрать LocalTuya. Появится страница конфигурации Cloud API, на которой будет предложено ввести учетные данные вашей учетной записи Tuya IoT Platform:
Чтобы настроить учетную запись Tuya IoT Platform и настроить в ней проект, обратитесь к инструкциям по официальной интеграции Tuya: https://www.home-assistant.io/integrations/tuya/ Место, где можно найти идентификатор клиента и секретный ключ: описано в этой ссылке (в параграфе «Получить ключ авторизации»), а идентификатор пользователя можно найти на подвкладке «Привязать учетную запись приложения Tuya» в облачном проекте:
Примечание: как указано в приведенной выше ссылке, если у вас уже есть учетная запись и IoT-проект, убедитесь, что он был создан после 25 мая 2021 года (в связи с изменениями, внесенными в облако для Tuya 2.0). В противном случае вам необходимо создать новый проект. На следующем снимке экрана показано, где можно проверить дату создания проекта:
После нажатия кнопки «Отправить» первая настройка будет завершена и интеграция будет добавлена.
Примечание. Вводить учетные данные Cloud API не обязательно: вы можете отметить кнопку «Не настраивать учетную запись Cloud API», и интеграция все равно будет добавлена.
После настройки интеграции устройства можно добавлять и настраивать, нажав кнопку «Настроить» на странице «Интеграции»:
Меню конфигурации следующее:
В этом меню вы можете выбрать «Перенастроить учетную запись Cloud API», чтобы изменить свои учетные данные и настройки Tuya Cloud, если они изменились или интеграция была перенесена из версий v.3.xx.
Затем вы можете продолжить добавление или редактирование устройств Tuya.
Если вы выберете «Добавить или изменить устройство», появится раскрывающееся меню, содержащее список обнаруженных устройств (с использованием автоматического обнаружения, если было выбрано добавление, или списка уже настроенных устройств, если было выбрано редактирование): вы можете выберите один из них или введите все параметры вручную, выбрав опцию «...».
Примечание. Приложение Tuya на вашем устройстве должно быть закрыто, чтобы следующие шаги работали надежно.
Если вы выбрали одну запись, вам нужно только ввести понятное имя устройства и localKey. Эти значения будут автоматически получены, если вы настроили свою учетную запись Cloud API, в противном случае вам придется ввести их вручную.
Установка интервала сканирования не является обязательной, она необходима только в том случае, если значения энергии/мощности по умолчанию обновляются недостаточно часто. Значения менее 10 секунд могут вызвать проблемы со стабильностью.
Настройка «Добавление DPS вручную» не является обязательной, она необходима только в том случае, если устройство не объявляет DPS правильно до тех пор, пока объект не будет должным образом инициализирован. Часто этой настройки можно избежать, сначала подключив/инициализировав устройство с помощью приложения Tuya, затем закрыв приложение и добавив устройство в интеграцию. Примечание. Любой урон в секунду, добавленный с помощью этой опции, во время настройки будет иметь значение -1.
Установка «DPID для отправки в команде RESET» не является обязательной. Он используется, когда устройство не отвечает ни на какие команды Tuya после выключения и включения питания, но может быть подключено (состояние зомби). Этот сценарий чаще всего возникает, когда устройству заблокирован доступ к Интернету. DPids будут различаться на разных устройствах, но обычно используются «18,19,20». Если сюда добавить неправильные записи, то устройство может не выйти из состояния зомби. Обычно сюда вводятся только DPID датчиков.
Как только вы нажмете «Отправить», соединение будет проверено, чтобы убедиться, что все работает.
Затем пришло время добавить объекты: этот шаг будет повторяться несколько раз. Сначала выберите тип объекта в раскрывающемся меню, чтобы настроить его. После того, как вы определили все необходимые сущности, оставьте флажок «Не добавлять больше сущностей» установленным: на этом процедура будет завершена.
Для каждого объекта необходимо выбрать соответствующий DP. Все параметры, требующие выбора DP, будут содержать раскрывающееся меню, показывающее все доступные DP, найденные на устройстве (с их текущим статусом!!), для облегчения идентификации.
Примечание. Если вашему устройству требуется, чтобы LocalTuya отправлял объекту значение инициализации для его работы, это можно настроить (в поддерживаемых объектах) с помощью опции «Пассивный объект». При желании вы можете указать значение инициализации для отправки
Каждый тип объекта имеет разные параметры для настройки. Вот пример сущности «переключатель»:
После настройки объектов процедура завершена. Теперь вы можете связать устройство с областью в Home Assistant.
Если вы обновите LocalTuya с версии 3.xx или более ранней, запись конфигурации будет автоматически перенесена в новую настройку. Все должно работать так же, как и до обновления, за исключением того, что на вкладке «Интеграция» вы увидите только одну интеграцию LocalTuya (с указанием количества настроенных устройств и объектов) вместо нескольких интеграций, сгруппированных в поле LocalTuya. Это произойдет как в том случае, если старая конфигурация была выполнена с использованием файлов YAML, так и с потоком конфигурации. После миграции вы можете просто ввести учетные данные своей учетной записи Tuya IoT, чтобы включить поддержку Cloud API (и воспользоваться преимуществами получения и автоматического обновления local_key): см. меню «Конфигурация».
Если вы настроили LocalTuya с использованием файлов YAML, вы можете удалить все ссылки на него из файлов YAML, поскольку они больше не будут учитываться и могут вызвать путаницу (конечно, необходимо сохранить только часть конфигурации регистратора, см. «Отладка»).
Вы можете получить мониторинг энергии (напряжение, ток) двумя разными способами:
sensor :
- platform : template
sensors :
tuya-sw01_voltage :
value_template : >-
{{ states.switch.sw01.attributes.voltage }}
unit_of_measurement : ' V '
tuya-sw01_current :
value_template : >-
{{ states.switch.sw01.attributes.current }}
unit_of_measurement : ' mA '
tuya-sw01_current_consumption :
value_template : >-
{{ states.switch.sw01.attributes.current_consumption }}
unit_of_measurement : ' W '
Существует множество климатических систем на основе Tuya: как обогреватели, термостаты, так и кондиционеры. Кажется, что все они интегрированы по-разному, и трудно найти общее отображение DP. Ниже приведена таблица сопоставления DP с продуктом, которая в настоящее время работает. Используйте его в качестве руководства для составления собственной карты и, если у вас есть возможность, внесите свой вклад в этот список.
ДП | Моес BHT 002 | Qlima WMS S + SC52 (AB;AF) | Аватто |
---|---|---|---|
1 | Идентификатор: Вкл./Выкл. {правда, ложь} | Идентификатор: Вкл./Выкл. {правда, ложь} | Идентификатор: Вкл./Выкл. {правда, ложь} |
2 | Целевая температура Целое число, масштаб: 0,5. | Целевая температура Целое число, масштаб 1 | Целевая температура Целое число, масштаб 1 |
3 | Текущая температура Целое число, масштаб: 0,5. | Текущая температура Целое число, масштабирование: 1 | Текущая температура Целое число, масштабирование: 1 |
4 | Режим {0, 1} | Режим {"горячий", "ветер", "мокрый", "холодный", "авто"} | ? |
5 | Эко-режим ? | Режим вентилятора {"сильный", "высокий", "средний", "низкий", "авто"} | ? |
15 | Не поддерживается | Поддерживается, неизвестно {правда, ложь} | ? |
19 | Не поддерживается | Единица измерения температуры {"в", "ж"} | ? |
23 | Не поддерживается | Поддерживается, неизвестно Целое число, например. 68 | ? |
24 | Не поддерживается | Поддерживается, неизвестно Целое число, например. 64 | ? |
101 | Не поддерживается | Температура наружного воздуха Целое число. Масштабирование: 1 | ? |
102 | Температура внешнего датчика Целое число, масштаб: 0,5. | Поддерживается, неизвестно Целое число, например. 34 | ? |
104 | Поддерживается, неизвестно {правда, ложь(?)} | Не поддерживается | ? |
Термостат Moes BHT 002 Avatto
Всякий раз, когда вы пишете отчет об ошибке, очень помогает, если вы включаете журналы отладки напрямую (в противном случае мы просто запросим их, и это займет больше времени). Поэтому, пожалуйста, включите такие журналы отладки и включите их в свою проблему:
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
Затем отредактируйте устройство, на котором возникают проблемы, и установите флажок «Включить отладку для этого устройства».
Создайте (хороший и точный) датчик (счетчик) энергии (кВтч) – не только мощности, но на ее основе. Идеи: используйте: https://www.home-assistant.io/integrations/integration/ и https://www.home-assistant.io/integrations/utility_meter/.
Все, что указано в №15.
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant и mileperhour https://github.com/mileperhour/localtuya-homeassistant являются основными источниками вдохновения, и чей код для переключателей практически не изменился.
TradeFace, за то, что он единственный, кто предоставил правильный код для связи с крышкой (в частности, команду 0x0d для статуса вместо 0x0a и связанные с этим потребности, такие как получение двойного ответа): https://github. com/TradeFace/tuya/
sean6541, за рабочий (стандартный) обработчик Python для устройств Tuya.
jasonacox для проекта TinyTuya, откуда я мог импортировать код для связи с устройствами по протоколу 3.4.
Постлунду, за идеи, за кодирование 95% рефакторинга и повышение качества этого репозитория до уровня, который трудно себе представить (по крайней мере, для меня), а также за то, что он научил меня МНОМУ тому, как все работает в Home Assistant.