diff --git a/src/App.svelte b/src/App.svelte index 6e792ae..6bb63aa 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -2,7 +2,8 @@ /* Svelte IoT Manager app created by Dmitry Borisenko - Sandgasse 46/4, Vienna 1190, Austria + Vienna, Austria 1030, Juchgasse 5/17 + +43 67761588253 */ //******************************************************import section*********************************************************/ @@ -34,7 +35,7 @@ const debug = true; const LOG_MAX_MESSAGES = 100; const reconnectTimeout = 120000; //период проверки соединения с устройством - const waitingAckTimeout = 18000; //время ожидания ответа от устройства + const waitingAckTimeout = 12000; //время ожидания ответа от устройства const rebootingTimeout = 20000; const updatingTimeout = 130000; let opened = false; @@ -45,12 +46,13 @@ //****************************************************variable section**********************************************************/ //******************************************************************************************************************************/ let myip = document.location.hostname; - if (devMode) myip = "192.168.88.238"; + if (devMode) myip = "192.168.1.238"; //Flags let firstDevListRequest = true; let showInput = false; let showModalFlag = false; + let showDropdown = true; let rebootingUpdatingInProgress = false; let myTimeout = undefined; @@ -125,6 +127,8 @@ let newDevice = {}; let coreMessages = []; + let timeOut; + let parcedEvent = 0; //***********************************************************navigation********************************************************/ @@ -144,6 +148,13 @@ if (currentPageName != "/dev") { clearData(); } + + if (currentPageName === "/list" || "/") { + showDropdown = false; + } else { + showDropdown = true; + } + currentPageName = currentPageName + "|"; console.log("[i]", "user on page:", currentPageName); @@ -164,10 +175,13 @@ onMount(async () => { console.log("[i]", "mounted"); whenDeviceListWasUpdated(); + //флаг первого запроса списка устройств firstDevListRequest = true; + //вначале подключимся к известному нам ip этого устройства connectToAllDevices(); wsTestMsgTask(); //sortingLayout(); + ticker(); }); //****************************************************web sockets section******************************************************/ @@ -181,6 +195,7 @@ if (!device.status) { wsConnect(ws); wsEventAdd(ws); + } else { } ws++; }); @@ -592,14 +607,18 @@ deviceList = incDeviceList; deviceList[0].status = true; } else { + //при последующих прилетах списка устройств мы переписываем в массиве только то что изменилось deviceList = combineArrays(deviceList, incDeviceList); } + //deviceList = incDeviceList; firstDevListRequest = false; deviceList = deviceList; parsed.deviceListJson = true; if (blobDebug) console.log("[✔]", "deviceList parced"); onParced(); whenDeviceListWasUpdated(); + console.log("[✔]", deviceList); + //затем подключимся к всему полученному списку устройств connectToAllDevices(); } @@ -746,18 +765,27 @@ function saveSett() { var size = Object.keys(settingsJson).length; - //console.log("[i]", "settingsJson length: " + size); + console.log("[i]", "settingsJson length: " + size); if (size > 5) { jsonArrWrite(deviceList, "ip", getIP(selectedWs), "name", settingsJson.name); deviceList = deviceList; wsSendMsg(selectedWs, "/sgnittes|" + JSON.stringify(settingsJson)); } else { - window.alert("Ошибка"); + window.alert("Ошибка размера settingsJson (возможно не был передан странице)"); } clearData(); sendCurrentPageName(); } + function saveList() { + //при сохранении списка в память необходимо удалить все статусы + let devListForSave = Object.assign([], deviceList); + for (let i = 0; i < devListForSave.length; i++) { + delete devListForSave[i].status; + } + wsSendMsg(selectedWs, "/tsil|" + JSON.stringify(devListForSave)); + } + function cleanLogs() { wsSendMsg(selectedWs, "/clean|"); } @@ -859,6 +887,16 @@ layoutJson = []; paramsJson = {}; //? + //deviceList = [ + // { + // name: "--", + // id: "--", + // ip: myip, + // ws: 0, + // status: false, + // }, + //]; + for (const [key, value] of Object.entries(pageReady)) { pageReady[key] = false; } @@ -877,10 +915,10 @@ } function clearFlags() { - for (let i = 0; i < deviceList.length; i++) { - deviceList[i].pp = false; - deviceList[i].lp = false; - } + //for (let i = 0; i < deviceList.length; i++) { + //deviceList[i].pp = false; + //deviceList[i].lp = false; + //} } function wsPush(ws, topic, status) { @@ -895,6 +933,7 @@ setTimeout(wsTestMsgTask, reconnectTimeout); if (!rebootingUpdatingInProgress) { if (debug) console.log("[i]", "----timer tick----"); + if (!firstTime) { deviceList.forEach((device) => { if (!getDeviceStatus(device.ws)) { @@ -976,6 +1015,7 @@ } } + //функция которая записывает в переменную данные выбранного юзером устройства function getSelectedDeviceData(ws) { for (let i = 0; i < deviceList.length; i++) { let device = deviceList[i]; @@ -1265,15 +1305,18 @@ {/if}
-
- -
+ {#if showDropdown} +
+ +
+ {/if} + @@ -1324,22 +1367,22 @@ wsPush(ws, topic, status)} /> - saveConfig()} cleanLogs={() => cleanLogs()} rebootEsp={() => rebootEsp()} moduleOrder={(id, key, value) => moduleOrder(id, key, value)} /> + saveConfig()} cleanLogs={() => cleanLogs()} rebootEsp={() => rebootEsp()} moduleOrder={(id, key, value) => moduleOrder(id, key, value)} /> rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} /> - addDevInList()} newDevice={newDevice} sendToAllDevices={(msg) => sendToAllDevices(msg)} /> + addDevInList()} newDevice={newDevice} sendToAllDevices={(msg) => sendToAllDevices(msg)} saveList={() => saveList()} /> - saveSett()} rebootEsp={() => rebootEsp()} cleanLogs={() => cleanLogs()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} versionsList={versionsList} bind:choosingVersion startUpdate={() => startUpdate()} coreMessages={coreMessages} /> + saveSett()} rebootEsp={() => rebootEsp()} cleanLogs={() => cleanLogs()} cancelAlarm={(alarmKey) => cancelAlarm(alarmKey)} versionsList={versionsList} bind:choosingVersion={choosingVersion} startUpdate={() => startUpdate()} coreMessages={coreMessages} /> {#if devMode} - + {/if} @@ -1348,7 +1391,7 @@ -
+
Developed by Dmitry Borisenko
diff --git a/src/pages/Dashboard.svelte b/src/pages/Dashboard.svelte index 9f4bfd1..5617f67 100644 --- a/src/pages/Dashboard.svelte +++ b/src/pages/Dashboard.svelte @@ -35,38 +35,39 @@ {#if show} -
- {#if empty} - - {/if} -
-
- {#each pages as pagesName, p} - - {#each layoutJson as widget, l} - {#if widget.page === pagesName.page} - {#if widget.widget === "input"} - wsPush(ws, topic, status)} /> +
+ {#if empty} + + {/if} +
+ +
+ {#each pages as pagesName, p} + + {#each layoutJson as widget, l} + {#if widget.page === pagesName.page} + {#if widget.widget === "input"} + wsPush(ws, topic, status)} /> + {/if} + {#if widget.widget === "toggle"} + wsPush(ws, topic, status)} /> + {/if} + {#if widget.widget === "anydata"} + + {/if} + {#if widget.widget === "range"} + wsPush(ws, topic, status)} /> + {/if} + {#if widget.widget === "chart"} + + {/if} {/if} - {#if widget.widget === "toggle"} - wsPush(ws, topic, status)} /> - {/if} - {#if widget.widget === "anydata"} - - {/if} - {#if widget.widget === "range"} - wsPush(ws, topic, status)} /> - {/if} - {#if widget.widget === "chart"} - - {/if} - {/if} - {/each} - - {/each} + {/each} + + {/each} +
-
{:else} {/if} diff --git a/src/pages/Dev.svelte b/src/pages/Dev.svelte index bb6a1ee..2ec8991 100644 --- a/src/pages/Dev.svelte +++ b/src/pages/Dev.svelte @@ -26,25 +26,27 @@ {#if show} -
- - - - - - - - - - - - - - - - - - +
+
+ + + + + + + + + + + + + + + + + + +
{:else} diff --git a/src/pages/List.svelte b/src/pages/List.svelte index 53b806e..baad531 100644 --- a/src/pages/List.svelte +++ b/src/pages/List.svelte @@ -10,8 +10,10 @@ export let deviceList; export let showInput; export let newDevice = {}; + export let settingsJson; export let addDevInList = () => {}; + export let saveList = () => {}; export let sendToAllDevices = (msg) => {}; @@ -32,7 +34,7 @@ {#if show}
- + @@ -52,7 +54,9 @@ - + {#if i > 0} + + {/if} {/each} {#if showInput} @@ -65,14 +69,17 @@ {/if}
{device.id} {device.status ? "online" : "offline"} {device.ping ? device.ping : "-"} deleteLineFromDevlist(i)} /> deleteLineFromDevlist(i)} />
-
- +
+ {#if !settingsJson.udps} + + {/if} +
-

Прошитые прошивкой IoT Manager устройства появятся в списке автоматически в течении минуты. Для обновления названий устройств нужно обновить страницу. Устройства должны быть подключены к одному wifi роутеру.

+

Авто режим - список создается автоматически, можно нажать кнопку "сохранить список" что бы использовать его потом в ручном режиме. Ручной режим - используется сохраненный список, возможно ручное добавление удаление устройств. Для переключения режима перейдите на страницу "системные"

{:else} diff --git a/src/pages/System.svelte b/src/pages/System.svelte index 86ec5c1..ecea179 100644 --- a/src/pages/System.svelte +++ b/src/pages/System.svelte @@ -334,7 +334,7 @@
(paramsBeenChanged = true)} id="log" type="checkbox" class="sr-only" />
-
+
@@ -350,7 +350,7 @@
(reboot = true)} id="mqtt" type="checkbox" class="sr-only" />
-
+
@@ -367,11 +367,12 @@
(reboot = true)} id="i2c" type="checkbox" class="sr-only" />
-
+
+ {#if settingsJson.i2c === true}
@@ -399,6 +400,22 @@
{/if} + +
+
+

Автоматический поиск устройств по UDP

+
+
+