Блог 2Smart (RU)

Как написать прошивку для IoT устройства на базе SDK

Wi-Fi реле на печатной плате в корпусе
После создания нового IoT устройства в 2Smart Cloud (в этом примере – умного Wi-Fi реле), тестирования прототипа и сборки устройства на печатной плате был получен полноценный продукт. Реле управляется из мобильного приложения и с помощью дополнительных способов (голосовые команды в экосистемах Google и Apple, Telegram бот, телефонные звонки). Первая серия устройства установлена у нескольких пользователей, функционал их полностью устраивает.

Тем не менее, прошивка устройства на базе ESPHome связана с некоторыми ограничениями. Главное из них – невозможность обновить прошивку по воздуху. Для перепрошивки новым кодом каждое из устройств нужно подключать к компьютеру через USB-кабель, что неудобно.

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

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

Создание прошивки на основе SDK


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

Поскольку базовая прошивка полностью меняется (до этого использовалась ESPHome), редактирование уже существующего продукта на платформе невозможно. Нужно создать новый продукт на основе Custom прошивки.

1 - В кабинете вендора перейдите в раздел “Продукты” и нажмите “Создать продукт”.

Создание нового продукта в кабинете вендора 2Smart Cloud

2 - Выберите микроконтроллер, на основе которого создано устройство – в данном случае это ESP32.

Выбор микроконтроллера устройства

3 - Заполните информацию об устройстве: укажите название, загрузите иконку.

Указание общей информации о продукте

4 - Нажмите “Создать прошивку”.

Переход к созданию прошивки устройства

5 - Выберите вариант Custom и нажмите “Далее”.

Выбор базы для новой прошивки

6 - Нажмите на ссылку “Информация о подключении”.

Ссылка на параметры, необходимые для создания прошивки

7 - Оставьте открытым окно с параметрами для подключения – ряд из них нужно будет скопировать в код прошивки.

Параметры для подключения, необходимые для создания прошивки

8 - Перейдите в скачанный репозиторий прошивки и откройте файл /src/main.h и внесите следующие изменения:

  • исправьте значение brPort на “11883” (порт, указанный в информации о подключении для Sandbox URL),
  • скопируйте идентификатор продукта и вставьте его в поля firmwareName и productId,
  • укажите собственное название продукта вместо того, что указано по умолчанию, в поле deviceName.

Параметры для подключения в коде прошивки

9 - Сохраните изменения в коде прошивки и прошейте с ее помощью свое устройство – то, на котором уже стоит прошивка на базе ESPHome.

Обратите внимание! Если на микроконтроллер уже записана прошивка, не забудьте удалить ее согласно документации.

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

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

Подключение к Wi-Fi сети устройства для перехода во встроенный веб-интерфейс

11 - Перейдите по ссылке http://192.168.4.1/ – откроется веб-интерфейс устройства.

Веб-интерфейс устройства

12 - Скопируйте в поля на вкладке Credentials значения из окна “Информация о подключении”:

  • в поле Login – значение “Логин пользователя”,
  • в поле Token – значение “Sandbox токен” ,
  • в поле Hostname (под спойлером Advanced) введите значение “cloud.2smart.com”,
  • в поле Broker port введите значение “11883”,
  • в поле Device ID скопируйте значение “Идентификатор Sandbox устройства”.

После заполнения всех полей нажмите Save.

Введение параметров для подключения в веб-интерфейсе устройства

13 - Убедитесь, что ваш компьютер по-прежнему подключен к точке доступа Wi-Fi устройства. Перейдите на вкладку Wi-Fi и нажмите кнопку Scan.

Поиск доступных Wi-Fi сетей

14 - Выберите свою Wi-Fi сеть в списке и введите пароль для доступа к ней – это нужно, чтобы ваше устройство подключилось к тестовому окружению платформы.

Обратите внимание! Устройства на основе микроконтроллера ESP32 поддерживают только Wi-Fi сети с частотным диапазоном 2,4 ГГц!

Выбор Wi-Fi сети для использования тестовым устройством

15 - Вернитесь к своей Wi-Fi сети и перейдите в кабинет вендора. На странице продукта закройте окно с информацией о подключении. Обратите внимание на статус устройства – после внесения необходимых настроек в веб-интерфейсе статус должен измениться на Ready.

Уведомление об успешном подключении тестового устройства к платформе

16- Нажав на ссылку “Предпросмотр состояния”, вы увидите актуальные данные сенсоров устройства.

Предпросмотр данных сенсоров устройства

17 - Нажмите кнопку “Создать интерфейс” и настройте внешний вид мобильного приложения для управления устройством. Обратите внимание, что прошивка Wi-Fi реле на основе SDK сделала доступными виджеты для работы с обновлениями и уведомлениями.

Создание интерфейса

Рекомендуем создать отдельную вкладку в интерфейсе приложения для виджетов, связанных с обновлением прошивки. В данном примере создано шесть таких виджетов на вкладке Firmware:

  • переключатель Auto Update – включение автоматического обновления прошивки,
  • кнопка Update – принудительный запуск обновления прошивки по нажатию,
  • виджет TimePicker для настройки точного времени суток, когда устройство будет искать новую версию прошивки для автоматического обновления,
  • текстовый виджет со статусом обновления,
  • текстовый виджет с номером версии актуальной прошивки на устройстве,
  • текстовый виджет с IP адресом веб-панели устройства.

Интерфейс мобильного приложения – вкладка Firmware

Для настройки уведомлений рекомендуем создать вкладку Notifications и добавить в нее два виджета:

  • переключатель System для системных уведомлений (для Wi-Fi реле это сообщения о переключении реле физической кнопкой на корпусе),
  • переключатель Update для уведомлений об обновлениях прошивки.

Интерфейс мобильного приложения – вкладка Notifications

18 - После сохранения настроенного интерфейса нажмите на ссылку “Загрузить прошивку” и загрузите на платформу готовый файл firmware.bin, который находится в папке с прошивкой .pio/build/esp32ev/.

Ссылка для загрузки файла прошивки на платформу

19 - Нажмите “Опубликовать” и подтвердите свое желание разместить новый продукт на платформе.

Публикация нового продукта

Публикация нового продукта

20 - Поскольку на платформе было создано новое устройство, удалите прежний вариант из приложения 2Smart Cloud и привяжите устройство снова по стандартной процедуре сопряжения.

Интерфейс управления новым устройством дает дополнительные возможности, настроенные в кабинете вендора: управление обновлениями прошивки по воздуху, настройка уведомлений от устройства. В случае с Wi-Fi реле это именно то, что требовалось получить от Custom прошивки.

Интерфейс управления устройством в мобильном приложении 2Smart  Cloud

Интерфейс настройки обновлений прошивки устройства в мобильном приложении 2Smart Cloud

Интерфейс настройки уведомлений от устройства в мобильном приложении 2Smart Cloud

На этом все. Custom прошивка была залита на то же устройство, которое до этого было прошито ESPHome. Убедившись, что Wi-Fi реле работает без сбоев и управляется из мобильного приложения, можно перепрошить всю серию устройств. Это будет последнее обновление прошивки через USB-кабель – следующие обновления благодаря использованию кастомной прошивки на SDK будут приходить по воздуху.

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

Ссылки:


Все статьи о создании и поддержке IoT устройства в 2Smart Cloud:

  1. Как создать IoT устройство без микроконтроллера и подключить его к платформе
  2. Как создать Wi-Fi реле с управлением через мобильное приложение и Telegram бота
  3. Как подключить IoT устройство к платформе – быстрый способ
  4. Как создать IoT устройство на печатной плате – от прототипа к реальному продукту
  5. Как написать прошивку для IoT устройства на базе SDK
  6. Как за 5 минут обновить прошивку и мобильное приложение готовых устройств
  7. Сбор и анализ статистики – полезный инструмент для улучшения продукта
Made on
Tilda