- Умная Wi-Fi розетка: от идеи до разработки и запуска
- Wi-Fi розетка с управлением через Интернет за 60 минут
- 5 минут: размышляем над задачей
- 20 минут: подготовим облачный сервис
- 15 минут: достаем компоненты из ящика и собираем стенд
- 15 минут: подготовка инструментов и сборка прошивки
- 5 минут: наслаждаемся собранным устройством
- Вместо заключения
- О нас
Умная Wi-Fi розетка: от идеи до разработки и запуска
Доброго времени суток, друзья.
Мы ведем разработки в области IoT-решений, производим инновационные продукты, постоянно мониторим мировой и российский рынки IoT, отслеживаем последние тенденции и разработки.
Мы уже писали в предыдущей статье о том, как создавался Центр управления — мозг нашего умного дома. В этой статье мы хотим рассказать вам об одной из наших последних разработок — умной Wi-Fi розетке, поэтапно разобрав этапы создания: от идеи до разработки и запуска.
Мы давно следили за развитием подобных устройств у наших конкурентов, смотрели на отчеты и спрос на умные розетки и решили ввести такой продукт в наш продуктовый портфель. Для нас было важно создать продукт, которым потребители реально захотят пользоваться. Простой, понятный и удобный девайс, который облегчает людям жизнь: чтобы больше не беспокоиться по дороге в аэропорт и не думать об оставленном включенном утюге, чтобы не думать какой будет счет за электричество, потому что на даче оставили включенным теплый пол. Ну и конечно, хотели сделать продукт лучше, чем у конкурентов.
Изучение рынка “умных розеток” и потребностей потребителей помогло нам определиться с необходимым набором функций разрабатываемого девайса. На первоначальном этапе, умная розетка Rubetek должна была представлять собой компактный модуль, подключаемый к электрическим розеткам типа С/Е/F.
Управление розеткой предполагалось с помощью Центра управления Rubetek, по протоколу Z-Wave.
В качестве основных функций устройства наш R&D отдел определил возможность локального и удаленного управления электрической нагрузкой, подключенной к розетке и измерение параметров электрической сети и нагрузки (ток напряжение и активная мощность). Для этого мы установили специальный процессор с измерителем параметров сети STPM32.
Напряжение сети до 230 В.
Коммутируемый ток до 11 А при резистивной нагрузке (cos φ= 1) и до 5,5А при индуктивной нагрузке (cos φ= 0,4).
Потреблямая мощность до 2,5 кВт при резистивной нагрузке (cos φ= 1) и до 1,3 кВт при индуктивной нагрузке (cos φ= 0,4).
Разумеется, в процессе разработки, после долгих обсуждений, от многих первоначальных замыслов пришлось отказаться. Z-Wave модуль был, в итоге, заменен модулем Wi-Fi. Несмотря на все преимущества модуля Z-Wave, например, низкое энергопотребление, он не позволял устройству подключаться напрямую к смартфону или роутеру. Обязательной для использования розетки была покупка Центра управления Rubetek. Модуль Wi-Fi решал данный вопрос, но требовал более мощный источник питания.
Замена Z-wave на Wi-Fi позволило сделать розетку автономнее и, тем самым, комфортнее и доступнее для пользователя. Умная розетка Rubetek получила возможность подключаться к смартфону и интернету без использования каких-либо хабов, достаточно было наличия Wi-Fi роутера который сейчас есть почти в каждой квартире. Получается, что пользователь платит только за розетку, никаких дополнительных девайсов не нужно.
Дизайну и размерам устройства мы уделили не меньше внимания.
Первостепенной задачей было создание максимально функционального и компактного устройства. Мы стремились к тому, чтобы Wi-Fi розетка Rubetek была одной из самых маленьких среди стандартов Schuko (система силовых вилок и розеток для переменного тока, официально определенная как Тип F).
В результате мы создали одну из самых маленьких розеток европейского типа, габариты устройства составляют всего: 53 х 68 мм.
Мы сделали нашу плату многоуровневой, чтобы значительно уменьшить ее размеры.
Материал, из которого изготовлена умная розетка — термостойкий пластик.
Оставался вопрос — как отобразить уровень текущей нагрузки подключенных устройств прямо на розетке?
Мы придумали светодиодный ободок, который менял бы цвет в зависимости от нагрузки. В выключенном состоянии цвет индикации белый. Далее цвета плавно меняются в зависимости от подключенной нагрузки. Для умной розетки предусмотрена возможность диммирования подсветки.
После преодоления порога в 2500 Вт, светодиод начинает мерцать красным.
Розетка — центр умного дома
Мы встроили в конструкцию RF-приемник (433 Мгц), он позволил существенно расширить функционал. К устройству стало возможным подключить до 100 RF-устройств одновременно. При срабатывании датчиков будут поступать уведомления в мобильное приложение. Также, по срабатыванию датчика можно включить, выключить устройство или изменить его состояние.
К умной Wi-Fi розетке можно подключить следующие датчики Rubetek:
● датчик дыма
● датчик движения
● датчик утечки газа
● датчик открытия
● датчик протечки
Соединение с беспроводными датчиками серии Wireless RF WiFi устройство устанавливают по протоколам связи EV1527 с обучаемым кодом (learning code).
Дальность работы датчиков достигает сотни метров.
Фактически, мы превратили компактную розетку в настоящий центр умного дома. Потребитель может купить розетку и, допустим, датчик открытия, движения и дыма. Получается, что, заплатив 5 с небольшим тысяч рублей, потребитель получает охранный комплекс — может управлять светом и электроприборами удаленно, получает уведомления при открытии дверей и окон, задымлении и движении.
Поговорим об особенностях нашей розетки.
1. Интеграция с Apple Homekit
Одна из фич, широко используемая в работе наших устройств — это совместимость с Apple Homekit.
Apple Homekit — платформа, позволяющая из приложения “Дом” на iOS управлять умными устройствами голосом. Необходимо подключить розетку, настроить ее работу в приложении и попросить Сири, например: “Сири, включи торшер в спальне.” И вуаля, свет включился, команда дана быстро и просто, даже не касаясь смартфона.
Как это происходит?
Помимо этого, наши разработчики в тестовом режиме готовят интеграцию умной розетки с Amazon Alexa.
2. Возможность создавать сценарии
Умная розетка позволяет задавать сценарии между подключенными датчиками, а также настраивать работу устройства по времени. Например, когда сработал датчик открытия — включается торшер или другое подключенное к розетке устройство. Можно задать одновременно до десяти таймеров включения и до десяти таймеров отключения. Таймеры реализуются на самом устройстве и работают независимо от подключения к сети Wi-Fi и Интернету.
Все Wi-Fi устройства Rubetek могут взаимодействовать друг с другом будучи подключенными к одной локальной сети. Их можно объединять, создавая различные сценарии работы устройств.
Например:
● состояние устройства (вкл/выкл)
Как пример: включать свет, когда закрываются рольставни.
● измеренные параметры (ток, напряжение, мощность)
Как пример: прислать уведомление, если прибор в розетке потребляет более 2500Вт в течение 2 часов.
● срабатывание подключенных датчиков RF.
Как пример с участием датчика: если зафиксировано движение в комнате, розетка включается, а вместе с этим загорается подключенный к ней торшер.
При настройке сценариев работы устройства можно использовать датчики RF, которые подключены к другим Wi-Fi устройствам Rubetek, тем самым существенно увеличивая зону приема радиосигнала от датчиков.
3. Ведение статистики и энергопотребление в рублях
Согласитесь, пользователю намного комфортнее не вести статистику потребления самому, а доверить данную функцию умному устройству. Наша розетка может не только предоставить владельцу информацию об энергопотреблении каждого подключенного устройства, но и способна вести подсчет в рублях, в соответствии с тарифами ЖКХ конкретного дома.
4. Обновление прошивки по воздуху (FOTA)
Для умной Wi-Fi розетки доступно обновление программного обеспечения по воздуху. Чтобы получить актуальную версию ПО для устройства, не нужно нести его в сервисный центр или подключать к ПК, достаточно того, что розетка будет подключена к сети Wi-Fi с выходом в Интернет.
После удачной закачки обновления прошивки устройство будет перезагружено.
5. А как реализована безопасность?
Безопасность данных при связи с сервером Rubetek на протокольном уровне обеспечивается следующим образом.
Соединение с сервером устанавливается по защищенному протоколу TLS 1.2 с применением двусторонней авторизации. Каждое устройство имеет собственный клиентский сертификат, а также сертификат удостоверяющего центра (CA). В процессе подключения устройства к серверу происходит взаимная проверка подлинности: устройства предъявляет серверу сертификаты из цепи доверия вплоть до клиентского, заверенные подписью, подлинность сервера на клиентской стороне проверяется с помощью сертификата удостоверяющего центра.
В целях защиты от клонирования устройства, проверяется уникальный МАС-адрес. Локальное соединение между устройством и смартфоном/планшетом защищено с помощью стандартного WiFi-шифрования. Проверка подлинности трафика обеспечивается с помощью цифровой подписи каждого сообщения с помощью ключа управления и бегущего ключа сессии. При этом, получение ключа управления невозможно без физического доступа к устройству (получение ключа активируется только нажатием на кнопку на устройстве).
Наша розетка получилась не только одной из самых маленьких в мире, но и самых красивых. Освещение светодиодного ободка достаточно, чтобы использовать его в качестве ночника, розетка действительно очень красиво и эффектно выглядит в любых интерьерах.
Умная розетка — только одно из нескольких устройств линейки Wi-Fi девайсов, разработкой которых занимается наша компания. В продажу уже поступил Модуль управления (позволяет управлять кондиционерами и конвекторами со смартфона), планируются и другие устройства — останавливаться на достигнутом мы не собираемся.
Цена умной розетки от Rubetek всего 2990 руб., а приобрести ее, вместе с другими умными девайсами, вы сможете на нашем сайте в разделе “Магазин”, либо в сети магазинов LeroyMerlin.
Источник
Wi-Fi розетка с управлением через Интернет за 60 минут
В этом материале мы покажем, что Интернет вещей — это не так уж и сложно. Для этого за 60 минут соберем и оживим простейшую Wi-Fi розетку с управлением через Интернет.
5 минут: размышляем над задачей
Почему Wi-Fi? Потому что он у всех есть и не требует проводов, а значит, в пределах нашего помещения розетку можно будет перемещать в любой угол.
Раз розетка у нас смотрит в интернет, то помимо самой аппаратуры нам понадобится еще и нечто в этом самом Интернете. Причем разрабатывать что-то с нуля мы вот вообще не хотим, хотим максимально готовое.
Первое, что приходит в голову — для розетки берем микроконтроллер с ESP8266/ESP32, так как это очень известная и популярная платформа со встроенным Wi-Fi, а для бекэнда в Интернете готовый облачный сервис Azure IoT Central, для которого код писать вообще не надо.
Ну раз это первое пришло в голову — так и сделаем, у нас же всего 60 минут!
У автора была плата с обтекаемым названием ESP32 Dev Board, на которой установлен USB-UART конвертер CP2102 и модуль ESP-WROOM-3. Плату можно опознать по картинке ниже и по ключевику «ESP32» найти на известном китайском сайте.
- собственно сами розетки. Так как мы хотим больше приключений, возьмем сразу две штуки, ведь тогда продукт получится более конкурентоспособный! Автор статьи использовал корпус удлинителя с двумя гнездами.
- модуль реле на 220 В — возьмем готовый, двухканальный, с гальванической развязкой. Нам важно, чтобы реле переключались логическими сигналами с уровнем 3.3В. Выглядит так:
- пара кнопок, мы ведь не только из Интернета хотим включать/выключать розетки, но и кнопками на них;
- любой AC-DC преобразователь 220В — 5В для питания ESP32 Dev Board, например, такой:
- провода, чтобы все это соединить.
Впрочем, необходимый минимум из этого всего — только сама плата ESP32: можно просто подключить ее по USB, от которого и питать, и посмотреть по отладочному выводу или мультиметром на выводах, как она работает совместно с облаком. Правда, в этом случае такая «розетка» не будет выполнять свою основную функцию собственно розетки.
Для ESP32 понадобится прошивка. Вариантов для ее разработки немного:
- взять стандартный тулчейн от производителя. Установка несложная, но и не особо простая. Подчеркиваю также то неприятное обстоятельство, что IDE в этом случае в комплект средств разработки не входит, и собирать все нужно будет с командной строки.
- прослойка для Arduino. Это очевидно проще и быстрее, все ставится и настраивается из самой IDE Arduino. В качестве минуса — не вдаваясь в подробности, нет полноценной готовой библиотеки для работы именно с IoT Central, но мы это обстоятельство обойдем.
20 минут: подготовим облачный сервис
Заходим по ссылке. Понадобится учетная запись Microsoft, с которой следует залогиниться. Подписка Azure для пробной 7-дневной версии — не нужна, но лучше все-таки ее оформить, чтобы взять один из стандартных ценовых планов, где время использования не ограничено и есть два бесплатных устройства.
Выбираем слева Мои приложения — Новое приложение, далее Пользовательские приложения и заполняем поля:
- Имя приложения: любое удобное;
- URL-адрес: любой, но он должен быть уникальным;
- Шаблон приложения: пользовательское приложение;
- Ценовой план: стандартный 1 или бесплатный;
Если выбрали стандартный ценовой план, ниже создайте подписку Azure и выберите расположение, ближайшее к вам (для России — Европа).
Нажмите кнопку Создать
В меню выберите Шаблоны устройств — Создать, как показано на рисунке ниже.
Далее Устройство IoT — Следующий: Настроить. В поле Имя шаблона устройства введите Socket. Нажмите Далее: проверка, Создать.
В появившемся диалоге выберите Импорт модели и выберите файл Socket.json, прилагающийся к данной статье.
Видим следующую картину:
Что только что произошло? Фактически, мы объявили для IoT Central «язык» («шаблон»), на котором говорит наша розетка при обмене данными с облаком, а именно, если развернем параметры каждой возможности (в оригинале — Capability), увидим следующее:
- каждая из двух розеток передает сообщение телеметрии, в котором закодировано состояние: 0 — выключено, 1 — включено;
- каждая из двух розеток принимает команду с параметром типа Boolean (true — включено, false — выключено).
Почему в телеметрии 0/1, а в команде true/false? Это связано с особенностями визуализации в IoT Central, короче говоря, телеметрию в виде 0/1 на картинках можно отобразить нагляднее, чем true/false.
Откуда взялся файл Socket.json? Автор подготовил его заранее, введя описание всех возможностей розетки в самом IoT Central, затем просто сохранил шаблон в файл, используя встроенную функцию экспорта.
Теперь по поводу визуализации. Нашему устройству неплохо бы сделать красивый дашборд, с которого мы будем посылать на него команды включения/выключения и видеть его состояния. Для этого нажмем в списке возможностей устройства пункт Представления и выберем плитку Визуализация устройства.
В разделе Телеметрия выберите Socket1State, нажмите + Телеметрия и выберите Socket2State, затем нажмите Добавить плитку. На появившейся плитке нажмите иконку и выберите Диаграмма состояний из меню. Нажмите Сохранить.
Теперь нам нужно «опубликовать» наш шаблон, т.е. перевести его из черновика в состояние, когда им можно будет пользоваться. Для этого нажмите соответствующую кнопку (Опубликовать). Подтвердите публикацию, нажав в появившемся окне кнопку Опубликовать.
Пока что мы только опубликовали шаблон устройства, теперь заведем запись для нашего конкретного устройства. Для этого переходим в главном меню в раздел Устройства и нажимаем кнопку + Создать. В появившемся окне изменяем только шаблон устройства на Socket. Нажимаем кнопку Создать и кликаем по имени появившегося устройства. Нажмем кнопку Подключить в верхней части окна и в появившемся окне видим всю необходимую информацию, которую нам нужно будет использовать в прошивке устройства, чтобы оно могло «разговаривать» с IoT Central. В поле Тип проверки подлинности выберем Подписанный URL-адрес (SAS) (так проще). Итого нам понадобятся:
- Область идентификатора — это идентификатор нашего приложения IoT Central;
- Идентификатор устройства — не требует пояснений;
- Первичный ключ — считаем, что это «пароль» этого конкретного устройства.
С этими данными устройство должно обратиться к сервису регистрации устройств (Device Provisioning Service, DPS) для получения адреса IoT Hub, еще одного сервиса Azure. Зачем еще IoT Hub? Дело в том, что IoT Central работает «поверх» IoT Hub, являясь как бы «оберткой» для него. Вся последующая коммуникация будет происходить именно с этим IoT Hub.
Проблема в том, что простые в использовании библиотеки Arduino не включают готового клиента DPS. Ну раз так, то возьмем систему с Windows 10, и получим этот адрес IoT Hub вручную. Утилита dps-keygen умеет это делать, правда для ее запуска понадобится node.js.
Раз так, установим последнюю версию node.js с официального сайта с параметрами по умолчанию, затем запустим стандартную командную строку Windows и выполним команды (естественно, подставив нужные данные из нашего приложения IoT Central):
Порядок аргументов в последней строке не имеет значения.
Нас предупредят, что эта возможность «deprecated» и не «best practices», но нам очень надо, и не «best», а «fast», иначе не уложимся за 60 минут, которые обещал автор, поэтому продолжаем. На выходе будет строка подключения, которую мы позже укажем в прошивке розетки:
Отлично! Мы готовы к сборке стенда.
15 минут: достаем компоненты из ящика и собираем стенд
Сгребаем в охапку все провода, компоненты, и собираем их, как показано на схеме ниже. Можно как припаивать провода, так и соединять через разъемы — дело вкуса. В любом случае особое внимание уделяем высоковольтной части. Автор сделал разъемные соединения, где это было возможно, остальное — припаял.
Результат немного угрожающий, но для стенда вполне работоспособный:
Такой вид в общем-то вполне нормален для всяких самоделок, но если под рукой (совершенно случайно!) есть 3D-принтер, можно сделать что-то более презентабельное:
Как и обещал, две кнопки, две розетки.
Между прочим, если задумаете поменять пины на Dev Board, рекомендую эту картинку для понимания, что на каких пинах есть:
Также из-за ошибки трассировки на плате автора был не подключен пинов GND около кнопки EN (RST), так что такие моменты тоже неплохо бы проверить (на вашей плате).
Ну и для справки, схема соединений сигнальных проводов в виде таблицы (для удобства сборки):
Контакт | Контакт |
---|---|
ESP32 GPIO16 | Кнопка 1 |
ESP32 GPIO17 | Кнопка 2 |
ESP32 GPIO5 | Реле 1 |
ESP32 GPIO18 | Реле 2 |
15 минут: подготовка инструментов и сборка прошивки
Будем собирать прошивку на Windows 10 (любой сборки, но авторы категорически рекомендуют LTSC).
- Загрузим и установим Arduino IDE.
- Загрузим и установим драйверы моста UART-USB, распаянного на плате. В случае автора это был CP2102 (на нем самом написано).
- Запустим Arduino IDE и перейдем в меню Файл — Настройки. В поле Дополнительные ссылки для Менеджера плат вводим https://dl.espressif.com/dl/package_esp32_index.json. Это позволит установить поддержку ESP32 прямо из Arduino с сайта производителя чипа. Нажмем OK и закроем диалог.
- Перейдем в меню Инструменты — Плата — Менеджер плат, в поиске введем esp32. В появившемся пункте нажимаем Установить.
- Из прилагающегося архива распаковываем каталог GetStarted и открываем скетч GetStarted.ino.
- Находим следующие строки и внутри кавычек соответственно прописываем SSID Wi-Fi сети и пароль:
- Находим строку и внутри кавычек вставляем строку соединения, которую мы получили ранее при помощи утилиты dps-keygen.
- Находим строку и внутри кавычек вставляем идентификатор нашего устройства:
- В настройках платы (Инструменты — Плата) устанавливаем параметры, как на рисунке ниже.
- Поправим баг библиотеки SNTP, приводящий к перезагрузке ESP32 при пропадании соединения, для чего откроем файл C:\Users\имя_пользователя\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5\libraries\AzureIoT\src\az_iot\c-utility\pal\lwip\sntp_lwip.c и в самое начало функции SNTP_Init() вставим код:
Версия библиотеки может отличаться. Замените 1.0.5 на ту, которая применяется в вашем случае.
Если хотите больше двух розеток — без проблем! Внесите изменения в схему и добавьте номера пинов кнопки и сокета в массивы BUTTON_PIN и SWITCH_PIN.
5 минут: наслаждаемся собранным устройством
Теперь вернемся в IoT Central, чтобы потестировать наше устройство.
- На дашборде устройства есть закладка Необработанные данные, где можно увидеть сообщения телеметрии, отправляемые розеткой. Здесь же можно увидеть, что поля deviceId и messaageId не соответствуют модели. Так и есть — в шаблоне устройства их нигде нет, они добавлены только для отладочной телеметрии.
- На закладке Команды можно включать и отключать каждую из двух розеток отдельно:
- Также можно включать и отключать каждую розетку кнопкой на ней. В любом случае, все изменения отражаются на в телеметрии вкладке Состояние при любом переключении. Причем телеметрия отсылается не реже, чем раз в час, так что можно, например, в IoT Central создать правило, отслеживающее наличие подключения розетки: если за последний час не было ни одного сообщения, розетка потеряла связь. При срабатывании правила можно предпринять ряд действий, например, отправить e-mail и т.п.
Пример создания правила (высылает e-mail с предупреждением на заданный адрес, если не было ни одного сообщения телеметрии за последние 60 минут, другими словами, розетка «не в сети»):
Вместо заключения
Это еще не все, и мы планируем продолжить эксперименты в подобном формате, а именно:
- Сделать поддержку DPS в прошивке;
- Добавить поддержку IoT Plug and Play, тогда на стороне IoT Central не нужно будет регистрировать устройство, и оно все сделает само;
- Сделать голосовое управление розеткой («Эй Кварта Технологии! Включи розетку 1!»).
О нас
Компания Кварта Технологии была основана в 1997 году и сегодня является лидирующим поставщиком программного обеспечения и облачных сервисов для рынка встраиваемых систем и IoT в России, Украине, Грузии и странах СНГ.
Мы предоставляем услуги по лицензированию, разработке и обучению в области встраиваемых решений, помогая производителям из разных стран создавать передовые интеллектуальные системы и устройства в кратчайшие сроки.
С 2004 года компания является авторизованным дистрибутором и тренинг-партнером Microsoft Windows Embedded (IoT) на территории России и СНГ. Последние несколько лет входит в Топ-5 лучших дистрибуторов Microsoft по Embedded-продуктам в регионе EMEA (Европа, Ближний Восток, Африка) и обладает статусом «Windows Embedded Partner Gold Level».
Источник