Светодиодная лента BlitzWolf BW-LT11 и опыт интеграции ее в Home Assistant через Tuya

Некоторое время назад я стал экспериментировать с системой Home Assistant. С помощью этой штуки можно собирать то что обычно называют термином "Умный дом". Свет автоматически включается-выключается, робот пылесос сам начинает убираться когда дома никого нет, всякое такое.

У меня уже был некий набор устройств, которые можно присоединить к Home Assistant и я постепенно все их подключал.

Первое устройство которое я специально купил именно с целью чтобы его можно было подключить к Home Assistant — это была светодиодная лента BlitzWolf BW-LT11 (покупал на AliExpress).

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

У меня была задача: у меня под потолком рядом со шторами выведено электричество, я хотел подключить туда какой-нибудь источник света, которым можно было бы управлять через Home Assistant.

Поэтому я особо не разбираясь взял и заказал первую попавшуюся светодиодную ленту про которую нашел текст в интернете что ее можно завести в Home Assistant.

Сейчас я уже знаю что светодиодные ленты бывают двух типов:

Вот лента BlitzWolf BW-LT11 это обычная лента. Она может светить либо белым цветом (и можно управлять его яркостью), либо можно выбрать какой-то другой цвет и вся лента будет этого цвета/яркости.

Вот лента вблизи. Светодиод в белом корпусе, который состоит из нескольких фрагментов — это штука которая светит разными цветами. Рядом с этим светодиодом находится светодиод который может светить только белым цветом. И вот вся лента состоит из пар таких светодиодов. Светить может либо один, либо другой.

Вот несколько фотографий включенной ленты:

Есть два приложения для телефона с помощью которого можно управлять этой лентой. Это либо официальное приложение BlitzWolf, либо приложение TuaySmart.

Я не до конца понимаю в каких отношениях находятся компании BlitzWolf и Tuya. У меня есть гипотеза что Tuya — это компания которая пишет софт для всякого рода умных устройств. Т.е. BlitzWolf свое приложение и серверную часть писал не сам, а купил у Tuya возможность использовать их софт под своим брендом. Поэтому одно и то же железо (в моем случае светодиодная лента) работает и приложении BlitzWolf и в приложении Tuya.

Но если подключить устройство в приложение Tuya, то появляется возможность очень просто управлять этим устройством через Home Assistant. В конфигурационном файле Home Assistant нужно указать свой логин и пароль к Tuya, Home Assistant выясняет какие устройства есть на этом логине и они станут доступны в HA.

Тут есть огромнейший плюс что это элементарно настраивается. Что может быть проще: поставил приложение, зарегистрировался в нем, подключил в него устройство, указал логин-пароль в Home Assistant и все — устройством можно управлять через Home Assistant.

Но тут есть и огромнейший (прямо очень большой) минус. Можно управлять светодиодной лентой только когда работает интернет. У провайдера сбой, дома интернет не работает, лента не может получить сигнал от сервера и все — ты не можешь включить ленту, включить ее тоже не получится, поменять яркость или цвет — тоже не будет работать.

И тут есть еще один минус. Сходу его не очень видно, но он есть. Лена управляется через сервер, который ты никак не контролируешь. Это сервер Tuya. Например, эта компания может закрыться. Компания закрывается, они выключают сервер и все — лентой управлять нельзя. Другой вариант что может случится плохого — компания через несколько лет скажет: все, это старое устройство, мы его больше не поддерживаем и отключат на серверах возможность управлять этим устройством.

У меня это устройство всего несколько месяцев, но уже именно это и произошло. Изначально можно было управлять цветом светодиодной ленты из Home Assistant. Но через некоторое время эта возможность из Home Assistant пропала. Я был уверен что это баг на стороне Home Assistant, но, как оказалось, это компания Tuya поменяла API (тикет на github). Было API через которое можно было менять цвет ленты. А сейчас его нет. Что делать?

Так что сейчас через Home Assistant ленту можно только включать-выключать и менять ее яркость (цвет ленты остается тот который был выставлен в приложении Tuya)

Но, даже установка яркости в Home Assistant работает криво.

Выставляешь в приложении минимальную яркость, а в Home Assistant ползунок не прижат к левому краю. Выставляешь минимальную яркость в Home Assistant, а лента просто выключается.

Я заснял видео как плохо все это работает: https://www.youtube.com/watch?v=zTorRsq9m0E.

Мне давно хотелось пощупать как работает Home Assistant с точки зрения кода. Этот баг кажется несложными я потратил немного времени, получил базовое (совсем базовое) представление как устроен Home Assistant внутри и как под него писать и отлаживать. И чуть более подробно посмотрел на то как происходит взаимодействие с Tuya. Как результат, я сделал версию кода которая лучше управляет яркостью (Pull request).

Так что я чуть-чуть посмотрел как сделана и как работает интеграция с Tuya.

Кратко — все очень плохо. Прямо сейчас для работы с серверами Tuya используется библиотека tuyaha.

У меня есть серьезные опасения что то API которое использует библиотека может быть в любой момент закрыто. Насколько я понял из объяснения это API на стороне Tuya пилил один человек, который там уже не работает. Поддерживает ли это API кто-то на стороне Tuya незивестно.

Тесты — можно было бы написать, не проблема. Можно было бы провести эксперименты и написать документацию на то API которое используется. Но вот шанс что это API может быть в любой момент выключено делает всю эту затею совершенно бессмысленной. Зачем дорабатывать то в любой момент по независящей от тебя причине может перестать работать?

Можно было бы пойти и другим путем — расковырять API которое использует официальное приложение. Но это тоже путь в неправильном направлении:

Итого резюме. Интеграция tuya в Home Assistant это очень опасная штука. В любой момент эта вещь может перестать работать.

Правильный способ — это прошивать устройства на ESPHome или Tasmota (и есть еще и другие прошивки).

Ко мне сейчас едет несколько умных термостатов для теплых полов. Изначально я думал их использовать в Home Assistant через интеграцию tuya, по после того как я посмотрел как это работает я понял что я с самого начала буду их перепрошивать на что-то другое.

Иван Бессарабов
ivan@bessarabov.ru

3 февраля 2020

Кстати, у меня есть телеграм канал про Home Assistant: https://t.me/bessarabov_ha