Блог

Software Update 09.2019

LOOKin

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

Удаленное управление

С развитием стало понятно, что проект буксует в плане удаленного управления. Не смотря на то, что проект задуман на то, чтобы быть локальным и умный дом пользователя мог работать без интернета, очень многим функциям требуется как раз таки возможность работы через облако. Примерами таких сервисов являются, например, голосовые помощники, такие как Яндекс Алиса или Amazon Echo.

При проектировании мы опирались на следующие требования:

Безопасность

Весь обмен сообщениями между приложением и устройствами должны происходить по защищенному каналу. Это сейчас могут передаваться только ИК коды или сигналы включения / выключения умных розеток и подобных устройств. А что, если мы когда-то выпустим устройство распознавания речи, к примеру. Протокол удаленного управления должен был обеспечивать необходимый и достаточный уровень защиты, который бы не позволил злоумышленнику прочитать то, что пересылается между всеми участниками обмена.

Для защиты трафика используется SSL канал. Каждое подключение осуществляется с помощью уникальной пары ключей, передача которых происходит от сервера приложению также по защищенному каналу. Но что делать в локальной сети? Ведь там, на текущий момент, трафик не зашифрован и, в теории, кто-то может перехватить пару ключей и использовать в своих целях. Для того, чтобы максимально сберечь ключи от компрометации, они передаются на устройство через BLE сервер со сниженной мощностью передачи. То есть необходимо поднести телефон к устройству для того, чтобы записать ключи удаленного управления. При этом мощность BLE снижена таким образом, чтобы далее полутора-двух метров по прямой видимости уже невозможно было записать в устройство ключи доступа.

OAuth2 авторизация

В рамках задачи была построена система прав для того, чтобы пользователь мог авторизовать требуемое ему web-приложение, скажем, навык Алисы и дать ему ровно те права, которые требуются. Кроме того, у пользователя должна быть возможность просматривать и удалять список клиентов, которые имеют доступ к его устройствам. На текущий момент реализован только просмотр, однако в одном из ближайших апдейтов мы добавим и удаление клиентов.

Универсальность

Первоначально, для работы удаленного управления мы разработали отдельный протокол взаимодействия с устройствами, однако, вовремя остановились - поддерживать параллельно 2 протокола накладно как с точки зрения разработки, так и с точки зрения памяти / размера прошивки. Кроме того, 2 протокола в будущем могут сильно затруднить работу сторонних разработчиков, которые захотят воспользоваться протоколом. В связи с этим, мы оставили текущий протокол и немного его адаптировали для работы с удаленным управлением. Таким образом, запросы, которые делаются к устройству по локальной сети сейчас абсолютно такие же как и удаленно.

Скорость работы

На старте мы перепробовали несколько вариантов построения сети удаленного управления, сравнивая пинг, скорость обработки пакетов в прошивке и приложении, также учитывая возможность масштабирования выбранного решения на большое количество пользователей (любому стартапу хочется расти и развиваться :). В итоге остановились на протоколе MQTT - он достаточно быстр, легковесен и позволяет работать через SSL. Возможность запуска сторонних Web-приложений осуществляется через сервер авторизации, который физически отделен от MQTT-сервера. Все это позволило сделать надежное управление и, при необходимости, его масштабировать.

Простота работы

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

Нам было необходимо базироваться на каком-то известном о пользователе "реквизите". Выбирая между номером телефона, Apple ID или ID устройства для Android и Email мы остановились на последнем. Однако заставлять вводить код из письма нам не хотелось. Поэтому, скажем, для подтверждения E-mail достаточно кликнуть на ссылку подтверждения из почты на телефоне и приложение перехватит запрос и автоматически подтвердит почту, выполнив соответствующие запросы. По нашим тестам, это экономит от 40 до 70 секунд времени. Также в дальнейшем мы планируем использовать подготовленную схему работы с ссылками для выполнения любых других действий, которые требуют подтверждения по E-mail.

Удаленное управление: Beta или Release Candidate

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

Писать сюда: @LOOKin_Remote

Составные инфракрасные сигналы

Количество Remote становится все больше, как и растет количество кейсов их использования нашими пользователями. Столкнулись с проблемой, связанной с тем, что некоторые пульты (в основном - кондиционеры), используют очень длинные инфракрасные сигналы, состоящие из нескольких отдельных "пакетов". Remote воспринимал их как различные сигналы, запоминая только последний из пришедших. Попытка обучить пульт на таких сигналах чаще всего сталкивалась с провалом и кондиционер требовал полностью всего сигнала для управления.

Есть проблема - нужно решение. В процессе подготовки апдейта переработали весь ИК тракт прошивки для того, чтобы появилась возможность работать с такими - длинными - кодами. Сейчас можно сказать с уверенностью - Remote способен снять сигналы практически с любого ИК пульта. Опыты также показали, что, например, Xiaomi Remote 360 не всегда способен распознать такие нестандартные пульты. Дополнительный плюс в копилку LOOK.in Remote

Кондиционеры

Для работы с кондиционерами в API устройств мы решили ввести унифицированный интерфейс, который бы позволил задавать сразу следующие параметры в независимости от того, какой у вас кондиционер:

  • Температуру
  • Режимы работы горизонтальных и вертикальных лопаток
  • Скорость работы вентиллятора
  • Режим работы кондиционера (авто, нагрев, охлаждение, осушение и т.д.)

Пока данная настройка доступна только для кондиционеров Daikin и Mitsubishi, но этот список будет расширяться со временем. Если у вас есть Remote и кондиционер - напишите нам, добавим ваш кондиционер в приоритетном порядке

Новые ИК протоколы и уточнения существующих

Добавились следующие ИК протоколы:

Кондиционеры DaikinКондиционеры MitsubishiИК протокол AiwaИК протокол Samsung36

Также мы сделали более надежной работу с ИК протоколом NECx.

Remote может работать с пультами, ИК протокола которых нет в его внутренних алгоритмах, однако поддержка протокола облегчает работу с такими пультами, поэтому мы периодически расширяем список таких протоколов.

Первый плагин для HomeBridge

В рамках пилотного проекта по кондиционерам с интеграторами из Comfort-Life мы также подготовили свой первый плагин для HomeBridge, который позволяет добавить кондиционер с помощью Remote в HomeKit в виде термостата. Если у вас есть потребность в других плагинах - пишите в комментариях - поможем ;)

Homebridge AC Plugin

Доступность обновления

Прошивка 1.31: выпущено и доступно для обновления из приложения.

LOOK.in Hub 1.40:

Итог

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

Спасибо за то, что остаетесь с нами!


Пытаюсь понять, чем оно лучше бесплатного и универсального openmqttgateway? пока не понял... И да, что там у Вас с Алисой?

Не совсем понимаю при чем тут OpenMQTTGateway...


Работа с голосовыми помощниками упиралась в отсутствие серверной инфраструктуры и, собственно, удаления устройствами с сервера, если на то будет воля пользователя. Этот вопрос закрыли. Теперь можно на основе удаленного управления реализовать работу с голосовыми помощниками. В ближайшие несколько месяцев реализуем этот функционал

Я вот совсем не понимаю чем Ваше устройство лучше бесплатного OMG или https://letyshops.com/r/aliexpress-l95yrswivogk0">дешевого ИК-пульта (который, кстати, искаропки работает с Алисой)... В чем его фишка?

плагин HomeBridhe-AC "обучать" с помощью других пультов от кондиционеров можно?


Здравствуйте!

Инфракрасные коды у кондиционеров отличаются от большинства остальных устройств. На текущий момент плагин поддерживает управление только кондиционерами Daikin и Mitsubishi. Если у вас есть кондиционер, который требуется добавить - обработаем и добавим.


При этом Remote может спокойно работать с любым кондиционером, но вот чтобы как в плагине был термостат, выбор режимов работы и температуры, требуется внесение каждой линейки кондиционеров отдельно


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