Умный дом Sber теперь полностью автономный. Из чего он состоит?

Умный дом Sber теперь полностью автономный. Из чего он состоит?

SberDevices сегодня перезапустили собственную платформу умного дома, отказавшись от сторонних инфраструктурных решений и сделав ее полностью автономной. Также с сегодняшнего дня в продажу поступило первое устройство умного дома Sber нового поколения – самая популярная лампа А60.

Мы анонсировали разработку новой инфраструктуры для своей платформы умного дома полгода назад. Основной задачей было обеспечить бо́льшую надежность работы: элементы сторонних поставщиков ограничивали гибкость в развитии и создавала ненужные риски. Эта задача решена: сейчас все составляющие платформы контролируются нашей командой и работают на российских серверах.

В этой статье мы хотим рассказать, как устроена наша платформа и как с её помощью мы выпускаем свои устройства и интегрируем устройства партнёров.

Передаю слово моему коллеге, Борису Папиняну, PO платформы умного дома SberDevices.

Что умеет и из чего состоит платформа умного дома

Если коротко — платформа умного дома умеет отправлять на умные устройства Sber и девайсы партнёров команды и получать от них ответ. На первый взгляд, довольно просто.

Но давайте всмотримся пристальнее:

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

В бекенде платформы — более 60 микросервисов, составляющих ядро платформы: сервис интеграции, сервис обновления прошивки, сервис подключения устройств, сценарный движок, сервис голосовых команд, сервис аналитики и многие другие.

Бекенд может взаимодействовать с облаками партнёров и программируемыми контроллерами: транслировать команды, которые пользователи отдали через приложения и устройства Sber, в партнёрское облако или на контроллер, и получать оттуда статус. С помощью такого взаимодействия пользователи получают возможность управлять через умный дом Sber не только устройствами нашего производства, но и сторонними девайсами.

Ниже — подробности о ключевых частях платформы.

Умные устройства Sber

Платформа умного дома не обязательно должна включать устройства своего производства: вы вполне можете обойтись интеграцией с партнёрами и управлять только сторонними лампами, розетками и другими девайсами.

Мы же, в дополнение к партнёрским девайсам, сами производим устройства — и стараемся сделать их одними из лучших на рынке. Для этого в нашей команде есть инженеры, которые проверяют аппаратные компоненты, выбирают и инспектируют фабрики, создают процедуры и стенды для приёмочных испытаний.

Вот как (очень укрупнённо) выглядит процесс производства девайсов:

  1. Продуктовая команда делает бизнес-анализ и определяет, какое устройство, с какими характеристиками и по какой цене нужно произвести.
  2. Инженеры помогают выбрать несколько фабрик, которые могут изготовить устройство в соответствии с нашими требованиями. Фабрики инспектируют, у них заказываются тестовые партии устройств.
  3. Устройства из тестовой партии тщательно тестируются. Например, на картинке ниже — сферический фотометр. Внутренняя часть этого шара оснащена датчиками, с помощью которых проверялись световой поток и равномерность освещения прототипов ламп. Также у тестовых устройств проверяются электрические характеристики, температуры работы и многие другие параметры.
  1. Как правило, даже самые лучшие образцы не устраивают нас полностью, поэтому наши инженеры дорабатывают схемотехнику и конструкцию устройства.
  2. Фабрика, сделавшая лучшие устройства и готовая внести необходимые нам доработки, получает заказ на производство. Пока она готовит производственные линии, мы тоже не сидим без дела — нужно подготовить протоколы для приёмки девайсов.

    Прошивка устройств

    Чтобы производимые на фабриках девайсы стали умными, недостаточно железа. Нужна прошивка — её тоже пишут наши инженеры.

    На прошивке нужно остановиться чуть подробнее, потому что этот компонент нашей платформы по-своему уникален. На рынке России крайне мало поставщиков облачных умных домов, самостоятельно разрабатывающих своё системное ПО, а не использующих проприетарные версии. Это не только вопрос престижа: прошивка определяет, из какого облака устройство будет получать команды, поэтому без неё говорить о независимой инфраструктуре нельзя.

    Проприетарная прошивка накладывает и многие другие ограничения: можно ли обновить устройство «по воздуху», можно ли усилить алгоритм шифрования и прочее. Самостоятельно разрабатывая прошивку мы получаем бо́льшую гибкость и можем выбирать решения, лучшие для наших пользователей.

    Несколько примеров того, что нам уже удалось реализовать, используя это преимущество:

    • Лампа и другие наши устройства используют только российскую облачную инфраструктуру.
    • Мы используем стойкий криптографический протокол на уровне приложения после подключения к лампе по BLE — нативный механизм шифрования BLE обладает уязвимостью и уже не может считаться надёжным. Кроме того, мы внедрили криптографическую подпись в образ прошивки.
    • Модуль безопасного OTA-обновления не только позволяет дистанционно обновлять ПО, но и защищает лампу в момент инсталляции прошивки: даже если пользователь выключит питание лампы во время обновления (а такое, увы, не редкость), она не выйдет из строя.
    • У нас появился таймер времени выключения: теперь лампа знает, когда она выключалась в последний раз. Это помогло победить проблему «спонтанного пейринга», когда лампа переходила в режим подключения по пяти включениям и выключениям подряд, не различая при этом, что эти переключения случались с разницей в несколько часов. Что важно — проблему решили установкой простейшей RC-цепочки и изменениями прошивки, без впаивания аппаратного таймера и заметного удорожания устройства.

    Ещё одна ключевая особенность прошивки — возможность переиспользования. Она состоит из трёх слоёв: слой с приложением для управления устройством, слой IoT-платформы и физический слой с реализацией радиомодулей и хранилищами. Последние два уровня — универсальные. Они не меняются от устройства к устройству, кастомизируется только слой приложения. Это будет экономить нам время при выпуске следующих девайсов.

    А вот так выглядит разработка прошивки. Сверху — лампочка, но на открытой плате, на которой собраны все модули и чип, его можно извлекать и перепрошивать. Если присмотреться, то можно увидеть и светодиоды лампы. Снизу — уже почти готовая лампа с портом для перепрошивки.

    Сервис интеграции

    Это ещё одна очень важная часть платформы. Мы производим не все категории устройств, которые нужны нашим пользователям, и готовы делиться технологиями, которые полезны нашим партнёрам. Для взаимодействия с партнёрскими облаками разработана подсистема интеграции — она позволяет подключать к платформе умного дома Sber девайсы других производителей и управлять ими так же, как и нашими собственными устройствами: голосом или через интерфейс в приложении и устройствах Sber.

    А ещё мы не решаем за пользователя, как ему организовывать свой дом, поэтому эта подсистема умеет работать с разными технологическими стеками: Wi-Fi, Zigbee, Bluetooth, MQTT.

    Взаимодействие строится на базе открытого API — любой вендор может реализовать интеграцию и дать своим пользователям возможность использовать все технологии нашей платформы: множество поверхностей, голосовое управление, сценарный движок. С нами уже интегрированы больше десятка производителей, включая Aqara, Digma, HIPER и Yeelight.

    Для компаний-интеграторов и DIY-энтузиастов, автоматизирующих дома с помощью программируемых контроллеров Wiren Board и LogicMachine, мы максимально упростили подключение к облаку Sber: разработанное нами приложение можно установить на контроллер — и оно обеспечит трансляцию команд от умного дома Sber на контроллер и в обратном направлении. После этого даже проводными устройствами можно будет управлять голосом и через интерфейс устройств и приложений от Sber.

    Поверхности для управления

    Пользователь должен иметь возможность управлять умным домом на любой удобной ему поверхности: через мобильное приложение, телевизор, умную колонку. Для этого мы встроили свои разделы в приложения для Android и iOS, а также в GUI устройств Sber: SberBox, SberPortal, SberBox Time, телевизоров с Салют ТВ и других.

    Кажется, что читателям Хабра нет необходимости расписывать нюансы мобильной разработки. Но точно стоит отметить, что эта часть нашей платформы не только обеспечивает интерфейс с пользователями и взаимодействуют с API, но и отвечает за системообразующие задачи — например, за подключение девайсов.

    На картинке — схема экранов подключения лампы. Не всматривайтесь в каждый экран — просто посмотрите на их количество. И это только одна из множества функций.

    Голосовое управление

    Сейчас уже недостаточно иметь управление устройствами только через интерфейс — пользователи ждут от поставщика умного дома и голосового управления. Для его реализации мы используем два сервиса.

    Первым команду пользователя слышит голосовой ассистент семейства Салют: Афина, Джой или Сбер. Ассистенты используют технологию синтеза и распознавания речи SaluteSpeech (кстати, вы тоже можете использовать её). На этом этапе классификатор определяет, к какому сервису Sber относится команда: к умному дому, или, например, к приложению кинотеатра на приставке.

    Затем команды умного дома передаются в платформу умного дома и в дело вступает сервис голосовых команд. Он полностью написан нами: пришлось отказаться от сторонних решений, чтобы лучше учесть специфику голосовых запросов умного дома.

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

    Кроме разнообразия самих интентов, при определении намерения приходится решать и другие сложности: например, у пользователя может быть несколько устройств с одинаковыми названиями, название устройства может дублировать название комнаты или дома, команда может подходить к нескольким устройствам и пр. Сервис проходит по дереву интентов, и, учитывая все составляющие фразы, отбрасывает неподходящие ветви и выбирает тот интент, который подходит больше всего.

    Есть и ещё одна особенность: каждый интент можно выразить разными словами. Мы не стремимся учить пользователя фразам управления умным домом, а сами стараемся подстроиться под пользователей. Чтобы быть готовым к самым неожиданным формулировкам, мы постоянно пополняем корзину запросов — как с помощью групп дикторов, так и с помощью регулярного анализа массива нераспознавшихся фраз. Так, например, мы поняли, что пользователи иногда произносят мультикоманды: отдают две команды в одной («Салют, выключи свет и открой шторы») — и научили наш сервис их поддерживать. Насколько знаем, так не умеет больше ни один сервис голосового управления умным домом.

    Сценарный движок

    Разные поверхности и голосовое управление — это хорошо. Но умный по-настоящему дом должен не только выполнять ваши команды, но и работать самостоятельно. Поэтому в платформе реализован ещё один важный компонент — сценарный движок. Он запускает устройства по расписанию, голосовой команде или в зависимости от зафиксированных датчиками событий.

    Движок умеет управлять не только нашими устройствами, но и устройствами партнёров. Например, можно собрать датчик движения Aqara, лампы Yeelight и розетки Sber в один сценарий, который будет выключать свет и электроприборы, если дома долго нет движения.

    Мы активно занимаемся развитием движка и уже скоро запустим кое-что новое — следите за новостями.

    Как это всё работает вместе

    Как мы говорили выше, бекенд платформы умного дома включает более 60 микросервисов. Микросервисная архитектура не в последнюю очередь выбрана, чтобы эффективнее утилизировать ресурсы и минимизировать паразитный трафик — мы придерживаемся подхода Green code и максимально оптимизируем платформу.

    Бекенд умного дома работает с небольшими умными девайсами, и их очень много. С каждым нужно поддерживать соединение и обмениваться сообщениями — это сотни тысяч запросов. Для их обслуживания можно было пойти стандартным путём и использовать тяжелые enterprise-решения, но это привело бы к избыточному расходованию ресурсов. Вместо этого мы пишем лёгкие микросервисы на Go.

    Все микросервисы — stateless и горизонтально масштабируются. Чтобы повысить устойчивость платформы, для каждого микросервиса запускается минимум два инстанса и балансировщик. Инстансов высоконагруженных микросервисов может быть больше.

    Бекенд платформы хостится в облачной инфраструктуре на территории России — мы используем облако Cloud. Это тоже обеспечивает устойчивость.

    Сервисы регулярно проходят аудит безопасности — как внутренний, так и внешний. Внешний выполняет компания BI.ZONE, мы проходим его в режиме White-box: у аудиторов есть доступ ко всей кодовой базе и они могут выполнять любые проверки, включая аутентифицированное сканирование.

    Заключение

    Платформа умного дома — это масштабно и интересно. Особенно, если вы проектируете и делаете её полностью сами. Скучать не приходится никому и у каждого из команды найдётся масса историй о вызовах, с которыми приходилось и приходится справляться.

    Если вам интересно почитать про какой-то из аспектов нашей платформы подробнее — напишите об этом в комментариях, пожалуйста. Мы постараемся сделать отдельную статью на эту тему.

    Источник https://habr.com/ru/companies/sberdevices/articles/701964/

    Читать статью  Электрическое отопление загородного дома