Remote: Беспроводные интерфейсы

18 февраля 2019, 16:46

Пока мы собираем предзаказы на Remote, начнем цикл статей о работе устройства и кейсах его применения.

Сегодня мы расскажем о беспроводных трактах устройства и особенностях их работы:

  • О схемах работы устройства Remote.
  • О работе Wi-Fi устройства.
  • О том, как работает Bluetooth устройства.
  • И, наконец, о том, как осуществлять запросы к устройству.

Схемы работы устройства Remote

Устройство может работать в 2х режимах работы: в режиме датчика и в режиме исполнителя.

Фактически, каждому из этих режимов работы соответствует определенный тип питания: если Remote подключен по USB - кабелю, то он работает в режиме датчика и исполнителя. Если работа идет от батареек, то устройство работает в режиме датчика.

В чем разница?

При постоянном питании от USB устройство всегда находится «на линии»: у него включен как WiFi, так и Bluetooth.

В случае работы от батареек - подавляющее количество времени сетевой тракт устройства отключен и включается только на 4 секунды каждые 5 минут. Это решение связано с быстрым расходом питания при постоянно включенных сетевых интерфейсах. Тем не менее, если на Remote приходит инфракрасный сигнал, то устройство «просыпается» и сообщает об этом в линию связи. 

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

Как работает Wi-Fi устройства

В каждом устройстве системы можно сохранить до 5-ти точек доступа.

Сохранение SSID / пароля происходит по принципам FIFO — при добавлении 6-ой — первая сохраненная точка доступа будет стерта. Обновление пароля не стирает и не изменяет количество сохраненных точек доступа. Единственное ограничение на текущий момент — то, что точка доступа должна быть не со скрытым SSID. Тем не менее, это ограничение чисто программное и может быть убрано в следующих версиях прошивки.

При старте Remote производит сканирование существующих рядом точек доступа Wi-Fi и проверяет наличие сохраненных паролей в памяти для найденных SSID. При наличии совпадений оно последовательно пробует коннект к каждой из них. В этот момент начинает мигать зеленым индикатор. Это означает, что идет процесс подключения.

Как только индикатор постоянно засветился зеленым — подключение удалось. Если точек доступа с известными паролями не найдено, то устройство переходит в режим точки доступа c SSID «LOOK.in Remote XXXXXXXX» и паролем, совпадающим с его ID (можно найти на наклейке с обратной стороны устройства), индикация светодиода — желтое свечение.

Если устройство подключено от USB, то оно будет раздавать точку доступа постоянно, до тех пор, пока пользователь не решит подключить его в свою Wi-Fi сеть (если решит, конечно, можно и без этого пользоваться).

При работе от батареек:

  • Если Remote работает в режиме точки доступа (не подключено ни к одной сети), через 2 минуты оно перейдет в режим энергосбережения, и будет каждые 5 минут пытаться подключиться к точкам доступа, если они сохранены в памяти.
  • Если устройство работает в режиме клиента, то каждые 5 минут будет подключаться к точке доступа на 4 секунды.
  • Если принят ИК сигнал с пульта и устройство работало в режиме клиента, Remote выйдет из режима сна, подключится к точке доступа пользователя и посредством UDP сообщит о принятом сигнале.

Как работает Bluetooth устройства

Устройство имеет на своем борту Bluetooth 4.2 и реализует стек Bluetooth Low Energy. За редким исключением это BLE сервер.

BLE имеет 3 режима работы: 

  • Защищенный
  • Публичный
  • Сигнальный
В защищенном режиме мощность сигнала сильно снижена так, чтобы оградить подключение от вмешательства злоумышленника. Взаимодействовать с устройством можно только на расстоянии нескольких десятков сантиметров. В этом режиме BLE клиенты могут, в частности, конфигурировать Remote, например, задавать пароли для точек доступа.

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

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

Защищенный режим включается на 2 минуты с момента первого включения Remote. После этого устройство автоматически переходит в публичный режим. Если необходимо сконфигурировать устройство, а 2 минуты истекли - необходимо отключить питание и подать его снова. Тем не менее, протоколом предусмотрена возможность перехода устройства Remote из публичного режима в защищенный с помощью специального запроса к GATT.

Благодаря защищенному режиму реализуется так называемое «Быстрое подключение», с помощью которого можно настроить Remote просто поднеся к нему свой смартфон.

Если устройство работает от USB:

  • 2 минуты работает защищенный режим BLE.
  • По истечению 2х минут включается публичный режим, или ранее, если устройство было настроено с помощью мобильного приложения.
  • Если приходит ИК сигнал BLE на короткое время переходит в сигнальный режим, затем возвращается в публичный.
  • Если устройство работает от батареек:2 минуты работает защищенный режим BLE По истечению 2х минут BLE отключается и включается на 4 секунды каждые 5 минут в публичном режиме.
  • Если приходит ИК сигнал BLE включается в сигнальном режиме, затем отключается.

Как осуществлять запросы к устройству

Краткое описание API устройства представлены на сайте проекта.

Если устройство выступает в режиме Wi-Fi точки доступа и не подключено в качестве клиента, то для выполнения запросов необходимо подключиться к точке доступа, которую оно создает и выполнять все запросы к IP 192.168.4.1

Если же устройство выступает в режиме клиента к вашей Wi-Fi точке доступа, то необходимо выполнять запросы либо к IP устройства, либо к URL http://XXXXXXXX.local, где XXXXXXXX — ID устройства, который можно найти с обратной стороны корпуса. 

Запросы можно выполнять любым клиентом, например, с помощью Postman.

API устройств построен по REST-схеме, однако существенно упрощён.

Для получения какой-либо информации используются GET запросы, для сохранения или изменения данных - POST запросы. POST-запросы доступны не для всех данных, так как некоторые поля являются неизменяемыми. POST запросы должны быть отправлены в виде JSON в теле сообщения.Запросы интерпретируются в независимости от закрывающего слеша «/». При интерпретации все URI запросов приводятся к нижнему регистру. Таким образом запросы вида «/Device/», «/device/» при обработке будут приведены к виду «/device»
Запрос вида:
POST /Device»
{ 
"Name" : "Торшер"
} 

Будет приведен устройством к виду:

POST /device
{ 
"name" : "Торшер"
}

Все поля объекта первого уровня, в данном случае — «name» — дополнительно передаются в запросы внутри устройства как параметры наравне с параметрами GET запроса, разделенными &. Это приводит к тому, что для устройства список параметров следующих запросов эквивалентен:

GET /device?name=Торшер

POST /Device
{ 
"Name" : "Торшер"
}

Виды запросов:

  • GET — получение информации об узле API
  • POST — сохранение и обновление информации об узле API
  • DELETE — удаление узла API

Коды ответов:

  • 200 — Запрос успешно выполнен
  • 400 — Переданы неверные параметры запроса
  • 500 — Внутренняя ошибка устройства при выполнении запроса

Спасибо за внимание, в следующей записи рассмотрим подключение и конфигурацию нового устройства

t.me/LOOKin_Remote


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Alex Khmelenko (Outsiderz)
    Alex Khmelenko (Outsiderz) 2 года назад

    Жду продолжения 👍🏻👍🏻👍🏻

  2. (macros)
    (macros) отредактировано 2 года назад

    Интересно как вам удалось добиться стабильной работы BLE и WIFI на ESP32 одновременно. У меня в самоделке не выходит стабильно. В интернете советуют разделять на разные чипы протоколы (тогда будут раздельные антенны). Как это сделано у вас, если не секрет?

    • Дмитрий Лукин (thecashit)

      Это был долгий тюнинг и подгонка параметров работы Wi-Fi и BLE. 

      На самом деле ESP32 не может работать одновременно (по крайней мере пока нам не удалось этого добиться), когда Wi-Fi включен в режиме точки доступа, а BLE в режиме клиента со сканированием. Тогда ответ от точки доступа может занимать десятки секунд, что категорически ставит крест на коммерческом использовании. А, зачастую, вообще к точке доступа не подключиться. В остальных сочетаниях все стабильно, даже без особой подгонки. Исходя из этого, в основном BLE у нас работает в режиме сервера. Очень редко переходя в режим клиента, и в очень специфичных случаях.

      Другая большая проблема чипа, к сожалению, в том, что BLE использует один с Wi-Fi радиотракт, то есть не получается держать BLE-сервер постоянно включенным на батарейных девайсах.

К списку блогов

Скидки для сообщества

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

LifeControl

+7 495 240-81-01
Промокод:
sprut15
Размер скидки:
15%
На весь ассортимент Lifecontrol

Похожие записи

05 февраля 2019, 00:29
Строю свой первый дом и рассказываю о муках выбора, проводке под умный дом, оборудовании. 05.09.2019 - лето
26 апреля 2019, 08:32
Обновление Умного зеркала, доработали, причесали, и теперь почти закончили наворачивать функционал зеркала.
15 июля 2019, 21:52
Простой способ проверять, что дома никого нет
15 января 2019, 20:54
Умная вытяжка.
30 января 2019, 12:39
Я построю свой луна-парк, с блекджеком и шлюхами! Хотя, к черту лунапарк !
19 ноября 2019, 12:14
Время обновляться!
30 мая 2019, 15:40
Отличные розетки для управления Алисой - подключаются напрямую в облако Яндекса, видятся как Яндекс.розетки, и управляются без задержки. Также можно подключать через собственное облако и mi home и писать скрипты для управления по таймеру, или датчикам.
26 февраля 2019, 12:19
Первое впечатление от диммера для относительно бюджетного проводного умного дома.
03 февраля 2019, 08:41
Нам потребуется система на Deconz с установленным GUI, лампа Hue c обновленной прошивкой по предыдущей заметке (потребуется Hue Hub)