OTADrive сервер и его аналоги (обновление firmware по воздуху)...

AlexArGC
AlexArGC аватар
Offline
Зарегистрирован: 18.11.2016

Всем доброго дня, дорогие форумчане!

Озадачился я на досуге удаленным обновлением прошивок на ESP32, для новых устройств.

Наткнулся на условно бесплатный OTADrive, попробовал. Продукт понравился, и библиотека тебе готовая и UI через цуи-морду все хорошо, НО:

1. Долго ли они проживут.
2. Тариф дороговат.
3. Надо запустить свой сервис, из-за первых 2-х опасений.
4. Писать свое долго...

Может кто знает существуют ли бесплатные аналоги на GitHub (и др.) простеньких серверов OTA с похожим принципом построения? Девайсов может быть и больше 30 будет, а платить 99$ не с чего :-)

Исхожу из потребностей:

1. Загрузка и управлением прошивками через веб-морду.
2. Готовая библиотека для Arduino или PlatformIO.
3. Желательно индикация процесса загрузки прошивки.
4. Не ограниченное число девайсов.

P.S. Заранее спасибо, что читаете мой вопрос. Но отвечать не нужно если не знаете :-)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

подпишусь

SAB
Offline
Зарегистрирован: 27.12.2016
const char* serverIndex = 
"<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>"
"<form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>"
   "<input type='file' name='update'>"
        "<input type='submit' value='Update'>"
    "</form>"
 "<div id='prg'>progress: 0%</div>"
 "<script>"
  "$('form').submit(function(e){"
  "e.preventDefault();"
  "var form = $('#upload_form')[0];"
  "var data = new FormData(form);"
  " $.ajax({"
  "url: '/update',"
  "type: 'POST',"
  "data: data,"
  "contentType: false,"
  "processData:false,"
  "xhr: function() {"
  "var xhr = new window.XMLHttpRequest();"
  "xhr.upload.addEventListener('progress', function(evt) {"
  "if (evt.lengthComputable) {"
  "var per = evt.loaded / evt.total;"
  "$('#prg').html('progress: ' + Math.round(per*100) + '%');"
  "}"
  "}, false);"
  "return xhr;"
  "},"
  "success:function(d, s) {"
  "console.log('success!')"
 "},"
 "error: function (a, b, c) {"
 "}"
 "});"
 "});"
 "</script>";

 

void loop(void) {
  server.handleClient();
  delay(1);
}

Вот бесплатное обновление прошивки по воздуху. Показывает проценты загрузки. После загрузки перезагружает ESP32

rkit
Offline
Зарегистрирован: 23.11.2016

В esp-idf есть готовое обновление по http с сервера. Соответственно остается выложить прошивку на сервер и реализовать механизм сигнализации об обновлении, который и так должен быть, если это какая-то реальная сеть. Всё пишется дня за 3.