изменения

This commit is contained in:
Dmitry Borisenko
2022-02-11 00:22:41 +01:00
parent 050a813471
commit 34d26bbe1d
11 changed files with 216 additions and 137 deletions

View File

@@ -3,115 +3,142 @@
import Alarm from "../components/Alarm.svelte";
export let settingsJson;
//export let settingsJsonParced;
export let errorsJson;
//export let errorsJsonParced;
export let ssidJson;
let mqttConnected = true;
//export let ssidJsonParced;
let promise = 0;
let next = (value) => new Promise((resolve) => setTimeout(() => resolve(++value), 500));
export let ssidDropdownClick = () => {};
export let saveSettings = () => {};
export let mqttConnect = () => {};
export let rebootEsp = () => {};
</script>
<div class="grd-2col1">
<Card title="Подключение к WiFi роутеру">
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Название устройства</p>
{#await promise}
<p>...</p>
{:then result}
<div class="grd-2col1">
<Card title="Подключение к WiFi">
<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.name} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.name} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<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.apssid} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Точка доступа</p>
<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.appass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.apssid} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<div class="crd-itm-psn">
<div class="w-4/6">
<p class="wgt-dscr-stl">Название wifi сети</p>
</div>
<div class="flex justify-end w-3/6">
<select class="ipt-rnd text-left focus:border-indigo-500" bind:value={settingsJson.routerssid} on:click={() => ssidDropdownClick()}>
{#each Object.entries(ssidJson) as [num, ssid]}
<option value={ssid}>
{ssid}
</option>
{/each}
</select>
</div>
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Пароль точки доступа</p>
<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.routerpass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.appass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
{#if errorsJson.passer === 1}
<div class="grd-1col1">
<Alarm title="Введен неправильный пароль" />
</div>
{/if}
<button class="btn-lg" on:click={() => (promise = next(result))}>{result}</button>
<button class="btn-lg" on:click={() => saveSettings()}>{"Сохранить"}</button>
</Card>
<Card title="Подключение к MQTT">
<div class="crd-itm-psn">
<div class="w-4/6">
<p class="wgt-dscr-stl">Состояние подключения</p>
</div>
<div class="flex justify-center w-3/6 align-baseline text-sm sm:text-sm md:text-base lg:text-base xl:text-base 2xl:text-base break-words">
{#if errorsJson.mqtt === 0}
<p class="text-green-500 font-bold h-8 bg-green-50 border-2 border-gray-200 rounded w-full text-center">Подключено</p>
{:else if errorsJson.mqtt === 8}
<p class="text-yellow-500 font-bold h-8 bg-yellow-50 border-2 border-gray-200 rounded w-full text-center">Подключение</p>
{:else}
<p class="text-red-500 font-bold h-8 bg-red-50 border-2 border-gray-200 rounded w-full text-center">Ошибка</p>
{/if}
</div>
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Название wifi сети</p>
<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.mqttServer} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="wgt-w">
<select class="ipt-rnd text-left focus:border-indigo-500" bind:value={settingsJson.routerssid} on:click={() => ssidDropdownClick()}>
{#each Object.entries(ssidJson) as [num, ssid]}
<option value={ssid}>
{ssid}
</option>
{/each}
</select>
<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.mqttPort} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Пароль</p>
<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.mqttPrefix} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.routerpass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<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.mqttUser} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
</div>
{#if errorsJson.passer === 1}
<div class="grd-1col1">
<Alarm title="Введен неправильный пароль" />
<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.mqttPass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
{/if}
<button class="btn-lg" on:click={() => saveSettings()}>{"Сохранить"}</button>
</Card>
<Card title="Подключение к MQTT брокеру" cloud={true} cloudColor={mqttConnected === true ? "text-green-500" : "text-red-500"}>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Название сервера</p>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.mqttServer} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Порт</p>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.mqttPort} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Префикс</p>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.mqttPrefix} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Имя пользователя</p>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.mqttUser} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<div class="crd-itm-psn">
<div class="wgt-dscr-w">
<p class="wgt-dscr-stl">Пароль</p>
</div>
<div class="wgt-w">
<input bind:value={settingsJson.mqttPass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
<button class="btn-lg" on:click={() => saveSettings()}>{"Сохранить и проверить подключение"}</button>
</Card>
</div>
<div class="grd-1col1">
<Card>
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
</Card>
</div>
<button class="btn-lg" on:click={() => mqttConnect()}>{"Сохранить"}</button>
</Card>
</div>
<div class="grd-1col1">
<Card>
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
</Card>
</div>
{/await}

View File

@@ -73,21 +73,23 @@
</Card>
<Card title="Системные ошибки">
<div class="grd-2col1">
<!--Ошибки которые можно сбросить пользователю, связанные с ядром-->
{#if errorsJson.wscle === 1}
<Alarm title={"Ошибка web sockets"} close={() => cancelAlarm("wscle")}>
<Alarm title={"Ошибка web sockets"} cross={true} close={() => cancelAlarm("wscle")}>
<p class="break-words text-center">Слишком много клиентов было открыто. Допускается не более четырех.</p>
</Alarm>
{/if}
{#if errorsJson.jsbuf === 1}
<Alarm title={"Ошибка json"} close={() => cancelAlarm("jsbuf")}>
<Alarm title={"Ошибка json"} cross={true} close={() => cancelAlarm("jsbuf")}>
<p class="break-words text-center">Недостаточный размер буфера библиотеки Arduino Json. Устройство может вести себя непредсказуемо. Обратитесь к разработчику</p>
</Alarm>
{/if}
{#if errorsJson.jserr > 0}
<Alarm title={"Ошибка json"} close={() => cancelAlarm("jserr")}>
<Alarm title={"Ошибка json"} cross={true} close={() => cancelAlarm("jserr")}>
<p class="break-words text-center">Ошибка записи/чтения json. Устройство может вести себя непредсказуемо. Количество ошибок: {errorsJson.jserr}. Обратитесь к разработчику.</p>
</Alarm>
{/if}
<!--Ошибки которые нельзя сбросить пользователю-->
{#if errorsJson.bver != version}
<Alarm title={"Ошибка версии"}>
<p class="break-words text-center">Версия файловой системы не совпадает с версией прошивки. Вероятно произошла ошибка во время обновления устройства по воздуху.</p>
@@ -98,6 +100,62 @@
<p class="break-words text-center">Уровень сигнала WiFi предельно низкий, веб интерфейс может работать со сбоями и потерей данных, рекомендуется переместить устройство ближе к роутеру</p>
</Alarm>
{/if}
<!--MQTT ошибки-->
{#if errorsJson.mqtt === -4}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Нет ответа от сервера</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === -3}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Соединение было разорвано</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === -2}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Ошибка соединения. Обычно возникает когда неверно указано название сервера MQTT</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === -1}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Клиент был отключен</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 1}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Ошибка версии</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 2}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Отклонен идентификатор</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 3}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Не могу установить соединение</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 4}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Неправильное имя пользователя/пароль</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 5}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Не авторизован для подключения</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 6}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Название сервера пустое</p>
</Alarm>
{/if}
{#if errorsJson.mqtt === 7}
<Alarm title={"MQTT"}>
<p class="break-words text-center">Имя пользователя или пароль пустые</p>
</Alarm>
{/if}
</div>
</Card>
</div>