Безумный дом от Яндекс, или как я искал максимально простое решение умного дома
Сразу хочу сказать: я не профи в выборе и тем более правильного построения архитектуры умного дома. Я всего лишь обычный программист мобильных игрушек. Вот как надоесть рекламой в игре — это ко мне.
Пару лет назад приобрёл участок, провёл электричество, построил домик. Появилась нужда автоматизировать некоторые моменты и иметь возможность смотреть состояние и управлять автоматизацией удалённо.
Самое первое, что пришло вголову — использовать Home Assistant (HA). Но это решение я быстро отмёл из-за больших заморочек: покупка мини-компа, флешки, прошивки, настройки, Zigbee-свистка. Хотелось быстро и без заморочек. Яндекс как раз предлагает именно такое решение. Нужен только Он.Хаб Я.Хаб и по желанию — колонка Алиса. Почитав характеристики Хаба, сразу мышкой потянул его в корзину. Посмотреть устройство можно тут. Только странно, что Matter™ там не указан, но есть глава — Подключить Matter устройства.
В общем, купил его и колонку, установил приложение Дом с Алисой. Не знаю, почему с Алисой? И без Алисы всё работает. Упс, оговорился. «Всё работает», надо писать в кавычках, далее расскажу, с чем пришлось столкнуться. Подключил, заработало. Докупил различных умных ZigBee устройств: розеток, реле, термодатчиков и датчиков движения. Натыкал куда можно и нельзя.
Вот к примеру
— В сарае стоит скважинный насос, можно включать и выключать через приложение. Когда уезжаешь с дачи, сценарий его отключит. Под ним стоит датчик протечки. Если беда, и что-то прорвало или течёт, то он выключит насос и оповестит о протечке.
— Две электрических батареи (нагревателя). Включаются, когда температура упадёт ниже 20 гр. и выключаются, когда она будет более 22 градусов.
— По команде Алисы открываются откатные ворота.
— По команде на столбе зажигается фонарь, освещая участок.
— По команде «Алиса, полей газон», выдвигаются спринклеры (дождеватели) и начинается полив.
— Ещё много по мелочи (освещение).
Умный дом от Яндекса довольно молодой, я видел много косяков по мелочи в приложении и несовершенстве создания сценариев, это всё было заранее понятно и простительно, обновления происходят довольно часто и с практически незаметными улучшениями. Я это всё понимал, пользовался приложением и функционалом, тем, что было, и ждал «допиливания» функционала, надеясь, что он приблизится к HomeAssistant или подобным. Пока не случилось то, что сподвигло меня написать эту статью.
Перед началом описания проблемы хочу отметить, что Умный дом от Яндекса как система реально хорош. Все устройства подключаются за секунды и готовы к работе. «Ядро» умного дома, Хаб и Колонка, также работают быстро и без проблем.
Выше, под спойлером, я писал, что у меня есть насос, который управляется умной розеткой. Так вот: расстояние от хаба до умной розетки насоса по прямой 20 м. Когда я говорю Алисе: «Выключи насос», она отвечает, что выключила, а он физически остаётся включённым. Я подумал: фигня какая‑то, может, розетка бракованная, потом разберусь. Потом ситуация повторилась с прожектором на фонарном столбе. Там стоит реле, расстояние меньше, но нет прямой видимости. Через приложение также — нажал на кнопку включить, кнопка отобразила статус «включено», но реле не переключилось. 3-й раз это произошло с устройством, которое прямо в полутора метрах от хаба! Причём если устройство отнести дальше 25 метров или обернуть его фольгой, в приложении оно отображается статусом — «не в сети».
Пока писал статью, в реалтайме заметил такой же баг
И сейчас, как написал эту статью ночью, открыл панель управления домом, и на даче, на веранде, горит свет. Захожу в камеру — свет на самом деле выключен.
И тут я призадумался. Почему в приложении умного дома от Яндекс мгновенная реакция на кнопку? Это они такие молодцы, сделали приложение лучше всех с мгновенной реакцией? Кто‑то может считать, что да, кто‑то может считать это маркетингом, я же, сделав выводы и получив доказательства, считаю, что нет, и приложение у них очень сырое. Возможно, в погоне за куском рынка выпущено сырое приложение, где недостатки полностью спрятаны, и пользователь может увидеть их только после покупки устройств, подписки на «плюс», и ниже приведу пруфы.
Теория и ход моих мыслей
Я уже упомянул, что по профессии я программист, разрабатывал и сервера. Есть основные протоколы нижнего уровня tcp и udp. Если простыми словами описать их основные отличия, то udp отличается тем, что в нём нет постоянного коннекта с сервером или клиентом и нет гарантии доставки пакета данных. Первая мысль была, что протокол ZigBee на нижнем уровне имеет что‑то подобное этому udp. То есть мы дали команду на включение света, и она просто могла не дойти — нет обратной связи.
Прочитал спецификацию на протокол ZigBee, оказалось, что есть ACK Frame.
Хоть подтверждение необязательно, и есть флаг в заголовке пакета Ack.request: 0 — отправка без подтверждения, 1 — с подтверждением. Эту фичу нужно использовать с умом. При единичной команде на устройство использовать флаг, а при отправке или приеме данных — показания графика и т. п. необязательно, т.к. эти данные могут быть дополнены следующими. И, предполагаю, поэтому иногда в Home Assistant кнопка переключает свое состояние с задержкой, а может и не переключить вовсе, ожидая подтверждения от устройства.
Я связался со службой поддержки Умного дома Яндекса, задав прямой вопрос: «Есть ли обратная связь от устройств?»
Дополнил это возникшими проблемами. У меня запросили много уточняющей информации: версию прошивки, идентификатор устройства, модель, производителя реле, мой пол и возраст, модель моего телефона. Ответы были различными, и все склонялись к одному, намекая на то что ваше устройство (реле) официально не поддерживается Яндексом. Но я настаивал на своем и, посмотрев список поддерживаемых устройств, как ни странно, нашел мое реле.
Список поддерживаемых устройств можно посмотреть тут.
Сообщил эту новость в поддержку и получил вот этот ответ:
Это реально проблема, из‑за которой просто опасно использовать умный дом от Яндекса. Разве что в тестовом режиме и при присмотре. Представьте, я выключил обогрев дома через приложение, а нагреватель не выключится? Риск пожара возрастает. Или в сарае отключил насосную станцию, а она не отключилась, произошел прорыв и дорогой насос будет качать, пока не сгорит и не затопит все на участке со скоростью 2.5 тонны в час.
Не хочу ничего плохого сказать про Яндекс, просто хотел докопаться до сути проблемы в этих, к сожалению, мутных сообщениях от поддержки (которые я не стал тут публиковать) и наконец получить конкретный официальный ответ на изначально заданный вопрос.
И это один из важнейших с точки зрения безопасности баг системы. Есть еще, на которые можно пока закрыть глаза и ждать обновлений, приведу их, чтобы не было сюрпризом, для тех, кто решит впервые попробовать это экосистему. Вот они:
Нет локальных сценариев и действий, если пропал интернет — почти ничего работать не будет, смысл хаба практически теряется, так можно и через роутер подключать устройства или любой сторонний шлюз.
Приложение очень часто запускается долго или вообще виснет. Если более 30 сек, я его выгружаю и запускаю заново. Несколько раз решил проверить, ждать до конца. Значения были и 1 и 2 минуты.(Интернет при проверке, естественно, проверял, и через мобильный, и через оптоволокно, и из разных локаций). Считаю это багом, т.к. при перезапуске почти всегда приложение открывается за 3 сек.
Нет человеческих графиков, которые бы отобразили значения за период. Например, сколько кВт потребила розетка за предыдущий месяц.
Нет виртуальных устройств или переменных/ состояний. Например, если Состояние «на охране», то при срабатывании датчика движения включить везде свет, а в колонке — лай собаки.
Много устройств на главном экране со значком перечеркнутого облачка. Можно подумать что это «нет связи» —, а нет! «Нет связи» помечается надписью «Не в сети». Провалившись в устройство, видим яркую надпись: «Нет данных» и описание: «Показания данных не обновлялись (столько‑то времени)». Это датчик протечки на батарейках. Он может передавать данные только при изменении состояния, например, Нет протечки → Протечка. Для экономии энергии. При всем этом значка, что датчик не в сети, нет. Получается, Хаб его видит. Можно настроить уведомление, но только на телефон — если датчик не передает долго данные, и это «долго» ограничено 0…24 часов. Похожая ситуация и с датчиком движения в сарае, куда ходят редко.
Возможно, что‑то уже исправлено, или я что‑то не заметил. Также, имея подписку «Плюса», а это со 2 октября 400 рублей, видим верхнюю четверть экрана, отданную под рекламу. Ее нельзя закрыть, отключить или свернуть. Хотелось бы видеть как минимум виджет погоды или панель параметров/состояния дома.
Повторю, цель статьи не вынести негатив из-за несовершенств умного дома Яндекс в публичное пространство, а помочь и подтолкнуть к развитию, что будет полезно не только в виде прибыли кампании, но и пользователям.
Всем добра!