Всем привет!
В связи с тем, что у многих возникают вопросы о том, что такое сервис CONNECT, нужен ли он в принципе и, если нужен, то для чего, я решил написать небольшую статью, объясняющую, как это всё устроено.
Начнём со “спойлеров” -- без CONNECT-а ваш Умный Дом, построенный на MajorDoMo, будет работать без каких-либо ограничений, но подключение CONNECT-а позволяет упростить внедрение некоторых полезных функций и избавить вас от настройки и поддержки целого ряда технических моментов. Но обо всём по порядку…
Для начала представим типовую схему построения Умного Дома на базе MajorDoMo:
Мы видим сервер и какое-то оборудование, которое взаимодействует с сервером. Также мы видим пользователей, которые также взаимодействуют с сервером, управляя этим самым оборудованием. Всё происходит в рамках одной сети, т.е. и пользователи и сервер в зоне действия одной условной домашней “wi-fi”. В такой конфигурации никаких проблем нет и даже нет необходимости, чтобы эта внутренняя сеть имела выход в Интернет -- одно из преимуществ подобных схем это то, что в случае какой либо аварии и обрыве внешней связи с Интернетом, ваш Умный дом будет работать как ни в чем ни бывало.
Но идём дальше -- мы хотим управлять нашим Умным домом не только находясь непосредственно дома, но и удалённо. Или если не управлять, то, как минимум, получать уведомления о важных событиях. Если вынести пользователей за пределы домашней сети, то наша схема становится такой:
В данной схеме уже показана связь пользователя с сервером находясь вне домашней сети, но эта связь не так проста как кажется.
Во-первых, для прямого доступа к домашнему серверу, необходимым условием является возможность получения “белого” (прямого) IP-адреса для домашней сети, что, как минимум, обычно стоит дополнительных денег и отразится в счете за услуги связи, и, как крайний случай, может быть просто недоступно ввиду того, что не все провайдеры предоставляют такую услугу в принципе.
Вторым важным моментом является безопасность такой конфигурации -- “открыв” свою локальную сеть для доступа извне вы полностью берете на себя ответственность за настройку безопасности этого соединения. Здесь уточню отдельно, что хоть MajorDoMo и обладает базовыми функциями ограничения доступа, но ни в коем случае (!) не является защищенной системой и возможность прямого доступа к серверу через Интернет представляет собой большой риск, неоправданный во всех отношениях.
Третьей особенностью является то, что даже имея прямой выход на домашний сервер через Интернет, возникают дополнительные сложности с интеграцией сторонних облачных сервисов (таких как ассистент Яндекса, Google, Alexa и т.п.), потому что они в большинстве своем требуют наличие домена, привязанного к статическому IP-адресу, а также SSL-сертификата, настроенного на этот домен для безопасного подключения. Но об этом чуть позже.
Справедливости ради, стоит отметить, что альтернативой прямого доступа через Интернет можно считать организацию доступа посредством организации безопасной VPN-сети, а те же уведомления можно получать с помощью интеграции сервера с популярными мессенджерами (Telegram), но всё это как раз те самые технические сложности и определенные неудобства в использовании, которых хотелось бы избежать.
Теперь о том, что такое CONNECT. Фактически, это наш сервер, размещенный в Сети и выступающий в роли посредника между вашим домашним сервером и пользователями (или сервисами), расположенными вне домашней сети.
Ваш домашний сервер подключается к серверу CONNECT используя вашу учетную запись и организует двунаправленный и защищенный канал обмена информацией, а именно:
- синхронизация списка устройств доступных для управления (из раздела Простые Устройства)
- синхронизация основных показателей устройств
- прием команд на изменение состояние устройств
- периодическое резервное копирование состояния системы в облако CONNECT-а
И все вышеперечисленное работает без организации каких-либо технических особенностей со стороны домашней системы Умного дома -- нет никакой необходимости “выставлять” свою домашнюю систему “наружу”, не нужно устанавливать какие-либо дополнительные модули. Всё работает “из коробки” и необходимо лишь прописать свое имя пользователя и пароль от сервиса CONNECT в соответствующем разделе панели управления MajorDoMo.
Но это не цель, а средство для реализации более широкого спектра задач.
Во-первых, имея информацию обо всех устройствах и возможность ими управлять, CONNECT предоставляет простой и быстрый интерфейс по адресу https://connect.smartliving.ru/devices.html -- после авторизации вы можете видеть все свои устройства и производить над ними базовые операции управления.
Далее, имея постоянный адрес в сети, CONNECT выступает посредником между вашей домашней системой и другими сервисами, подключаемыми в режиме Cloud-to-Cloud, самыми популярными из которых как раз являются ассистенты, встроенные в Умные колонки от различных производителей.
И вот мы подошли к следующему практическому шагу -- каким образом связан сервис CONNECT и работа Умной колонки Яндекс. Начнем с небольшой вводной о том, как работает сервис голосового ассистента Яндекс в контексте управления Умным домом.
Когда вы говорите “Алиса, включи настольную лампу” выполняется следующая последовательность действий:
- Активируется колонка и аудио-поток отправляется на сервер Яндекс для преобразования его в текст
- На сервере Яндекс преобразованный текст проходит “осмысление”, т.е. из него выделяются ключевые слова и команды. В нашем случае Яндекс понимает, что вы хотите включить устройство “настольная лампа”
- Яндекс ищет в списке устройств, сохраненных в вашем Яндекс-аккаунте, устройство “настольная лампа” и вместе с этим устройством видит, через какого провайдера оборудования это устройство было добавлено
- Снова Яндекс обращается с запросом к серверу провайдера оборудования передавая ему информацию о том, что определенный пользователь для определенного устройства хочет выполнить команду “включить”
- Провайдер оборудования (в нашем случае CONNECT) принимает команду и переадресует ее уже своими средствами в находящуюся на связи с ним систему Умного Дома MajorDoMo
- Система MajorDoMo получает команду от CONNECT-а и исполняет ее используя соответствующий модуль работы с конкретным оборудованием
Цепочка может показаться слишком громоздкой, но в современных реалиях от завершения произношения команды до того момента, как включается лампа, проходит в среднем 1-2 секунды. С учетом того, какое количество различных систем в этом процессе задействовано, скорость работы впечатляет, согласитесь. Достаточно важным моментом является еще то, что MajorDoMo не занимается “пониманием” исходной фразы, а исполняет уже готовую команду, так что всю работу по поиску смысла произнесенной фразы берет на себя Яндекс и совершенствование алгоритмов идет семимильными шагами.
Роль CONNECT-а в вышеописанном очевидна -- он выполняет роль посредника, “зная” как общаться как с Яндексом, так и с MajorDoMo. От конечного пользователя (как и от инсталлятора Умного дома) в такой схеме снова ничего не требуется, кроме работающего CONNECT-а и прохождения несложной процедуры добавления связи между Яндексом и CONNECT-ом. Последнее делается через приложение Яндекс, раздел Устройства, добавление нового устройства и выбора в качестве типа устройств “Устройства MajorDoMo”, после чего будет запрошен логин пароль от сервиса CONNECT и все устройства появятся уже в интерфейсе приложения Яндекса. Кстати, после этого можно создавать дополнительные сценарии с устройствами прямо в приложении Яндекса, но имейте в виду, что такие сценарии не будут работать, если домашняя система отключится от Интернета.
Примерно по такому же принципу работает интеграция с Google Home и Amazon Alexa, хоть она и менее актуальна ввиду отсутствия поддержки русского языка в соответствующих Умных колонках (на момент написания статьи).
В качестве бонуса упомяну еще несколько менее очевидных, но полезных функций портала CONNECT:
- "родная" поддержка сервиса в приложении MajorDroid (в том числе для push-уведомлений)
- доступ к любой ссылке внутреннего сервера с помощью механизма “реверс-проксирования” -- например, если вам нужно открыть /menu.html домашнего сервера, то вы можете перейти по ссылке https://connect.smartliving.ru/reverse/menu.html и откроется запрашиваемая страница, т.е. указание вашей ссылке через приставку /reverse позволяет загружать нужные страницы (внимание, механизм работает медленнее чем прямой доступ)
- функция “мастер-контроль” портала позволяет привязать несколько аккаунтов CONNECT к одному “родительскому” для централизованного управления и единого баланса (опционально) оплаты сервиса
- устройства, синхронизированные с CONNECT-ом, могут быть “расшарены” между аккаунтами, т.е. доступ к одному устройству могут получить несколько пользователей, причем полноценный сервис CONNECT-а подключается только тому пользователю, в чьей системе находится устройство, а другие пользователи могут даже не использовать MajorDoMo, но при этом они получат возможность управлять доступными устройствами через веб-интерфейс или приложение MajorDroid
Да, чуть не забыл, некоторую путаницу добавляет имеющийся модуль YaDevices, назначение которого не совсем очевидно и пользователи думают, что он предназначен для управления устройствами с помощью колонки. На самом деле нет, его предназначение в обратном, а именно том, чтобы позволить системе MajorDoMo получить контроль над устройствами сторонних производителей, которые пользователь добавил в приложение Яндекс. То есть если есть какие-то устройства, модуля “прямой” интеграции с которыми вы не нашли в MajorDoMo, но при этом есть возможность это устройство подключить в приложении Яндекс, то с помощью данного модуля можно организовать работу с такими устройствами из функций и сценариев MajorDoMo. Кроме того, этот модуль позволяет управлять самой колонкой и использовать её в качестве терминала оповещений о событиях MajorDoMo. Но, повторюсь, к возможности обрабатывать голосовые команды данный модуль отношения не имеет.
Достаточно объемная получилась заметка, но, надеюсь, она внесла некоторую ясность в работу сервиса CONNECT. Спасибо за внимание 🙂