2022-02-08 21:42:40 +01:00
|
|
|
|
<script>
|
2022-02-11 16:49:34 +01:00
|
|
|
|
const wifiState = {
|
|
|
|
|
|
0: "не подключено",
|
|
|
|
|
|
1: "нет сигнала",
|
|
|
|
|
|
2: "очень низкий",
|
|
|
|
|
|
3: "низкий",
|
|
|
|
|
|
4: "хороший",
|
|
|
|
|
|
5: "очень хороший",
|
|
|
|
|
|
6: "отличный",
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const systemErrorsRus = {
|
|
|
|
|
|
mqtt: {
|
|
|
|
|
|
e1: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Нет ответа от сервера",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e2: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Соединение было разорвано",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e3: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Ошибка соединения. Обычно возникает когда неверно указано название сервера MQTT",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e4: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Клиент был отключен",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e6: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Ошибка версии",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e7: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Отклонен идентификатор",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e8: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Не могу установить соединение",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e9: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Неправильное имя пользователя/пароль",
|
|
|
|
|
|
},
|
|
|
|
|
|
e10: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Не авторизован для подключения",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e11: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Название сервера пустое",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e12: {
|
|
|
|
|
|
descr: "Ошибка mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Имя пользователя или пароль пустые",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
e13: {
|
|
|
|
|
|
descr: "Mqtt",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Подключение в процессе",
|
|
|
|
|
|
cancel: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
wse1: {
|
|
|
|
|
|
1: {
|
|
|
|
|
|
descr: "Ошибка веб сокетов",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Слишком много клиентов было открыто. Допускается не более четырех.",
|
|
|
|
|
|
cancel: true,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
jse1: {
|
|
|
|
|
|
1: {
|
|
|
|
|
|
descr: "Ошибка json",
|
|
|
|
|
|
color: "text-red-500",
|
|
|
|
|
|
txt: "Недостаточный размер буфера библиотеки Arduino Json. Устройство может вести себя непредсказуемо. Обратитесь к разработчику.",
|
|
|
|
|
|
cancel: true,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
jse2: {
|
|
|
|
|
|
1: {
|
|
|
|
|
|
descr: "Ошибка json",
|
|
|
|
|
|
color: "text-red-500",
|
2022-02-22 20:20:59 +01:00
|
|
|
|
txt: "Ошибка записи/чтения json.",
|
2022-02-11 16:49:34 +01:00
|
|
|
|
cancel: true,
|
|
|
|
|
|
num: true,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2022-02-12 23:20:10 +01:00
|
|
|
|
jse3: {
|
|
|
|
|
|
1: {
|
|
|
|
|
|
descr: "Ошибка json",
|
|
|
|
|
|
color: "text-red-500",
|
2022-02-22 20:20:59 +01:00
|
|
|
|
txt: "Ошибка чтения json файла с виджетами",
|
2022-02-12 23:20:10 +01:00
|
|
|
|
cancel: true,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2022-02-11 16:49:34 +01:00
|
|
|
|
};
|
|
|
|
|
|
|
2022-02-08 21:42:40 +01:00
|
|
|
|
import Card from "../components/Card.svelte";
|
|
|
|
|
|
import Alarm from "../components/Alarm.svelte";
|
2022-02-16 00:11:57 +01:00
|
|
|
|
|
2022-02-08 21:42:40 +01:00
|
|
|
|
export let errorsJson;
|
2022-02-18 19:48:15 +01:00
|
|
|
|
|
2022-02-08 21:42:40 +01:00
|
|
|
|
export let rebootEsp = () => {};
|
2022-02-09 16:43:24 +01:00
|
|
|
|
|
2022-02-18 19:48:15 +01:00
|
|
|
|
export let versionsList;
|
|
|
|
|
|
export let choosingVersion;
|
2022-02-19 23:35:30 +01:00
|
|
|
|
export let coreMessages;
|
|
|
|
|
|
export let settingsJson;
|
2022-02-18 19:48:15 +01:00
|
|
|
|
|
|
|
|
|
|
export let startUpdate = () => {};
|
2022-02-19 23:35:30 +01:00
|
|
|
|
export let saveSett = () => {};
|
2022-02-18 19:48:15 +01:00
|
|
|
|
|
2022-02-13 00:37:58 +01:00
|
|
|
|
export let show;
|
|
|
|
|
|
|
2022-02-09 16:43:24 +01:00
|
|
|
|
export let cancelAlarm = (alarmKey) => {};
|
2022-02-08 21:42:40 +01:00
|
|
|
|
</script>
|
|
|
|
|
|
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{#if show}
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="grd-3col1">
|
|
|
|
|
|
<!--INFORMATION-->
|
2022-02-13 00:37:58 +01:00
|
|
|
|
<Card title="Системная информация">
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Название прошивки</p>
|
2022-02-16 00:11:57 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3">
|
|
|
|
|
|
<p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.bn}</p>
|
2022-02-16 00:11:57 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Доступные версии</p>
|
2022-02-18 19:48:15 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3">
|
|
|
|
|
|
<select class="border border-indigo-500 border-4 text-center" bind:value={choosingVersion}>
|
2022-02-18 19:48:15 +01:00
|
|
|
|
{#each Object.entries(versionsList) as [key, param]}
|
|
|
|
|
|
<option value={param}>
|
|
|
|
|
|
{param}
|
|
|
|
|
|
</option>
|
|
|
|
|
|
{/each}
|
|
|
|
|
|
</select>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Версия прошивки</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3">
|
|
|
|
|
|
<p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.bver}</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-08 21:42:40 +01:00
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Uptime устройства</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3">
|
|
|
|
|
|
<p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.upt}</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-12 03:07:59 +01:00
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Uptime сессии mqtt</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3">
|
|
|
|
|
|
<p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.uptm}</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-12 03:07:59 +01:00
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Uptime сессии wifi</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3">
|
|
|
|
|
|
<p class="text-gray-500 font-bold text-sm text-center truncate">{errorsJson.uptw}</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-08 21:42:40 +01:00
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Качество WiFi сигнала</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<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">
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{#if errorsJson.rssi === 0}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-red-500 font-bold text-sm text-center truncate">не подключено</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
{#if errorsJson.rssi === 1}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-red-500 font-bold text-sm text-center truncate">нет сигнала</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
{#if errorsJson.rssi === 2}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-red-500 font-bold text-sm text-center truncate">очень низкий</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
{#if errorsJson.rssi === 3}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-yellow-500 font-bold text-sm text-center truncate">низкий</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
{#if errorsJson.rssi === 4}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-yellow-500 font-bold text-sm text-center truncate">хороший</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
{#if errorsJson.rssi === 5}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-green-500 font-bold text-sm text-center truncate">очень хороший</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
{#if errorsJson.rssi === 6}
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="text-green-500 font-bold text-sm text-center truncate">отличный</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
{/if}
|
|
|
|
|
|
</div>
|
2022-02-08 21:42:40 +01:00
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Остаток RAM</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3 text-sm text-center">
|
|
|
|
|
|
<p class="text-green-500 font-bold text-center truncate">{errorsJson.heap}</p>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</div>
|
2022-02-08 21:42:40 +01:00
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="w-2/3">
|
|
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Кол-во записей на flash</p>
|
2022-02-16 00:11:57 +01:00
|
|
|
|
</div>
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<div class="flex justify-center w-1/3 text-sm">
|
|
|
|
|
|
<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">
|
2022-02-23 01:38:43 +01:00
|
|
|
|
<p class="{errorsJson.rst.toString().includes('Watchdog') || errorsJson.rst.toString().includes('Exception') ? 'text-red-500' : 'text-green-500'} font-bold text-center truncate">{errorsJson.rst}</p>
|
2022-02-16 00:11:57 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</Card>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
<!--SETTINGS-->
|
|
|
|
|
|
<Card title="Системные настройки">
|
|
|
|
|
|
<div class="flex mb-2 h-6 items-center">
|
|
|
|
|
|
<div class="w-5/6">
|
2022-02-22 20:20:59 +01:00
|
|
|
|
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Включить лог</p>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
<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" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
|
|
|
|
|
|
</Card>
|
|
|
|
|
|
<!--LOG-->
|
|
|
|
|
|
<Card title="Лог">
|
|
|
|
|
|
<div class="h-80 overflow-y-auto">
|
|
|
|
|
|
{#each coreMessages as message, i}
|
|
|
|
|
|
<div class={message.msg.toString().includes("[E]") ? "text-xs text-red-500" : "text-xs text-black"}>{message.msg}</div>
|
|
|
|
|
|
{/each}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</Card>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<!--ERRORS-->
|
|
|
|
|
|
<div class="grd-1col1">
|
2022-02-13 00:37:58 +01:00
|
|
|
|
<Card title="Системные ошибки">
|
2022-02-19 23:35:30 +01:00
|
|
|
|
{#each Object.entries(errorsJson) as [key, param], i}
|
|
|
|
|
|
{#if key in systemErrorsRus && param in systemErrorsRus[key]}
|
|
|
|
|
|
<div class="grd-2col1">
|
2022-02-13 00:37:58 +01:00
|
|
|
|
<Alarm title={systemErrorsRus[key][param].descr} cross={systemErrorsRus[key][param].cancel} close={() => cancelAlarm(key)}>
|
|
|
|
|
|
<p class="break-words text-center">{systemErrorsRus[key][param].txt}</p>
|
|
|
|
|
|
{#if systemErrorsRus[key][param].num}
|
|
|
|
|
|
<p class="break-words text-center">{"Количество: " + errorsJson[key + "n"]}</p>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
</Alarm>
|
2022-02-19 23:35:30 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
{/each}
|
2022-02-13 00:37:58 +01:00
|
|
|
|
</Card>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{:else}
|
|
|
|
|
|
<Alarm title="Загрузка..." />
|
|
|
|
|
|
{/if}
|