diff --git a/src/App.svelte b/src/App.svelte index 232279a..f68393e 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -23,7 +23,7 @@ //****************************************************constants section*********************************************************/ //******************************************************************************************************************************/ - let version = 404; + let version = 405; let debug = true; let LOG_MAX_MESSAGES = 10; let reconnectTimeout = 20000; @@ -33,8 +33,8 @@ //****************************************************variable section**********************************************************/ //******************************************************************************************************************************/ - //let myip = document.location.hostname; - let myip = "192.168.88.224"; + let myip = document.location.hostname; + //let myip = "192.168.8.127"; //Flags let firstDevListRequest = true; @@ -53,6 +53,10 @@ let listReady = false; let systemReady = false; + //update esp + let versionsList = {}; + let choosingVersion = undefined; + //configuration let configJson = []; let configJsonFlag = false; @@ -459,8 +463,9 @@ if (debug) console.log("✔✔", "list data parced"); listReady = true; } - if (currentPageName === "/system|" && errorsJsonParced) { + if (currentPageName === "/system|" && errorsJsonParced && settingsJsonParced) { clearParcedFlags(); + getVersionsList(); if (debug) console.log("✔✔", "system data parced"); systemReady = true; } @@ -850,14 +855,18 @@ } async function getRequestJson(url) { - let res = await fetch(url, { - mode: "no-cors", - method: "GET", - }); - if (res.ok) { - configSetupJson = await res.json(); - } else { - console.log("error", res.status); + try { + let res = await fetch(url, { + mode: "no-cors", + method: "GET", + }); + if (res.ok) { + configSetupJson = await res.json(); + } else { + console.log("error", res.status); + } + } catch (e) { + console.log(e); } } @@ -909,6 +918,52 @@ wsSendMsg(selectedWs, '/rorre|{"' + alarmKey + '":0}'); } + //************************************************update esp firm************************************************************// + + async function getVersionsList() { + try { + let url = settingsJson.serverip + "/iotm/ver.json"; + console.log("url", url); + let res = await fetch(url, { + mode: "cors", + method: "GET", + }); + if (res.ok) { + versionsList = await res.json(); + versionsList = versionsList[errorsJson.bn]; + choosingVersion = errorsJson.bver; + console.log(JSON.stringify(versionsList)); + } else { + choosingVersion = undefined; + console.log("error, versions list not received", res.statusText); + } + } catch (e) { + choosingVersion = undefined; + console.log("error, versions list not received"); + console.log(e); + } + } + + function startUpdate() { + if (choosingVersion !== undefined) { + if (choosingVersion === errorsJson.bver) { + window.alert("Эта версия уже установленна"); + } else { + if (confirm("Запустить обновление?")) { + console.log("start update..."); + //запишем выбранную версию в файл на esp + wsSendMsg(selectedWs, '/rorre|{"chver":' + choosingVersion + "}"); + //начнем обновление + wsSendMsg(selectedWs, "/update|"); + } else { + console.log("update canceled"); + } + } + } else { + window.alert("Версия не выбрана или сервер недоступен"); + } + } + //*******************************************************initialisation********************************************************************/ onMount(async () => { console.log("[i]", "mounted"); @@ -997,7 +1052,7 @@ addDevInList()} newDevice={newDevice} sendToAllDevices={(msg) => sendToAllDevices(msg)} /> - rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} /> + rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} versionsList={versionsList} bind:choosingVersion startUpdate={() => startUpdate()} /> diff --git a/src/pages/Config.svelte b/src/pages/Config.svelte index c2d5644..e7f30b5 100644 --- a/src/pages/Config.svelte +++ b/src/pages/Config.svelte @@ -114,8 +114,10 @@ {/each} - - +
+ + +
{:else} diff --git a/src/pages/Connection.svelte b/src/pages/Connection.svelte index b974c10..4b3cac8 100644 --- a/src/pages/Connection.svelte +++ b/src/pages/Connection.svelte @@ -63,6 +63,14 @@ +
+
+

Сервер обновления

+
+
+ +
+
{#if errorsJson.passer === 1}
diff --git a/src/pages/List.svelte b/src/pages/List.svelte index df8e59d..e953a0f 100644 --- a/src/pages/List.svelte +++ b/src/pages/List.svelte @@ -62,8 +62,10 @@ {/if} - - +
+ + +

Прошитые прошивкой IoT Manager устройства появятся в списке автоматически в течении минуты. Для обновления названий устройств нужно обновить страницу. Устройства должны быть подключены к одному wifi роутеру.

diff --git a/src/pages/System.svelte b/src/pages/System.svelte index 2795e58..0fc3964 100644 --- a/src/pages/System.svelte +++ b/src/pages/System.svelte @@ -123,8 +123,14 @@ export let version; export let errorsJson; + export let rebootEsp = () => {}; + export let versionsList; + export let choosingVersion; + + export let startUpdate = () => {}; + export let show; export let cancelAlarm = (alarmKey) => {}; @@ -141,6 +147,20 @@

{errorsJson.bn}

+
+
+

Версии прошивки на сервере

+
+
+ +
+

Версия прошивки

@@ -236,7 +256,10 @@
- +
+ + +
{:else}