Поскольку, вы читаете эту инструкцию на 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 сх может не покрывать всю территорию, где стоят умные устройства в доме. Даже у меня на 3х комнатную квартиру 2 точки доступа, чтобы обеспечить хорошее покрытие 5ггц в любой части квартиры и ещё на террасе.
В третьих при отключении сх, не будет и wifi для всяких умных устройств, а я там на СХ прошивки обновляю, сценарии мучаю и тд.
Что бы в УДЯ не добавлять второе и третье действие, можно в СХ, в настройках устройства, задать автовыключение устройсва через 3 сек.