Блог 2Smart (RU)

Как написать прошивку на базе SDK 2Smart Cloud

Как написать прошивку на базе SDK 2Smart Cloud
Набор средств разработки (Software Development Kit, или SDK) 2Smart Cloud предоставляет вендорам максимум возможностей, включая функционал автоматического обновления устройств по воздуху, возможность отправки уведомлений от устройства пользователю, встроенную веб-панель для настройки устройства. Развитие SDK – более приоритетная задача для команды 2Smart Cloud, чем расширение функционала альтернативных баз создания прошивки для микроконтроллера ESP32. Поэтому мы рекомендуем вендорам использовать при создании прошивки готового продукта именно этот набор инструментов, даже если прототип тестировался с прошивкой на более простой базе.

Ключевая особенность SDK – помимо готового дополнительного функционала он отвечает за интеграцию IoT устройства с платформой. Вендоры могут сосредоточиться только над описанием логики работы своего продукта.

Подробнее об отличиях SDK от альтернативного инструмента EspHome - здесь.

Разработка прошивки на базе SDK на примере простейшего устройства


Используем в качестве примера максимально простое устройство – блинкер-маячок, или подключенный к микроконтроллеру ESP32 светодиод. Вот как выглядит разработка прошивки для этого устройства на базе SDK:

1 - Скачайте наш SDK с гитхаба.

2 - Создайте новый проект в редакторе исходного кода – в нашем примере используется Visual Studio Code. Укажите название проекта, выберите соответствующую плату и фреймворк.

Создание нового проекта в Visual Studio Code

3 - Подключите необходимые библиотеки в файле platformio.ini скачанного SDK:

  • PubSubClient – для работы с MQTT,
  • AsyncWebServer – для работы веб-админки и приема учетных данных при сопряжении устройства,
  • ArduinoJSON – для работы с JSON строками,
  • NTPClient – для синхронизации текущего времени и обновления прошивки в указанное время суток.

Подключение необходимых библиотек

4 - Добавьте в platformio.ini следующий код для подключения функционала веб-интерфейса.

Подключение функционала веб-интерфейса

5 - Создайте папку для описания логики работы вашего устройства (в нашем примере – блинкера) в директории lib/ или src/.

6 - Создайте стандартные файлы с расширением .cpp и .h – в нашем примере это blink_led.cpp и blink_led.h.

7 - В файле .h создайте дочерний Property класс. При необходимости включайте в него собственные поля и методы.

Редактирование файла blink_led.h

8 - В файле .cpp опишите реализацию методов.

Редактирование файла blink_led.cpp

Пояснение к коду:

  • строки 7-11 – создается объект класса;
  • строки 13-20 – инициализация;
  • строка 17 – устанавливается значение нашего свойства, чтобы оно не было неопределенным;
  • строки 22-24 – метод обычно используется для отслеживания состояния сенсора, однако поскольку наш светодиод будет менять свое состояние только по команде с телефона, пока этот метод не нужен. Используйте такой метод для опроса кнопок или датчиков более сложных, чем блинкер, устройств;
  • строки 26-35 – метод вызывается всякий раз, когда значение сенсора изменяется пользователем с помощью приложения, и здесь необходимо описывать логику. В нашем примере на строке 27 светодиоду передается значение “вкл.” или “выкл.”. Если это значение изменилось, отправляется уведомление в мобильное приложение.

9 - Перейдите в файл main.cpp и внесите необходимые изменения.

Редактирование файла main.cpp

Пояснения:

  • строка 3 – подключение нашей библиотеки;
  • строка 4 – подключение созданного ранее свойства;
  • строка 6 – ID нашего продукта (пока он неизвестен – мы создадим новый продукт на платформе чуть позже и вернемся к правке этого файла);
  • строка 7 – имя устройства, а также название точки доступа Wi-Fi, которую устройство запустит на этапе сопряжения (введите любое значение);
  • строка 8 – номер версии прошивки (для нового устройства укажите “1”);
  • строка 10 – объект класса;
  • строка 13 – создание ноды;
  • строка 15 – создание нашего свойства для светодиода;
  • строка 17 – запуск инициализации библиотеки;
  • строка 19 – добавление циклической обработки состояний библиотекой.

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

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

Страница Продукты кабинета вендора 2Smart Cloud

2 - Выберите микроконтроллер – ESP32. Нажмите “Далее”.

Окно выбора микроконтроллера

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

Кнопка создания прошивки в кабинете вендора 2Smart Cloud

4 - Выберите базу для прошивки – Custom. Нажмите “Далее”.

Окно выбора базы прошивки

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

Ссылка Информация о подключении

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

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

7 - Скопируйте идентификатор продукта в поле product_id файла main.cpp прошивки.

8 - Выполните команду pio run -t uploadfs для загрузки файловой системы на устройство.

9 - Выполните команду pio run -t upload для загрузки прошивки на устройство.

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

11 - Войдите в веб-интерфейс устройства по ссылке http://192.168.4.1, используйте логин и пароль “admin”.

12 - На вкладке Credentials веб-интерфейса заполните все поля данными из окна “Информация о подключении”, открытого в кабинете вендора. В том числе те, что находятся под спойлером Advanced. Нажмите Save.

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

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

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

Настройки Wi-Fi в веб-интерфейсе устройства

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

Страница продукта со статусом устройства – Ready

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

16 - Загрузите прошивку на платформу и нажмите “Опубликовать” – теперь устройство можно подключить к мобильному приложению по стандартной процедуре сопряжения, оно доступно всем пользователям.

Made on
Tilda