mirror of
https://github.com/IoTManagerProject/IoTManagerWeb.git
synced 2026-03-26 23:12:34 +03:00
добавил ota
This commit is contained in:
@@ -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 @@
|
||||
<ListPage show={listReady} deviceList={deviceList} showInput={showInput} addDevInList={() => addDevInList()} newDevice={newDevice} sendToAllDevices={(msg) => sendToAllDevices(msg)} />
|
||||
</Route>
|
||||
<Route path="/system">
|
||||
<SystemPage show={systemReady} errorsJson={errorsJson} rebootEsp={() => rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} />
|
||||
<SystemPage show={systemReady} errorsJson={errorsJson} rebootEsp={() => rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} versionsList={versionsList} bind:choosingVersion startUpdate={() => startUpdate()} />
|
||||
</Route>
|
||||
|
||||
<!--<Route path="/utilities">-->
|
||||
|
||||
@@ -114,8 +114,10 @@
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
<button class="btn-lg mb-2" on:click={() => saveConfig()}>{"Сохранить"}</button>
|
||||
<button class="btn-lg mb-2" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>
|
||||
<div class="grd-2col1">
|
||||
<button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button>
|
||||
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
{:else}
|
||||
|
||||
@@ -63,6 +63,14 @@
|
||||
<input bind:value={settingsJson.routerpass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="crd-itm-psn">
|
||||
<div class="w-4/6">
|
||||
<p class="wgt-dscr-stl">Сервер обновления</p>
|
||||
</div>
|
||||
<div class="flex justify-end w-3/6">
|
||||
<input bind:value={settingsJson.serverip} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
{#if errorsJson.passer === 1}
|
||||
<div class="grd-1col1">
|
||||
<Alarm title="Введен неправильный пароль" />
|
||||
|
||||
@@ -62,8 +62,10 @@
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
<button class="btn-lg mb-2" on:click={() => ((showInput = !showInput), addDevInList())}>{showInput ? "Сохранить" : "Добавить устройство"}</button>
|
||||
<button class="btn-lg" on:click={(msg) => sendToAllDevices("/reboot|")}>{"Перезагрузить все устройства"}</button>
|
||||
<div class="grd-2col1">
|
||||
<button class="btn-lg" on:click={() => ((showInput = !showInput), addDevInList())}>{showInput ? "Сохранить" : "Добавить устройство"}</button>
|
||||
<button class="btn-lg" on:click={(msg) => sendToAllDevices("/reboot|")}>{"Перезагрузить все устройства"}</button>
|
||||
</div>
|
||||
</Card>
|
||||
<Alarm>
|
||||
<p>Прошитые прошивкой IoT Manager устройства появятся в списке автоматически в течении минуты. Для обновления названий устройств нужно обновить страницу. Устройства должны быть подключены к одному wifi роутеру.</p>
|
||||
|
||||
@@ -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 @@
|
||||
<p class="text-gray-500 font-bold">{errorsJson.bn}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="crd-itm-psn">
|
||||
<div class="w-3/4">
|
||||
<p class="wgt-dscr-stl">Версии прошивки на сервере</p>
|
||||
</div>
|
||||
<div class="flex justify-center w-1/4">
|
||||
<select class="border border-indigo-500 border-4" bind:value={choosingVersion}>
|
||||
{#each Object.entries(versionsList) as [key, param]}
|
||||
<option value={param}>
|
||||
{param}
|
||||
</option>
|
||||
{/each}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="crd-itm-psn">
|
||||
<div class="w-3/4">
|
||||
<p class="wgt-dscr-stl">Версия прошивки</p>
|
||||
@@ -236,7 +256,10 @@
|
||||
</div>
|
||||
<div class="grd-1col1">
|
||||
<Card>
|
||||
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
|
||||
<div class="grd-2col1">
|
||||
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>
|
||||
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
{:else}
|
||||
|
||||
Reference in New Issue
Block a user