Блог 2Smart (UK)

Прошивка на базі ESPHome та SDK платформи – головні відмінності

Прошивка на базі ESPHome та SDK платформи – головні відмінності
Розробникам, які використовують у своїх проектах мікроконтролер ESP32, доступні два інструменти розробки прошивки: ESPHome та Software Development Kit (SDK) 2Smart Cloud. Розповідаємо про плюси та мінуси цих інструментів та демонструємо на простому прикладі, як працювати з кожним із них.

Головні відмінності ESPHome та SDK


Ключова перевага набору бібліотек та інструментів ESPHome – його простота. Для розробки прошивки на цій базі навіть не потрібне знання принципів програмування. Головний недолік – обмежений функціонал прошивки.

Розроблений командою 2Smart Cloud SDK підтримує всі корисні механіки та повну інтеграцію пристрою з платформою. Функціонал прошивки, створеної на такій базі – набагато ширший, ніж у випадку з ESPHome. Крім того, розвиток SDK - більш пріоритетне завдання для команди, тому всі нові можливості платформи будуть перш за все з'являтися в цій базі. Отже, розробники, які вибрали варіант прошивки на SDK, зможуть швидше використовувати нововведення 2Smart Cloud у своїх продуктах.

Розробники можуть використовувати викладені на гітхаб 2Smart Cloud приклади коду на базі SDK як шаблони прошивки своїх пристроїв, як завгодно змінюючи і модифікуючи код.

Основний принцип прошивки, створеної з використанням SDK – код для інтеграції пристрою з платформою вже написано, розробнику достатньо описати логіку роботи свого продукту.

Порівняльна таблиця демонструє, який функціонал доступний при використанні кожного з варіантів:

Функціонал, доступний при використанні ESPHome і SDK

Який із варіантів бази прошивки для мікроконтролера ESP32 вибрати – залежить від потреб розробника та його ресурсів. У багатьох випадках оптимальним варіантом є поєднання двох способів – через свою простоту ESPHome чудово підходить для швидкого підключення та початкового тестування концепту пристрою, а прошивка на базі SDK може бути написана для подальших ітерацій прототипу та серійної версії продукту.

Нижче буде показано, як розробити прошивку кожним із двох способів. Як приклад буде використано найпростіший пристрій – підключений до ESP32 світлодіод ( блінкер ), керувати яким можна буде з мобільного додатка та з використанням додаткових способів, доступних у 2Smart Cloud.

Розробка прошивки для блінкера на базі ESPHome


Створити новий продукт у 2Smart Cloud можна двома способами: за допомогою покрокового помічника або без його використання. Докладніше про відмінності двох способів – у блозі платформи. У цьому прикладі буде використаний варіант без покрокового помічника. Альтернативний спосіб із візардом нічим принципово не відрізняється.

1. На сторінці "Products" кабінету вендора натисніть "Add Product" (аналогічна кнопка на головній сторінці запускає варіант із візардом).

Сторінка “Products” кабінету вендора 2Smart Cloud

2. Виберіть мікроконтролер – ESP32. Натисніть "Next".

Вікно вибору мікроконтролера

3. Натисніть кнопку «Add Firmware».

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

4. Виберіть базу для прошивки – ESPHome. Натисніть "Next".

Вікно вибору бази прошивки

5. Вставте код прошивки пристрою, розроблений за документацією для ESPHome – як приклад за замовчуванням використовується саме код блінкера. Натисніть "Save".

Налаштування прошивки ESPHome

6. Натисніть “Build firmware” для тестового пристрою – вона необхідна для підключення до платформи та тестування пристрою до публікації.

Посилання на інструмент збірки прошивки тестового пристрою

7. Вкажіть дані вашої домашньої або офісної мережі Wi-Fi – вони будуть внесені в прошивку для швидкого підключення пристрою до мережі.

Зверніть увагу! Мікроконтролер ESP32 підтримує лише мережі з частотним діапазоном 2,4 ГГц!

Вікно налаштувань Wi-Fi

8. Дочекайтесь, доки буде зібраний файл прошивки. У випадку з ESPHome прошивка збирається на сервері, вам не потрібно використовувати спеціальні додаткові програми на своєму комп'ютері.

Збірка прошивки тестового пристрою

9. Натисніть "Download".

Посилання на завантаження архіву з прошивкою

10. Використовуйте завантажений файл для прошивки свого пристрою – інструкція наводиться всередині архіву файлу readme.md.

Вміст архіву з прошивкою

11. Перевірте роботу продукту, підключившись до 2Smart Cloud.

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

Докладно про ці етапи роботи над продуктом – у статті про підключення до платформи Wi-Fi реле.

12. Переконавшись, що пристрій працює так, як ви планували, зберіть фінальну версію прошивки. Для цього натисніть "Build  firmware" серійного пристрою.

На відміну від прошивки тестового пристрою, фінальна версія не включатиме дані вашої Wi-Fi мережі та інші специфічні рядки коду, необхідні для тестування продукту.

Посилання на інструмент збірки серійної прошивки

13. Після збірки фінальної прошивки скачайте архів та встановіть її на всі ваші пристрої за аналогією до встановлення тестової версії коду.

14. Опублікуйте продукт на платформі. Не забудьте заповнити інформацію про пристрій, вказавши назву, опис та завантаживши логотип з фотографією продукту для маркета 2Smart Cloud.

У результаті вийшов працездатний IoT пристрій, який можна прив'язати до мобільного додатку 2Smart Cloud та керувати ним зі смартфона. Однак через обмеження ESPHome вендор і користувачі стикаються з такими труднощами:

  • немає автоматичного оновлення прошивки - потрібно змушувати користувача запускати процес вручну,
  • не підтримується надсилання повідомлень про стан пристрою в мобільний додаток – для більш складних, ніж блінкер-маячок, пристроїв це може бути важливим,
  • відсутня вбудована веб-панель адміністратора – також може бути корисною та затребуваною, якщо потрібний функціонал налаштування пристрою в локальній мережі без мобільного додатка.

Розробка прошивки з використанням SDK


Набір засобів розробки 2Smart Cloud вирішує ці проблеми, тому більшості розробників рекомендується використовувати при створенні прошивки готового продукту саме його, навіть якщо прототип тестувався з прошивкою на базі ESPHome.

Ось як виглядає розробка прошивки для того ж пристрою – блінкера-маячка – на
базі SDK:

1. Завантажте наш SDK з гітхабу - https://github.com/2SmartCloud/2smart-cloud-cpp-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. На сторінці “Products” кабінету розробника натисніть кнопку “Add product” .

Сторінка Products кабінету розробника 2Smart Cloud

2. Виберіть мікроконтролер – ESP32. Натисніть "Next".

Вікно вибору мікроконтролера

3. Натисніть кнопку «Add firmware».

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

4. Виберіть базу для прошивки – Custom. Натисніть "Next".

Вікно вибору бази прошивки

5. Натисніть посилання “Connection info”.

Посилання “Connection info”

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” веб-інтерфейсу заповніть усі поля даними з вікна "Connection info", відкритого в кабінеті вендора. У тому числі ті, що знаходяться у вкладці Advanced. Натисніть Save.

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

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

Зверніть увагу! Пристрої на ESP32 підтримують лише Wi-Fi мережі з частотним діапазоном 2,4 ГГц!

Установки Wi-Fi у веб-інтерфейсі пристрою

14. Повернувшись до звичайної Wi-Fi мережі, ви побачите, що статус пристрою на платформі змінився на Ready – це означає, що блінкер підключився до платформи.

Сторінка продукту зі статусом пристрою – Ready

Налаштуйте інтерфейс мобільного додатка для керування пристроєм та перевірте його працездатність у тестовому середовищі. Докладно про ці етапи роботи над продуктом – у статті про підключення до платформи Wi-Fi реле.

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

Висновки


Кожен із розглянутих інструментів розробки прошивки для мікроконтролера ESP32 – ESPHome та SDK – має свої плюси та мінуси. Оптимальним варіантом під час створення прототипу часто стає грамотне використання переваг обох баз. ESPHome дає можливість швидко перевірити справедливість концепції пристрою, а прошивка на основі SDK надає максимально гнучкі можливості щодо тонкого налаштування його функціоналу та спрощує процес підтримки.

Ми плануємо розвивати в рамках 2Smart Cloud обидва інструменти. У ESPHome будуть додані можливості, які сьогодні відсутні, а SDK отримає нові базові абстракції для швидкого вирішення типових завдань.

Made on
Tilda