mirror of
https://github.com/IoTManagerProject/IoTManagerWeb.git
synced 2026-03-26 15:02:21 +03:00
добавил ota
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
//****************************************************constants section*********************************************************/
|
//****************************************************constants section*********************************************************/
|
||||||
//******************************************************************************************************************************/
|
//******************************************************************************************************************************/
|
||||||
let version = 404;
|
let version = 405;
|
||||||
let debug = true;
|
let debug = true;
|
||||||
let LOG_MAX_MESSAGES = 10;
|
let LOG_MAX_MESSAGES = 10;
|
||||||
let reconnectTimeout = 20000;
|
let reconnectTimeout = 20000;
|
||||||
@@ -33,8 +33,8 @@
|
|||||||
|
|
||||||
//****************************************************variable section**********************************************************/
|
//****************************************************variable section**********************************************************/
|
||||||
//******************************************************************************************************************************/
|
//******************************************************************************************************************************/
|
||||||
//let myip = document.location.hostname;
|
let myip = document.location.hostname;
|
||||||
let myip = "192.168.88.224";
|
//let myip = "192.168.8.127";
|
||||||
|
|
||||||
//Flags
|
//Flags
|
||||||
let firstDevListRequest = true;
|
let firstDevListRequest = true;
|
||||||
@@ -53,6 +53,10 @@
|
|||||||
let listReady = false;
|
let listReady = false;
|
||||||
let systemReady = false;
|
let systemReady = false;
|
||||||
|
|
||||||
|
//update esp
|
||||||
|
let versionsList = {};
|
||||||
|
let choosingVersion = undefined;
|
||||||
|
|
||||||
//configuration
|
//configuration
|
||||||
let configJson = [];
|
let configJson = [];
|
||||||
let configJsonFlag = false;
|
let configJsonFlag = false;
|
||||||
@@ -459,8 +463,9 @@
|
|||||||
if (debug) console.log("✔✔", "list data parced");
|
if (debug) console.log("✔✔", "list data parced");
|
||||||
listReady = true;
|
listReady = true;
|
||||||
}
|
}
|
||||||
if (currentPageName === "/system|" && errorsJsonParced) {
|
if (currentPageName === "/system|" && errorsJsonParced && settingsJsonParced) {
|
||||||
clearParcedFlags();
|
clearParcedFlags();
|
||||||
|
getVersionsList();
|
||||||
if (debug) console.log("✔✔", "system data parced");
|
if (debug) console.log("✔✔", "system data parced");
|
||||||
systemReady = true;
|
systemReady = true;
|
||||||
}
|
}
|
||||||
@@ -850,14 +855,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getRequestJson(url) {
|
async function getRequestJson(url) {
|
||||||
let res = await fetch(url, {
|
try {
|
||||||
mode: "no-cors",
|
let res = await fetch(url, {
|
||||||
method: "GET",
|
mode: "no-cors",
|
||||||
});
|
method: "GET",
|
||||||
if (res.ok) {
|
});
|
||||||
configSetupJson = await res.json();
|
if (res.ok) {
|
||||||
} else {
|
configSetupJson = await res.json();
|
||||||
console.log("error", res.status);
|
} else {
|
||||||
|
console.log("error", res.status);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -909,6 +918,52 @@
|
|||||||
wsSendMsg(selectedWs, '/rorre|{"' + alarmKey + '":0}');
|
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********************************************************************/
|
//*******************************************************initialisation********************************************************************/
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
console.log("[i]", "mounted");
|
console.log("[i]", "mounted");
|
||||||
@@ -997,7 +1052,7 @@
|
|||||||
<ListPage show={listReady} deviceList={deviceList} showInput={showInput} addDevInList={() => addDevInList()} newDevice={newDevice} sendToAllDevices={(msg) => sendToAllDevices(msg)} />
|
<ListPage show={listReady} deviceList={deviceList} showInput={showInput} addDevInList={() => addDevInList()} newDevice={newDevice} sendToAllDevices={(msg) => sendToAllDevices(msg)} />
|
||||||
</Route>
|
</Route>
|
||||||
<Route path="/system">
|
<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>
|
||||||
|
|
||||||
<!--<Route path="/utilities">-->
|
<!--<Route path="/utilities">-->
|
||||||
|
|||||||
@@ -114,8 +114,10 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button class="btn-lg mb-2" on:click={() => saveConfig()}>{"Сохранить"}</button>
|
<div class="grd-2col1">
|
||||||
<button class="btn-lg mb-2" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>
|
<button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button>
|
||||||
|
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>
|
||||||
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
|
|||||||
@@ -63,6 +63,14 @@
|
|||||||
<input bind:value={settingsJson.routerpass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
|
<input bind:value={settingsJson.routerpass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
|
||||||
</div>
|
</div>
|
||||||
</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}
|
{#if errorsJson.passer === 1}
|
||||||
<div class="grd-1col1">
|
<div class="grd-1col1">
|
||||||
<Alarm title="Введен неправильный пароль" />
|
<Alarm title="Введен неправильный пароль" />
|
||||||
|
|||||||
@@ -62,8 +62,10 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button class="btn-lg mb-2" on:click={() => ((showInput = !showInput), addDevInList())}>{showInput ? "Сохранить" : "Добавить устройство"}</button>
|
<div class="grd-2col1">
|
||||||
<button class="btn-lg" on:click={(msg) => sendToAllDevices("/reboot|")}>{"Перезагрузить все устройства"}</button>
|
<button class="btn-lg" on:click={() => ((showInput = !showInput), addDevInList())}>{showInput ? "Сохранить" : "Добавить устройство"}</button>
|
||||||
|
<button class="btn-lg" on:click={(msg) => sendToAllDevices("/reboot|")}>{"Перезагрузить все устройства"}</button>
|
||||||
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
<Alarm>
|
<Alarm>
|
||||||
<p>Прошитые прошивкой IoT Manager устройства появятся в списке автоматически в течении минуты. Для обновления названий устройств нужно обновить страницу. Устройства должны быть подключены к одному wifi роутеру.</p>
|
<p>Прошитые прошивкой IoT Manager устройства появятся в списке автоматически в течении минуты. Для обновления названий устройств нужно обновить страницу. Устройства должны быть подключены к одному wifi роутеру.</p>
|
||||||
|
|||||||
@@ -123,8 +123,14 @@
|
|||||||
export let version;
|
export let version;
|
||||||
|
|
||||||
export let errorsJson;
|
export let errorsJson;
|
||||||
|
|
||||||
export let rebootEsp = () => {};
|
export let rebootEsp = () => {};
|
||||||
|
|
||||||
|
export let versionsList;
|
||||||
|
export let choosingVersion;
|
||||||
|
|
||||||
|
export let startUpdate = () => {};
|
||||||
|
|
||||||
export let show;
|
export let show;
|
||||||
|
|
||||||
export let cancelAlarm = (alarmKey) => {};
|
export let cancelAlarm = (alarmKey) => {};
|
||||||
@@ -141,6 +147,20 @@
|
|||||||
<p class="text-gray-500 font-bold">{errorsJson.bn}</p>
|
<p class="text-gray-500 font-bold">{errorsJson.bn}</p>
|
||||||
</div>
|
</div>
|
||||||
</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="crd-itm-psn">
|
||||||
<div class="w-3/4">
|
<div class="w-3/4">
|
||||||
<p class="wgt-dscr-stl">Версия прошивки</p>
|
<p class="wgt-dscr-stl">Версия прошивки</p>
|
||||||
@@ -236,7 +256,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="grd-1col1">
|
<div class="grd-1col1">
|
||||||
<Card>
|
<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>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
|
|||||||
Reference in New Issue
Block a user