большое обновление веба и прошивки

This commit is contained in:
Dmitry Borisenko
2023-06-19 18:04:00 +02:00
parent 37e9f98ce2
commit bb1359adab
16 changed files with 530 additions and 21 deletions

View File

@@ -1,9 +1,5 @@
#include "DeviceList.h"
// данная функция не записывает поле status из этого следует что поле равно false и поэтому весь список устройств отдаваемый мк
// уходит со статусом для всех устройств - offline
// приложение svelte хранит свой список и в нем поддерживает корректные статусы, а при получении этого списка
// лишь изменяет в своем те элементы массива которые добавились новые, не трогая остальные
const String getThisDevice() {
String thisDevice = "{}";
// jsonWriteStr_(thisDevice, F("devicelist_"), ""); // метка для парсинга - она не нужна теперь
@@ -11,6 +7,10 @@ const String getThisDevice() {
jsonWriteStr_(thisDevice, F("ip"), jsonReadStr(settingsFlashJson, F("ip")));
jsonWriteStr_(thisDevice, F("id"), jsonReadStr(settingsFlashJson, F("id")));
jsonWriteStr_(thisDevice, F("name"), jsonReadStr(settingsFlashJson, F("name")));
// приложение svelte хранит свой список и в нем поддерживает корректные статусы, а при получении этого списка
// лишь изменяет в своем те элементы массива которые добавились новые, не трогая остальные
jsonWriteBool_(thisDevice, F("status"), false);
jsonWriteInt_(thisDevice, F("fv"), FIRMWARE_VERSION);
thisDevice = "[" + thisDevice + "]";
return thisDevice;
}

View File

@@ -93,7 +93,7 @@ void setup() {
Serial.println(F("--------------started----------------"));
// создание экземпляров классов
// myNotAsyncActions = new NotAsync(do_LAST);
// myNotAsyncActions = new NotAsync(do_LAST);
// инициализация файловой системы
fileSystemInit();
@@ -101,6 +101,9 @@ void setup() {
Serial.println("FIRMWARE NAME " + String(FIRMWARE_NAME));
Serial.println("FIRMWARE VERSION " + String(FIRMWARE_VERSION));
Serial.println("WEB VERSION " + getWebVersion());
const String buildTime = String(BUILD_DAY) + "/" + String(BUILD_MONTH) + "/" + String(BUILD_YEAR) + " " + String(BUILD_HOUR) + ":" + String(BUILD_MIN) + ":" + String(BUILD_SEC);
Serial.println("BUILD TIME " + buildTime);
jsonWriteStr_(errorsHeapJson, F("bt"), buildTime);
Serial.println(F("------------------------"));
// получение chip id

View File

@@ -48,17 +48,19 @@ bool upgradeFS() {
#endif
#ifdef ESP32
httpUpdate.rebootOnUpdate(false);
//обновляем little fs с помощью метода обновления spiffs
// обновляем little fs с помощью метода обновления spiffs
HTTPUpdateResult retFS = httpUpdate.updateSpiffs(wifiClient, getBinPath("littlefs.bin"));
#endif
//если FS обновилась успешно
// если FS обновилась успешно
if (retFS == HTTP_UPDATE_OK) {
SerialPrint("!!!", F("Update"), F("FS upgrade done!"));
handleUpdateStatus(true, UPDATE_FS_COMPLETED);
ret = true;
} else {
handleUpdateStatus(true, UPDATE_FS_FAILED);
}
handleUpdateStatus(true, UPDATE_FS_FAILED);
return ret;
}
@@ -72,7 +74,7 @@ bool upgradeBuild() {
handleUpdateStatus(true, PATH_ERROR);
return ret;
}
#if defined (esp8266_4mb) || defined (esp8266_1mb) || defined (esp8266_1mb_ota) || defined (esp8266_2mb) || defined (esp8266_2mb_ota)
#if defined(esp8266_4mb) || defined(esp8266_1mb) || defined(esp8266_1mb_ota) || defined(esp8266_2mb) || defined(esp8266_2mb_ota)
ESPhttpUpdate.rebootOnUpdate(false);
t_httpUpdate_return retBuild = ESPhttpUpdate.update(wifiClient, getBinPath("firmware.bin"));
#endif
@@ -81,13 +83,14 @@ bool upgradeBuild() {
HTTPUpdateResult retBuild = httpUpdate.update(wifiClient, getBinPath("firmware.bin"));
#endif
//если BUILD обновился успешно
// если BUILD обновился успешно
if (retBuild == HTTP_UPDATE_OK) {
SerialPrint("!!!", F("Update"), F("BUILD upgrade done!"));
handleUpdateStatus(true, UPDATE_BUILD_COMPLETED);
ret = true;
} else {
handleUpdateStatus(true, UPDATE_BUILD_FAILED);
}
handleUpdateStatus(true, UPDATE_BUILD_FAILED);
return ret;
}
@@ -132,5 +135,5 @@ void saveUserDataToFlash() {
void handleUpdateStatus(bool send, int state) {
jsonWriteInt_(errorsHeapJson, F("upd"), state);
if (!send) sendStringToWs("errors", errorsHeapJson, -1);
if (send) sendStringToWs("errors", errorsHeapJson, -1);
}

View File

@@ -163,9 +163,15 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// Страница веб интерфейса list
//----------------------------------------------------------------------//
// отвечаем данными на запрос страницы
// отвечаем данными на запрос страницы list
if (headerStr == "/list|") {
sendStringToWs("settin", settingsFlashJson, num);
// отправим список устройств в зависимости от того что выбрал user
// sendDeviceList(num);
}
// отвечаем на запрос списка устройств (это отдельный запрос который делает приложение при подключении)
if (headerStr == "/devlist|") {
// отправим список устройств в зависимости от того что выбрал user
sendDeviceList(num);
}