исправил слетающий конфиг

This commit is contained in:
Dmitry Borisenko
2022-02-12 03:07:59 +01:00
parent 46a3d9f013
commit dbfb2a2f99
5 changed files with 194 additions and 201 deletions

View File

@@ -8,16 +8,16 @@
import Alarm from "./components/Alarm.svelte"; import Alarm from "./components/Alarm.svelte";
import Progress from "./components/Progress.svelte"; import Progress from "./components/Progress.svelte";
import Modal from "./components/Modal.svelte"; //import Modal from "./components/Modal.svelte";
import DashboardPage from "./pages/Dashboard.svelte"; import DashboardPage from "./pages/Dashboard.svelte";
import ConfigPage from "./pages/Config.svelte"; import ConfigPage from "./pages/Config.svelte";
import ConnectionPage from "./pages/Connection.svelte"; import ConnectionPage from "./pages/Connection.svelte";
import ListPage from "./pages/List.svelte"; import ListPage from "./pages/List.svelte";
import SystemPage from "./pages/System.svelte"; import SystemPage from "./pages/System.svelte";
import UtilitiesPage from "./pages/Utilities.svelte"; //import UtilitiesPage from "./pages/Utilities.svelte";
import LogPage from "./pages/Log.svelte"; //import LogPage from "./pages/Log.svelte";
import AboutPage from "./pages/About.svelte"; //import AboutPage from "./pages/About.svelte";
import CloudIcon from "./svg/Cloud.svelte"; import CloudIcon from "./svg/Cloud.svelte";
@@ -33,8 +33,8 @@
//****************************************************variable section**********************************************************/ //****************************************************variable section**********************************************************/
//******************************************************************************************************************************/ //******************************************************************************************************************************/
//let myip = document.location.hostname; let myip = document.location.hostname;
let myip = "192.168.88.235"; //let myip = "192.168.88.235";
//Flags //Flags
let showInput = false; let showInput = false;
@@ -48,29 +48,22 @@
//configuration //configuration
let configJson = []; let configJson = [];
let configJsonFlag = false; let configJsonFlag = false;
let configJsonParced = false;
let widgetsJson = []; let widgetsJson = [];
let widgetsJsonFlag = false; let widgetsJsonFlag = false;
let widgetsJsonParced = false;
let itemsJson = []; let itemsJson = [];
let itemsJsonFlag = false; let itemsJsonFlag = false;
let itemsJsonParced = false;
let layoutJson = []; let layoutJson = [];
let layoutJsonFlag = false; let layoutJsonFlag = false;
let layoutJsonParced = false;
let settingsJson = {}; let settingsJson = {};
let settingsJsonFlag = false; let settingsJsonFlag = false;
let settingsJsonParced = false;
let errorsJson = {}; let errorsJson = {};
let errorsJsonParced = false;
let ssidJson = {}; let ssidJson = {};
let ssidJsonParced = false;
//web sockets //web sockets
let socket = []; let socket = [];
@@ -243,8 +236,8 @@
let statusJson = JSON.parse(data); let statusJson = JSON.parse(data);
udatelayoutJson(statusJson); udatelayoutJson(statusJson);
wigetsUpdate(); wigetsUpdate();
//if (debug) console.log(statusJson);
if (debug) console.log("✔", "statusJson parced"); if (debug) console.log("✔", "statusJson parced");
onParced("status");
} }
} }
//сборщик paramsJson сообщений====================================== //сборщик paramsJson сообщений======================================
@@ -254,23 +247,22 @@
//udatelayoutJson(statusJson); //udatelayoutJson(statusJson);
//wigetsUpdate(); //wigetsUpdate();
if (debug) console.log("✔", "paramsJson parced"); if (debug) console.log("✔", "paramsJson parced");
onParced("params");
} }
} }
//сборщик ssidJson сообщений====================================== //сборщик ssidJson сообщений======================================
if (data.includes("ssid")) { if (data.includes("ssid")) {
if (IsJsonParse(data)) { if (IsJsonParse(data)) {
ssidJson = JSON.parse(data); ssidJson = JSON.parse(data);
//delete ssidJson.ssid;
ssidJson = ssidJson; ssidJson = ssidJson;
ssidJsonParced = true;
if (debug) console.log("✔", "ssidJson parced"); if (debug) console.log("✔", "ssidJson parced");
onParced("ssid");
} }
} }
//сборщик deviceList сообщений====================================== //сборщик deviceList сообщений======================================
if (data.includes("devicelist")) { if (data.includes("devicelist")) {
if (IsJsonParse(data)) { if (IsJsonParse(data)) {
incDeviceList = JSON.parse(data); incDeviceList = JSON.parse(data);
//delete incDeviceList.devicelist;
incDeviceList = incDeviceList; incDeviceList = incDeviceList;
incDeviceListParced = true; incDeviceListParced = true;
deviceList = combineArrays(deviceList, incDeviceList); deviceList = combineArrays(deviceList, incDeviceList);
@@ -278,26 +270,24 @@
whenDeviceListWasUpdated(); whenDeviceListWasUpdated();
connectToAllDevices(); connectToAllDevices();
if (debug) console.log("✔", "incDeviceList json parced"); if (debug) console.log("✔", "incDeviceList json parced");
onParced("devicelist");
} }
} }
//сборщик errorsJson сообщений====================================== //сборщик errorsJson сообщений======================================
if (data.includes("errors")) { if (data.includes("errors")) {
if (IsJsonParse(data)) { if (IsJsonParse(data)) {
errorsJson = JSON.parse(data); errorsJson = JSON.parse(data);
//delete errorsJson.errors;
errorsJson = errorsJson; errorsJson = errorsJson;
errorsJsonParced = true;
promiseResolve();
if (debug) console.log("✔", "errorsJson json parced"); if (debug) console.log("✔", "errorsJson json parced");
//dataReceived();
onParced("errors");
} }
} }
//сборщик configJson пакетов======================================== //сборщик configJson пакетов========================================
if (data === "/st/config.json") { if (data === "/st/config.json") {
//if (debug) console.log("[i]", "configJson start!");
configJsonFlag = true; configJsonFlag = true;
} }
if (data === "/end/config.json") { if (data === "/end/config.json") {
//if (debug) console.log("[i]", "configJson end!");
configJsonFlag = false; configJsonFlag = false;
var bb = configJsonBlob.getBlob(); var bb = configJsonBlob.getBlob();
let configJsonReader = new FileReader(); let configJsonReader = new FileReader();
@@ -307,18 +297,16 @@
if (IsJsonParse(configJsonResult)) { if (IsJsonParse(configJsonResult)) {
configJson = JSON.parse(configJsonResult); configJson = JSON.parse(configJsonResult);
configJson = configJson; configJson = configJson;
configJsonParced = true;
if (debug) console.log("✔", "configJson parced"); if (debug) console.log("✔", "configJson parced");
onParced("config");
} }
}; };
} }
//сборщик widgetsJson пакетов======================================== //сборщик widgetsJson пакетов========================================
if (data === "/st/widgets.json") { if (data === "/st/widgets.json") {
//if (debug) console.log("[i]", "widgetsJson start!");
widgetsJsonFlag = true; widgetsJsonFlag = true;
} }
if (data === "/end/widgets.json") { if (data === "/end/widgets.json") {
//if (debug) console.log("[i]", "widgetsJson end!");
widgetsJsonFlag = false; widgetsJsonFlag = false;
var bb = widgetsJsonBlob.getBlob(); var bb = widgetsJsonBlob.getBlob();
let widgetsJsonReader = new FileReader(); let widgetsJsonReader = new FileReader();
@@ -328,18 +316,16 @@
if (IsJsonParse(widgetsJsonResult)) { if (IsJsonParse(widgetsJsonResult)) {
widgetsJson = JSON.parse(widgetsJsonResult); widgetsJson = JSON.parse(widgetsJsonResult);
widgetsJson = widgetsJson; widgetsJson = widgetsJson;
widgetsJsonParced = true;
if (debug) console.log("✔", "widgetsJson parced"); if (debug) console.log("✔", "widgetsJson parced");
onParced("widgets");
} }
}; };
} }
//сборщик itemsJson пакетов======================================== //сборщик itemsJson пакетов========================================
if (data === "/st/items.json") { if (data === "/st/items.json") {
//if (debug) console.log("[i]", "itemsJson start!");
itemsJsonFlag = true; itemsJsonFlag = true;
} }
if (data === "/end/items.json") { if (data === "/end/items.json") {
//if (debug) console.log("[i]", "itemsJson end!");
itemsJsonFlag = false; itemsJsonFlag = false;
var bb = itemsJsonBlob.getBlob(); var bb = itemsJsonBlob.getBlob();
let itemsJsonReader = new FileReader(); let itemsJsonReader = new FileReader();
@@ -349,18 +335,16 @@
if (IsJsonParse(itemsJsonResult)) { if (IsJsonParse(itemsJsonResult)) {
itemsJson = JSON.parse(itemsJsonResult); itemsJson = JSON.parse(itemsJsonResult);
itemsJson = itemsJson; itemsJson = itemsJson;
itemsJsonParced = true;
if (debug) console.log("✔", "itemsJson parced"); if (debug) console.log("✔", "itemsJson parced");
onParced("items");
} }
}; };
} }
//сборщик layoutJson пакетов======================================== //сборщик layoutJson пакетов========================================
if (data === "/st/layout.json") { if (data === "/st/layout.json") {
//if (debug) console.log("[i]", "layoutJson start!");
layoutJsonFlag = true; layoutJsonFlag = true;
} }
if (data === "/end/layout.json") { if (data === "/end/layout.json") {
//if (debug) console.log("[i]", "layoutJson end!");
layoutJsonFlag = false; layoutJsonFlag = false;
var bb = layoutJsonBlob.getBlob(); var bb = layoutJsonBlob.getBlob();
let layoutJsonReader = new FileReader(); let layoutJsonReader = new FileReader();
@@ -371,18 +355,16 @@
layoutJson = JSON.parse(layoutJsonResult); layoutJson = JSON.parse(layoutJsonResult);
layoutJson = layoutJson; layoutJson = layoutJson;
wigetsUpdate(); wigetsUpdate();
layoutJsonParced = true;
if (debug) console.log("✔", "layoutJson parced"); if (debug) console.log("✔", "layoutJson parced");
onParced("layout");
} }
}; };
} }
//сборщик settingsJson пакетов======================================== //сборщик settingsJson пакетов========================================
if (data === "/st/settings.json") { if (data === "/st/settings.json") {
//if (debug) console.log("[i]", "settingsJson start!");
settingsJsonFlag = true; settingsJsonFlag = true;
} }
if (data === "/end/settings.json") { if (data === "/end/settings.json") {
//if (debug) console.log("[i]", "settingsJson end!");
settingsJsonFlag = false; settingsJsonFlag = false;
var bb = settingsJsonBlob.getBlob(); var bb = settingsJsonBlob.getBlob();
let settingsJsonReader = new FileReader(); let settingsJsonReader = new FileReader();
@@ -393,9 +375,9 @@
settingsJson = JSON.parse(settingsJsonResult); settingsJson = JSON.parse(settingsJsonResult);
settingsJson = settingsJson; settingsJson = settingsJson;
wigetsUpdate(); wigetsUpdate();
settingsJsonParced = true;
updateThisDeviceInList(); updateThisDeviceInList();
if (debug) console.log("✔", "settingsJson parced"); if (debug) console.log("✔", "settingsJson parced");
onParced("settings");
} }
}; };
} }
@@ -428,13 +410,32 @@
sendCurrentPageName(); sendCurrentPageName();
} }
function saveSettings() { function saveSett() {
console.log("[i]", settingsJson); var size = Object.keys(settingsJson).length;
wsSendMsg(selectedWs, "/sgnittes|" + JSON.stringify(settingsJson)); console.log("[i]", "settingsJson length: " + size);
if (size > 5) {
wsSendMsg(selectedWs, "/sgnittes|" + JSON.stringify(settingsJson));
} else {
window.alert("Ошибка");
}
clearData(); clearData();
sendCurrentPageName(); sendCurrentPageName();
} }
function saveMqtt() {
var size = Object.keys(settingsJson).length;
console.log("[i]", "settingsJson length: " + size);
if (size > 5) {
wsSendMsg(selectedWs, "/sgnittes|" + JSON.stringify(settingsJson));
} else {
window.alert("Ошибка");
}
clearData();
sendCurrentPageName();
wsSendMsg(selectedWs, "/mqtt|");
errorsJson.mqtt = "e13";
}
function generateLayout() { function generateLayout() {
let layout = []; let layout = [];
for (let i = 0; i < configJson.length; i++) { for (let i = 0; i < configJson.length; i++) {
@@ -490,13 +491,6 @@
errorsJson = {}; errorsJson = {};
configJsonParced = false;
widgetsJsonParced = false;
itemsJsonParced = false;
layoutJsonParced = false;
settingsJsonParced = false;
ssidJsonParced = false;
if (debug) console.log("[i]", "all app data cleared"); if (debug) console.log("[i]", "all app data cleared");
} }
@@ -618,7 +612,7 @@
} }
} }
function devListSave() { function addDevInList() {
//createDefaultDevice(); //createDefaultDevice();
if (!showInput) { if (!showInput) {
if (newDevice.name !== undefined && newDevice.ip !== undefined && newDevice.id !== undefined) { if (newDevice.name !== undefined && newDevice.ip !== undefined && newDevice.id !== undefined) {
@@ -772,7 +766,7 @@
//************************************************elements and presets dropdown************************************************************/ //************************************************elements and presets dropdown************************************************************/
function ssidDropdownClick() { function ssidClick() {
wsSendMsg(selectedWs, "/scan|"); wsSendMsg(selectedWs, "/scan|");
} }
@@ -786,16 +780,6 @@
myTimeout = setTimeout(rebootingTask, rebootingTimeout); myTimeout = setTimeout(rebootingTask, rebootingTimeout);
} }
function mqttConnect() {
errorsJson.mqtt = 8;
console.log("[i]", settingsJson);
wsSendMsg(selectedWs, "/sgnittes|" + JSON.stringify(settingsJson));
//wsSendMsg(selectedWs, '/rorre|{"mqtt":8}');
wsSendMsg(selectedWs, "/mqtt|");
clearData();
sendCurrentPageName();
}
function rebootingTask() { function rebootingTask() {
clearTimeout(myTimeout); clearTimeout(myTimeout);
connectToAllDevices(); connectToAllDevices();
@@ -808,23 +792,7 @@
wsSendMsg(selectedWs, '/rorre|{"' + alarmKey + '":0}'); wsSendMsg(selectedWs, '/rorre|{"' + alarmKey + '":0}');
} }
//*******************************************************awaiting********************************************************************/ function onParced(file) {}
let promiseResolve;
let myPromise = 0;
async function connect() {
console.log("connect start");
saveSettings();
return new Promise(function (resolve, reject) {
setTimeout(() => reject(), 10000);
promiseResolve = resolve;
});
}
function activate() {
myPromise = connect();
}
//*******************************************************initialisation********************************************************************/ //*******************************************************initialisation********************************************************************/
onMount(async () => { onMount(async () => {
@@ -907,7 +875,7 @@
<ConfigPage configJson={configJson} widgetsJson={widgetsJson} itemsJson={itemsJson} saveConfig={() => saveConfig()} /> <ConfigPage configJson={configJson} widgetsJson={widgetsJson} itemsJson={itemsJson} saveConfig={() => saveConfig()} />
</Route> </Route>
<Route path="/connection"> <Route path="/connection">
<ConnectionPage settingsJson={settingsJson} errorsJson={errorsJson} myPromise={myPromise} activate={() => activate()} ssidJson={ssidJson} rebootEsp={() => rebootEsp()} ssidDropdownClick={() => ssidDropdownClick()} saveSettings={() => saveSettings()} mqttConnect={() => mqttConnect()} /> <ConnectionPage rebootEsp={() => rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} />
</Route> </Route>
<Route path="/system"> <Route path="/system">
<SystemPage settingsJson={settingsJson} errorsJson={errorsJson} rebootEsp={() => rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} /> <SystemPage settingsJson={settingsJson} errorsJson={errorsJson} rebootEsp={() => rebootEsp()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} version={version} />
@@ -924,7 +892,7 @@
<!--</Route>--> <!--</Route>-->
{/if} {/if}
<Route path="/list"> <Route path="/list">
<ListPage deviceList={deviceList} showInput={showInput} devListSave={() => devListSave()} newDevice={newDevice} /> <ListPage deviceList={deviceList} showInput={showInput} addDevInList={() => addDevInList()} newDevice={newDevice} />
</Route> </Route>
</div> </div>
</ul> </ul>

View File

@@ -6,141 +6,129 @@
export let errorsJson; export let errorsJson;
export let ssidJson; export let ssidJson;
export let myPromise; export let ssidClick = () => {};
export let saveSett = () => {};
export let activate = () => {}; export let saveMqtt = () => {};
export let ssidDropdownClick = () => {};
export let saveSettings = () => {};
export let mqttConnect = () => {};
export let rebootEsp = () => {}; export let rebootEsp = () => {};
</script> </script>
{#await myPromise} <div class="grd-2col1">
<p>Connecting...</p> <Card title="Подключение к WiFi">
<!--<button class="btn-lg" on:click={() => promiseResolve()}>resolve</button>--> <div class="crd-itm-psn">
{:then} <div class="w-4/6">
<div class="grd-2col1"> <p class="wgt-dscr-stl">Название устройства</p>
<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>
<div class="crd-itm-psn"> <div class="flex justify-end w-3/6">
<div class="w-4/6"> <input bind:value={settingsJson.name} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<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>
<div class="w-4/6"> <div class="crd-itm-psn">
<p class="wgt-dscr-stl">Пароль точки доступа</p> <div class="w-4/6">
</div> <p class="wgt-dscr-stl">Точка доступа</p>
<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>
<div class="crd-itm-psn"> <div class="flex justify-end w-3/6">
<div class="w-4/6"> <input bind:value={settingsJson.apssid} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<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>
<div class="w-4/6"> <div class="crd-itm-psn">
<p class="wgt-dscr-stl">Пароль</p> <div class="w-4/6">
</div> <p class="wgt-dscr-stl">Пароль точки доступа</p>
<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>
{#if errorsJson.passer === 1} <div class="flex justify-end w-3/6">
<div class="grd-1col1"> <input bind:value={settingsJson.appass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<Alarm title="Введен неправильный пароль" /> </div>
</div> </div>
{/if} <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={() => ssidClick()}>
{#each Object.entries(ssidJson) as [num, ssid]}
<option value={ssid}>
{ssid}
</option>
{/each}
</select>
</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.routerpass} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div>
</div>
{#if errorsJson.passer === 1}
<div class="grd-1col1">
<Alarm title="Введен неправильный пароль" />
</div>
{/if}
<button class="btn-lg" on:click={() => activate()}>try</button> <button class="btn-lg" on:click={() => saveSett()}>{"Сохранить"}</button>
<button class="btn-lg" on:click={() => saveSettings()}>{"Сохранить"}</button> </Card>
</Card>
<Card title="Подключение к MQTT"> <Card title="Подключение к MQTT">
<div class="crd-itm-psn"> <div class="crd-itm-psn">
<div class="w-4/6"> <div class="w-4/6">
<p class="wgt-dscr-stl">Состояние подключения</p> <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 === "e5"}
<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 === "e13"}
<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="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">
<div class="w-4/6"> {#if errorsJson.mqtt === "e5"}
<p class="wgt-dscr-stl">Название сервера</p> <p class="text-green-500 font-bold h-8 bg-green-50 border-2 border-gray-200 rounded w-full text-center">Подключено</p>
</div> {:else if errorsJson.mqtt === "e13"}
<div class="flex justify-end w-3/6"> <p class="text-yellow-500 font-bold h-8 bg-yellow-50 border-2 border-gray-200 rounded w-full text-center">Подключение</p>
<input bind:value={settingsJson.mqttServer} class="ipt-rnd text-left focus:border-indigo-500" type="text" /> {:else}
</div> <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 class="crd-itm-psn"> </div>
<div class="w-4/6"> <div class="crd-itm-psn">
<p class="wgt-dscr-stl">Порт</p> <div class="w-4/6">
</div> <p class="wgt-dscr-stl">Название сервера</p>
<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="flex justify-end w-3/6">
<div class="w-4/6"> <input bind:value={settingsJson.mqttServer} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<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>
<div class="crd-itm-psn"> </div>
<div class="w-4/6"> <div class="crd-itm-psn">
<p class="wgt-dscr-stl">Имя пользователя</p> <div class="w-4/6">
</div> <p class="wgt-dscr-stl">Порт</p>
<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>
<div class="crd-itm-psn"> <div class="flex justify-end w-3/6">
<div class="w-4/6"> <input bind:value={settingsJson.mqttPort} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
<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> </div>
<button class="btn-lg" on:click={() => mqttConnect()}>{"Сохранить"}</button> </div>
</Card> <div class="crd-itm-psn">
</div> <div class="w-4/6">
<div class="grd-1col1"> <p class="wgt-dscr-stl">Префикс</p>
<Card> </div>
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button> <div class="flex justify-end w-3/6">
</Card> <input bind:value={settingsJson.mqttPrefix} class="ipt-rnd text-left focus:border-indigo-500" type="text" />
</div> </div>
{:catch} </div>
<p>error</p> <div class="crd-itm-psn">
{/await} <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 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>
<button class="btn-lg" on:click={() => saveMqtt()}>{"Сохранить"}</button>
</Card>
</div>
<div class="grd-1col1">
<Card>
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить устройство"}</button>
</Card>
</div>

View File

@@ -9,7 +9,7 @@
export let showInput; export let showInput;
export let newDevice = {}; export let newDevice = {};
export let devListSave = () => {}; export let addDevInList = () => {};
let debug = true; let debug = true;
@@ -57,7 +57,7 @@
{/if} {/if}
</tbody> </tbody>
</table> </table>
<button class="btn-lg" on:click={() => ((showInput = !showInput), devListSave())}>{showInput ? "Сохранить" : "Добавить устройство"}</button> <button class="btn-lg" on:click={() => ((showInput = !showInput), addDevInList())}>{showInput ? "Сохранить" : "Добавить устройство"}</button>
</Card> </Card>
<Alarm> <Alarm>
<p>Список устройств будет обновляться автоматически. Подключенные к одному роутеру устройства будут появляться в списке в течении двух минут. Ручное добавление сделано в целях проверки для разработчика.</p> <p>Список устройств будет обновляться автоматически. Подключенные к одному роутеру устройства будут появляться в списке в течении двух минут. Ручное добавление сделано в целях проверки для разработчика.</p>

View File

@@ -139,12 +139,20 @@
</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">Uptime устройства</p>
</div> </div>
<div class="flex justify-center w-1/4"> <div class="flex justify-center w-1/4">
<p class="text-gray-500 font-bold">{errorsJson.upt}</p> <p class="text-gray-500 font-bold">{errorsJson.upt}</p>
</div> </div>
</div> </div>
<div class="crd-itm-psn">
<div class="w-3/4">
<p class="wgt-dscr-stl">Uptime сессии mqtt</p>
</div>
<div class="flex justify-center w-1/4">
<p class="text-gray-500 font-bold">{errorsJson.uptm}</p>
</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">Качество WiFi сигнала</p> <p class="wgt-dscr-stl">Качество WiFi сигнала</p>

29
src/training/await.svelte Normal file
View File

@@ -0,0 +1,29 @@
<script>
let dataReceived;
let awaiting = 0;
async function awaitingData() {
console.log("Awaiting Data start...");
return new Promise(function (resolve, reject) {
setTimeout(() => reject(), 10000);
dataReceived = resolve;
});
}
function startAwaiting() {
awaiting = awaitingData();
}
function onReceive() {
dataReceived();
}
</script>
{#await awaiting}
<p>Connecting...</p>
<button on:click={() => onReceive()}>Resolve</button>
{:then}
<button on:click={() => startAwaiting()}>Start</button>
{:catch}
<p>error</p>
{/await}