Перейти к содержанию
Материалы раздела

OTA-обновления

OTA (Over-the-Air) обновляет прошивку устройства через сеть без физического подключения к компьютеру. Перед обновлением обеспечьте стабильное питание и не отключайте устройство от сети до завершения операции.

Сначала подключите устройство к сети через Wi-Fi или Ethernet. Например:

net.wf.setup(net.wf.mode.STA, "ssid", "password")
net.wf.start()

Затем укажите путь обработчика обновлений. Если сервер задан в конфигурации прошивки, первый аргумент можно передать как nil:

net.ota(nil, "firmware")

Путь обязателен: вызов net.ota() без него некорректен. Начальный / необязателен: модуль корректно обрабатывает оба варианта.

Если устройство поддерживает заводской раздел прошивки, функция os.factoryreset() стирает данные о выбранном OTA-разделе и перезагружает устройство с заводской прошивкой:

os.factoryreset()

net.ota([server], path [, project, reboot, verify, ssl, ask])

Запрашивает прошивку у OTA-сервера и, если сервер вернул новый образ, записывает его в следующий OTA-раздел.

Аргументы:

  • server — имя сервера без схемы и пути. Если передать nil, используется сервер из конфигурации прошивки;
  • path — путь обработчика на сервере; начальный / необязателен, значения по умолчанию нет;
  • project — необязательное имя проекта, передаваемое серверу;
  • reboot — перезагрузить устройство после успешной установки; по умолчанию true;
  • verify — проверить записанный образ перед выбором загрузочного раздела; по умолчанию true;
  • ssl — использовать HTTPS на порту 443; если false, используется HTTP на порту 80. По умолчанию true;
  • ask — только выполнить запрос и вернуть HTTP-код, не скачивая и не устанавливая образ. По умолчанию false.

При ask = true функция возвращает HTTP-код ответа сервера. В режиме установки функция ничего не возвращает. Код 471 означает, что новой прошивки нет, и не считается ошибкой. Ошибки сети, записи, проверки образа, код 470 и остальные неожиданные HTTP-коды вызывают исключение.

-- Проверить и установить обновление с пользовательского сервера.
net.ota("update.example.com", "firmware", "myproject")

-- Только запросить HTTP-код, не устанавливая образ.
local code = net.ota(
    "update.example.com",
    "firmware",
    "myproject",
    false,
    true,
    true,
    true
)
print(code)