This commit is contained in:
Dmitry Borisenko
2022-02-22 20:20:59 +01:00
parent 35e0abbbd8
commit 91a6fac56e
3 changed files with 72 additions and 54 deletions

View File

@@ -4,7 +4,7 @@
<meta charset='utf-8'> <meta charset='utf-8'>
<meta name='viewport' content='width=device-width,initial-scale=1'> <meta name='viewport' content='width=device-width,initial-scale=1'>
<title>IoT Manager</title> <title>IoT Manager 4.0.8</title>
<link rel='icon' type='image/png' href='/favicon.ico'> <link rel='icon' type='image/png' href='/favicon.ico'>
<link rel='stylesheet' href='/build/bundle.css'> <link rel='stylesheet' href='/build/bundle.css'>

View File

@@ -1,7 +1,9 @@
<script> <script>
/****************************************************************************************************************************** /*
** Svelte IoT Manager app
******************************************************************************************************************************/ created by Dmitry Borisenko
Sandgasse 46/4, Vienna 1190, Austria
*/
//******************************************************import section*********************************************************/ //******************************************************import section*********************************************************/
//*****************************************************************************************************************************/ //*****************************************************************************************************************************/
@@ -27,11 +29,11 @@
//****************************************************constants section*********************************************************/ //****************************************************constants section*********************************************************/
//******************************************************************************************************************************/ //******************************************************************************************************************************/
let version = 407; let version = 408;
let debug = true; let debug = true;
let LOG_MAX_MESSAGES = 100; let LOG_MAX_MESSAGES = 100;
let reconnectTimeout = 20000; let reconnectTimeout = 20000;
let rebootingTimeout = 20000; let rebootingTimeout = 15000;
let updatingTimeout = 80000; let updatingTimeout = 80000;
let opened = false; let opened = false;
let preventMove = false; let preventMove = false;
@@ -39,7 +41,7 @@
//****************************************************variable section**********************************************************/ //****************************************************variable section**********************************************************/
//******************************************************************************************************************************/ //******************************************************************************************************************************/
let myip = document.location.hostname; let myip = document.location.hostname;
//let myip = "192.168.8.128"; //let myip = "192.168.88.224";
//Flags //Flags
let firstDevListRequest = true; let firstDevListRequest = true;
@@ -281,6 +283,15 @@
deviceList = combineArrays(deviceList, incDeviceList); deviceList = combineArrays(deviceList, incDeviceList);
} }
firstDevListRequest = false; firstDevListRequest = false;
deviceList.sort(function (a, b) {
if (a.name < b.name) {
return -1;
}
if (a.name > b.name) {
return 1;
}
return 0;
});
deviceList = deviceList; deviceList = deviceList;
whenDeviceListWasUpdated(); whenDeviceListWasUpdated();
connectToAllDevices(); connectToAllDevices();
@@ -1068,7 +1079,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} settingsJson={settingsJson} saveSett={() => saveSett()} rebootEsp={() => rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} versionsList={versionsList} bind:choosingVersion startUpdate={() => startUpdate()} coreMessages={coreMessages} /> <SystemPage show={systemReady} errorsJson={errorsJson} settingsJson={settingsJson} saveSett={() => saveSett()} rebootEsp={() => rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} versionsList={versionsList} bind:choosingVersion startUpdate={() => startUpdate()} coreMessages={coreMessages} />
</Route> </Route>
<!--<Route path="/utilities">--> <!--<Route path="/utilities">-->

View File

@@ -103,7 +103,7 @@
1: { 1: {
descr: "Ошибка json", descr: "Ошибка json",
color: "text-red-500", color: "text-red-500",
txt: "Ошибка записи/чтения json. Устройство может вести себя непредсказуемо. Обратитесь к разработчику.", txt: "Ошибка записи/чтения json.",
cancel: true, cancel: true,
num: true, num: true,
}, },
@@ -112,7 +112,7 @@
1: { 1: {
descr: "Ошибка json", descr: "Ошибка json",
color: "text-red-500", color: "text-red-500",
txt: "Ошибка чтения файла json с виджетами", txt: "Ошибка чтения json файла с виджетами",
cancel: true, cancel: true,
}, },
}, },
@@ -120,7 +120,6 @@
import Card from "../components/Card.svelte"; import Card from "../components/Card.svelte";
import Alarm from "../components/Alarm.svelte"; import Alarm from "../components/Alarm.svelte";
export let version;
export let errorsJson; export let errorsJson;
@@ -144,19 +143,19 @@
<!--INFORMATION--> <!--INFORMATION-->
<Card title="Системная информация"> <Card title="Системная информация">
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Название прошивки</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Название прошивки</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3">
<p class="text-gray-500 font-bold text-sm">{errorsJson.bn}</p> <p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.bn}</p>
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Версии прошивки на сервере</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Доступные версии</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3">
<select class="border border-indigo-500 border-4" bind:value={choosingVersion}> <select class="border border-indigo-500 border-4 text-center" bind:value={choosingVersion}>
{#each Object.entries(versionsList) as [key, param]} {#each Object.entries(versionsList) as [key, param]}
<option value={param}> <option value={param}>
{param} {param}
@@ -166,79 +165,87 @@
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Версия прошивки</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Версия прошивки</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3">
<p class="text-gray-500 font-bold text-sm">{errorsJson.bver}</p> <p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.bver}</p>
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Версия файловой системы</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Uptime устройства</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3">
<p class="text-gray-500 font-bold text-sm">{version}</p> <p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.upt}</p>
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Uptime устройства</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Uptime сессии mqtt</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3">
<p class="text-gray-500 font-bold text-sm">{errorsJson.upt}</p> <p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.uptm}</p>
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Uptime сессии mqtt</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Uptime сессии wifi</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3">
<p class="text-gray-500 font-bold text-sm">{errorsJson.uptm}</p> <p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.uptw}</p>
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Качество WiFi сигнала</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Качество WiFi сигнала</p>
</div> </div>
<div class="flex justify-center w-1/4 text-xs sm:text-sm md:text-base lg:text-base xl:text-base 2xl:text-base break-words"> <div class="flex justify-center w-1/3 text-xs sm:text-sm md:text-base lg:text-base xl:text-base 2xl:text-base break-words">
{#if errorsJson.rssi === 0} {#if errorsJson.rssi === 0}
<p class="text-red-500 font-bold text-sm">не подключено</p> <p class="text-red-500 font-bold text-sm text-center truncate">не подключено</p>
{/if} {/if}
{#if errorsJson.rssi === 1} {#if errorsJson.rssi === 1}
<p class="text-red-500 font-bold text-sm">нет сигнала</p> <p class="text-red-500 font-bold text-sm text-center truncate">нет сигнала</p>
{/if} {/if}
{#if errorsJson.rssi === 2} {#if errorsJson.rssi === 2}
<p class="text-red-500 font-bold text-sm">очень низкий</p> <p class="text-red-500 font-bold text-sm text-center truncate">очень низкий</p>
{/if} {/if}
{#if errorsJson.rssi === 3} {#if errorsJson.rssi === 3}
<p class="text-yellow-500 font-bold text-sm">низкий</p> <p class="text-yellow-500 font-bold text-sm text-center truncate">низкий</p>
{/if} {/if}
{#if errorsJson.rssi === 4} {#if errorsJson.rssi === 4}
<p class="text-yellow-500 font-bold text-sm">хороший</p> <p class="text-yellow-500 font-bold text-sm text-center truncate">хороший</p>
{/if} {/if}
{#if errorsJson.rssi === 5} {#if errorsJson.rssi === 5}
<p class="text-green-500 font-bold text-sm">очень хороший</p> <p class="text-green-500 font-bold text-sm text-center truncate">очень хороший</p>
{/if} {/if}
{#if errorsJson.rssi === 6} {#if errorsJson.rssi === 6}
<p class="text-green-500 font-bold text-sm">отличный</p> <p class="text-green-500 font-bold text-sm text-center truncate">отличный</p>
{/if} {/if}
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Остаток оперативной памяти</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Остаток RAM</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3 text-sm text-center">
<p class="text-green-500 font-bold">{errorsJson.heap}</p> <p class="text-green-500 font-bold text-center truncate">{errorsJson.heap}</p>
</div> </div>
</div> </div>
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-3/4"> <div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm">Количество записей на flash</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Кол-во записей на flash</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/3 text-sm">
<p class="text-green-500 font-bold">{errorsJson.fl}</p> <p class="text-green-500 font-bold text-center truncate">{errorsJson.fl}</p>
</div>
</div>
<div class="flex mb-2 h-6 items-center">
<div class="w-2/3">
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Причина перезагрузки</p>
</div>
<div class="flex justify-center w-1/3 text-sm">
<p class="{errorsJson.rst.includes('Watchdog') || errorsJson.rst.includes('Exception') ? 'text-red-500' : 'text-green-500'} font-bold text-center truncate">{errorsJson.rst}</p>
</div> </div>
</div> </div>
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button> <button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>
@@ -247,7 +254,7 @@
<Card title="Системные настройки"> <Card title="Системные настройки">
<div class="flex mb-2 h-6 items-center"> <div class="flex mb-2 h-6 items-center">
<div class="w-5/6"> <div class="w-5/6">
<p class="pr-4 text-gray-500 font-bold text-sm">Включить лог</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Включить лог</p>
</div> </div>
<div class="flex justify-center w-1/6"> <div class="flex justify-center w-1/6">
<input bind:checked={settingsJson.log} on:change={() => saveSett()} type="checkbox" class="form-checkbox h-4 w-4 text-gray-600" /> <input bind:checked={settingsJson.log} on:change={() => saveSett()} type="checkbox" class="form-checkbox h-4 w-4 text-gray-600" />