Статья

Спрут станция миди или о костылях в умном доме

Поскольку, вы читаете эту инструкцию на Sprut.ai – не вижу смысла делать долгое введение о пользе умного дома и спрута в частности, остановлюсь исключительно на вопросе необходимости приделывания к Sprut.Hub колонки от Яндекса и её окостыливании.

Первоисточник проблемы заключается в том, что сам по себе СХ не умеет в голос, что нерешаемо в принципе и не видит бОльшую часть wi-fi устройств, что не позволяют решить принципы разработчиков. Сразу оговорюсь – при наличии сносных навыков программирования – подключить Тую и её производные к СХ напрямую – можно, но эта инструкция написана для тех, кто такими навыками не обладает или не хочет заморачиваться.

Что же мешает использовать в качестве центра умного дома, допустим, Яндекс станцию Миди, как самую удачную их модель на сегодняшний день? Ведь там уже есть и ZigBee, и голосовое управление (даже чуть-чуть без интернета), да и Тую она цепляет без вопросов. К сожалению – всё ещё убогая реализация автоматизаций. До 30 января всё было ещё более печально - УДЯ не мог в сложные условия. В использование лампочек в качестве условия тоже, кстати, не мог. В те мрачные времена, несущие свет истинного умного дома спрутоводы заходили в УДЯ сразу с двух костылей.

Я не рассматриваю вариант «заменить устройство на zigbee» - если у вас в комнате лампочка wi-fi, значит так надо (может это любимая лампочка вашего кота и её нельзя менять). Кто поменял всё на ZigBee - молодец, однако голосовые команды всё равно пройдут через костыли. Sad, but true.

Предварительные процедуры

Шаг1: Настраиваем на СХ один из его Wi-Fi как точку доступа. Цепляем Яндекс станцию (любую - нам лишь бы голос понимала) к СХ по этому Wi-Fi, к нему же подключаем все Wi-Fi устройства умного дома (не путайте подключение устройств к самому СХ и использование его в качестве точки доступа – в данном случае имеется в виду второе). В УДЯ (умном доме Яндекса) подключаем навык “SprutHub” в разделе «Новые устройства».

Сразу поясню, почему всё, что будет относится к умному дому будет идти в интернет только через СХ. Это делается для того, чтобы не загружать основную сеть дома бешенным количеством клиентов, которые хоть и не создают траффика – создают подобие DDOS-атаки на ваш роутер. Бюджетный роутер как правило рассчитан на единицы клиентов и когда их счет начинает идти на десятки - начинает ощутимо тупить на ровном месте.

Продукт отечественной селекции

Шаг2: Всё, что можно зацепить на СХ - цепляем на СХ. Что нельзя зацепить на СХ – цепляем на ЯС.

Важный момент – всё, что подключено в СХ можно прокинуть в УДЯ, из УДЯ ничего прокинуть в СХ нельзя, поэтому подключение устройств к ЯС – это нежелательная, крайняя мера.

Шаг3: Прокидываем костыли между СХ и УДЯ.

Системные переменные, такие как «День/ночь», «Постановка на охрану», «Сон», «Режим» - держим в отдельной комнате, чтобы не путать с физическими устройствами.

Шаг4: Все исполняемые алгоритмы прописываем на стороне СХ. На стороне Яндекса прописываем обработку триггеров из СХ для устройств, голосовые оповещения и создание триггеров для СХ из голосовых команд.

Теперь подробно разберем костыли, которыми мы будем связывать две системы. Для нормальной управляемости мы должны получить цепочку «выдача команды на стороне СХ -> получение команды в УДЯ -> выдача ответа УДЯ -> отображение статуса в СХ»

Для начала разделим устройства по типу их функционала (из того, что можно пробросить):

* «Разовый исполнитель» - разово что-то делает и не требует контроля состояния. Пример – надо, чтобы Алиса сказала «Доброе утро».

* «Переключаемое устройство» - имеет два состояния «вкл»/«выкл». Пример – лампочка без диммирования и RGB.

* «Диммер» - состояние варьируется в пределах от Х до У.

* «Составное устройство» - имеет несколько параметров одновременно (пример – RGB лампа, у которой есть состояния вкл/выкл, оттенок белого, цвет и яркость)

Разовый исполнитель

Из СХ в УДЯ (допустим, надо, чтобы ЯС сказала «Добро пожаловать») всё просто:

1. В СХ создаем виртуальную кнопку (рекомендую настроить у неё только одиночное нажатие), включаем в мостах Яндекс. В сценариях прописываем в качестве действия «Кнопка = одиночное»

2. В УДЯ прописываем в условии сценария «если Кнопка – одиночное нажатие», в исполняемой части прописываем действие «тогда сказать – ‘Добро пожаловать’» ГОТОВО

Из УДЯ в СХ (Допустим по фразе «Вечеринка» надо бибикнуть сиреной) – уже сложнее, потому что кнопка – это датчик, а УДЯ не умеет управлять датчиками – только исполнителями. Так что придется совершать лишние движения.

1. В СХ создаем виртуальный выключатель, включаем в мостах Яндекс.

2. В УДЯ прописываем в условии сценария фразу «Если я скажу – ‘Я дома’», в исполняемой части действий уже три: «Включи виртуальный выключатель», «подожди 1 секунду», «Выключи виртуальный выключатель». Второе и третье действия не несут никакой полезной нагрузки, но нужны, чтобы вернуть устройство в исходное состояние. Без второго действия – есть риск того, что СХ не поймает момент включения.

3. В СХ прописываем в сценариях «Если виртуальный выключатель – вкл, то бибикни сиреной».ГОТОВО

Переключаемое устройство

Из СХ в УДЯ или из УДЯ в СХ – не суть, работает по кругу, включается с любой стороны (классика жанра – Wi-Fi лампочка, подключенная к ЯС).

1. В СХ создаем виртуальную лампочку. Прикидываем её в УДЯ.

2. В УДЯ создаем два сценария: «если виртуальная лампочка загорится - зажги реальную» и «если виртуальная лампочка погаснет - погаси реальную». Для обратной связи объединяем эти две лампы в группу и из УДЯ управляем уже группой. Если работать с группой вам кажется неправильным - создаём ещё два сценария с обратной связью «реальная -> виртуальная».ГОТОВО

Пояснения: Лампочки в УДЯ мы группируем для того, чтобы при включении на стороне УДЯ «пальцем в иконку» - мы включали сразу группу и у нас не оторвалась обратная связь с СХ. Виртуальная лампочка в СХ получает полный функционал – она горит тогда, когда горит реальная лампочка. Включает/выключает реальную лампу. Может использоваться в сценариях. При такой схеме мы можем отслеживать на стороне СХ даже оттенок, яркость или цвет RGB лампы, а вот передать эти параметры из СХ в УДЯ-таким путём - не выйдет.

Если нам надо передавать состояние чего-либо, отличного от осветительного прибора из УДЯ в СХ или обратно – вместо виртуальной лампочки в вышеописанной схеме ставим виртуальный выключатель. Тогда нет риска случайно включить прибор командой «Яндекс, включи свет везде». Группировка, в случае с условной кофеваркой – увы, невозможна, поэтому придется воздержаться от включения её тычком пальца в экран телефона и использовать сценарий типа: «если я скажу – ‘включи кофеварку’, то включи кофеварку и включи виртуальный выключатель».

Диммер

По сути – то-же самое, что и переключаемое устройство, только вместо датчика касания – термометр или датчик влажности, а вместо лампочки/выключателя – лампочка диммируемая/штора.

Важная настройка. В противном случае штора будет затравит застревать в состоянии открытия.

Составное устройство

Может и должно являться комбинацией разных устройств. Настоятельно рекомендую не пытаться завязать разные функции на одно и то-же устройство, даже если это возможно. Несмотря на кажущееся удобство – назначать разные функции на одиночное+двойное+долгое нажатие кнопки или на включение+яркость+оттенок лампочки – верный путь запутаться в устройствах.

Что делать, если я хочу использовать в качестве условия УДЯ исполнителя? (Например – хочу сделать что-нибудь, если включился умный чайник).

На данный момент прямого способа использовать устройство-исполнитель, подключенное к УДЯ в качестве условия – невозможно, спасибо Яндекс. Существуют совсем костыльные варианты, которые описывает Умка – допустим, припаять к его плате датчик открытия или воткнуть его в zigbee-розетку, которую уже использовать как условие в СХ. Самый распространенный вариант – не трогать несчастный чайник руками, а запускать его голосом, используя связку исполняемых действий «включи чайник» + «сообщи об этом в СХ через виртуальный выключатель». Менее распространенный – приклеить на него или где-то рядом Zigbee-кнопку и дальше снова «включи чайник» + «отработай нажатие кнопки в СХ». Самым грязным хаком считается фингербот, который при нажатии на кнопочку на нём не только нажмет целевую кнопку, но и сообщит об этом по ZigBee.

Грязный папуасский хакъ

Я не согласен разве что с необходимостью всего этого умного подключать на wifi самого СХ.
Во первых он там тоже не супер пупер крутой.
Во вторых wifi сх может не покрывать всю территорию, где стоят умные устройства в доме. Даже у меня на 3х комнатную квартиру 2 точки доступа, чтобы обеспечить хорошее покрытие 5ггц в любой части квартиры и ещё на террасе.
В третьих при отключении сх, не будет и wifi для всяких умных устройств, а я там на СХ прошивки обновляю, сценарии мучаю и тд.
Если не достает СХ или жалко его нагружать - тогда рекомендуется поставить под устройства умного дома отдельный wi-fi роутер. Главное не вешать лампочки на одну сеть с ноутбуками и телефонами. В противном случае получим нереально лагучий интернет.
А зачем такие костыли. Можно ведь мониторить и управлять всеми устройствами яндекса через api запросы


"2. В УДЯ прописываем в условии сценария фразу «Если я скажу – ‘Я дома’», в исполняемой части действий уже три: «Включи виртуальный выключатель», «подожди 1 секунду», «Выключи виртуальный выключатель». Второе и третье действия не несут никакой полезной нагрузки, но нужны, чтобы вернуть устройство в исходное состояние."

Что бы в УДЯ не добавлять второе и третье действие, можно в СХ, в настройках устройства, задать автовыключение устройсва через 3 сек.

Вернуться назад
Вернуться назад