Блог 2Smart (RU)

ESPHome без параметров Wi-Fi в прошивке – это возможно!

ESPHome без параметров Wi-Fi в прошивке – это возможно!
Известный недостаток ESPHome – параметры Wi-Fi (SSID и пароль) нужно вшивать непосредственно в код прошивки. Это удобно, если устройство сделано для личных нужд – оно автоматически выходит в сеть при первом включении. Но проблемы возникают, если хочется масштабировать производство устройств и выпускать их не только для себя. Решение этой проблемы есть – IoT платформа 2Smart Cloud позволяет создать ESPHome прошивку без параметров Wi-Fi конечного пользователя. Данные передаются из мобильного приложения при первом включении устройства, их также можно изменить без перепрошивки, если параметры Wi-Fi изменились. Рассказываем, как это реализовано.

Как 2Smart Cloud работает с ESPHome


Платформа 2Smart Cloud дает возможность взять главное от ESPHome – простоту создания прошивки. Описать логику работы устройства можно по документации к ESPHome или опираясь на готовые примеры. Сделать это можно без знания основ программирования.

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

Код ESPHome в кабинете разработчика

Благодаря такому решению все, что нужно для интеграции устройства в платформу, встраивается в код автоматически.

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

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

Сопряжение устройства с прошивкой на базе ESPHome с мобильным приложением


Процедура сопряжения в 2Smart Cloud – стандартная для “умных” устройств в любой экосистеме:

  • пользователь указывает параметры своей Wi-Fi сети в мобильном приложении;

Сопряжение устройства с мобильным приложением

Сопряжение устройства с мобильным приложением

  • мобильное устройство подключается к точке доступа Wi-Fi, которую открывает само устройство при первом запуске;

Сопряжение устройства с мобильным приложением

Сопряжение устройства с мобильным приложением

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

Сопряжение устройства с мобильным приложением

Сопряжение устройства с мобильным приложением

Сопряжение устройства с мобильным приложением

Сопряжение устройства с мобильным приложением

Аналогичная процедура используется, если прошивка для IoT устройства написана с помощью других инструментов – например, SDK 2Smart Cloud. Таким образом, удается поставить ESPHome в один ряд с профессиональными инструментами разработчика и использовать эту систему в том числе для создания коммерческих продуктов.

Сброс настроек без перепрошивки


Дополнительное преимущество адаптированной прошивки ESPHome, которая собирается средствами платформы 2Smart Cloud – возможность сбросить устройство до первоначальных “заводских настроек” без перепрошивки. Сброс настроек означает, что устройство вновь запускает точку доступа Wi-Fi и готово к сопряжению с мобильным приложением.

Такая возможность предусмотрена для таких случаев:

  • устройство передано новому владельцу;
  • владелец прежний, но параметры Wi-Fi изменились (например, был куплен новый роутер);
  • владелец по ошибке передал параметры Wi-Fi сети с частотным диапазоном 5 ГГц, который не поддерживается ESP32, ему нужно указать сеть с диапазоном 2,4 ГГц.

Технически сброс настроек реализован расширением возможностей стандартного компонента gpio platform. Чтобы вернуть устройство к первоначальным настройкам, пользователю нужно нажать физическую кнопку Reset на устройстве и удерживать ее в таком состоянии в течение трёх секунд.

Сброс настроек простейшего устройства на ESP32 – блинкера

Пример ESPHome кода простейшего устройства (блинкера) с кнопкой Reset:

    binary_sensor:
      - platform: reset_sensor
        pin:
          number: GPIO0
          mode: INPUT_PULLUP
          inverted: true
        name: Reset button
        filters:
          - delayed_on: 1s
    switch:
      - platform: gpio
        id: l2
        name: GPIO2
        pin:
          number: GPIO2
    sensor:
      - platform: wifi_signal
        name: WiFi1 Signal
        update_interval: 30s
        id: wifi_config

Подробно об использовании ESPHome в 2Smart Cloud – в документации для ESPHome на гитхабе.

Made on
Tilda