сценарии

This commit is contained in:
Dmitry Borisenko
2022-02-23 01:38:43 +01:00
parent 91a6fac56e
commit afb8bb9d00
5 changed files with 62 additions and 25 deletions

18
package-lock.json generated
View File

@@ -1076,9 +1076,9 @@
} }
}, },
"postcss-load-config": { "postcss-load-config": {
"version": "3.1.1", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz",
"integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==", "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==",
"dev": true, "dev": true,
"requires": { "requires": {
"lilconfig": "^2.0.4", "lilconfig": "^2.0.4",
@@ -1246,9 +1246,9 @@
} }
}, },
"rollup": { "rollup": {
"version": "2.67.0", "version": "2.68.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz",
"integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==", "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==",
"dev": true, "dev": true,
"requires": { "requires": {
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
@@ -1487,9 +1487,9 @@
} }
}, },
"svelte-preprocess": { "svelte-preprocess": {
"version": "4.10.2", "version": "4.10.3",
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.2.tgz", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.3.tgz",
"integrity": "sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==", "integrity": "sha512-ttw17lJfb/dx2ZJT9sesaXT5l7mPQ9Apx1H496Kli3Hkk7orIRGpOw6rCPkRNzr6ueVPqb4vzodS5x7sBFhKHw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/pug": "^2.0.4", "@types/pug": "^2.0.4",

View File

@@ -12,16 +12,16 @@
"@rollup/plugin-node-resolve": "^11.0.0", "@rollup/plugin-node-resolve": "^11.0.0",
"autoprefixer": "^10.4.2", "autoprefixer": "^10.4.2",
"postcss": "^8.4.6", "postcss": "^8.4.6",
"postcss-load-config": "^3.1.1", "postcss-load-config": "^3.1.3",
"prettier": "^2.5.1", "prettier": "^2.5.1",
"prettier-plugin-svelte": "^2.6.0", "prettier-plugin-svelte": "^2.6.0",
"rollup": "^2.67.0", "rollup": "^2.68.0",
"rollup-plugin-css-only": "^3.1.0", "rollup-plugin-css-only": "^3.1.0",
"rollup-plugin-livereload": "^2.0.0", "rollup-plugin-livereload": "^2.0.0",
"rollup-plugin-svelte": "^7.0.0", "rollup-plugin-svelte": "^7.0.0",
"rollup-plugin-terser": "^7.0.0", "rollup-plugin-terser": "^7.0.0",
"svelte": "^3.46.4", "svelte": "^3.46.4",
"svelte-preprocess": "^4.10.2", "svelte-preprocess": "^4.10.3",
"tailwindcss": "^2.2.19", "tailwindcss": "^2.2.19",
"tinro": "^0.5.12" "tinro": "^0.5.12"
}, },

View File

@@ -99,6 +99,10 @@
let incDeviceList = []; let incDeviceList = [];
let incDeviceListParced = false; let incDeviceListParced = false;
let scenarioTxt = "";
let scenarioTxtFlag = false;
let scenarioTxtParced = false;
let deviceList = []; let deviceList = [];
deviceList = [ deviceList = [
{ {
@@ -151,6 +155,8 @@
var widgetsJsonBlob = new MyBlobBuilder(); var widgetsJsonBlob = new MyBlobBuilder();
var itemsJsonBlob = new MyBlobBuilder(); var itemsJsonBlob = new MyBlobBuilder();
var layoutJsonBlob = new MyBlobBuilder(); var layoutJsonBlob = new MyBlobBuilder();
var layoutJsonBlob = new MyBlobBuilder();
var scenarioTxtBlob = new MyBlobBuilder();
//var blobArr = new MyBlobBuilder()[10]; //var blobArr = new MyBlobBuilder()[10];
@@ -283,15 +289,15 @@
deviceList = combineArrays(deviceList, incDeviceList); deviceList = combineArrays(deviceList, incDeviceList);
} }
firstDevListRequest = false; firstDevListRequest = false;
deviceList.sort(function (a, b) { //deviceList.sort(function (a, b) {
if (a.name < b.name) { // if (a.name < b.name) {
return -1; // return -1;
} // }
if (a.name > b.name) { // if (a.name > b.name) {
return 1; // return 1;
} // }
return 0; // return 0;
}); //});
deviceList = deviceList; deviceList = deviceList;
whenDeviceListWasUpdated(); whenDeviceListWasUpdated();
connectToAllDevices(); connectToAllDevices();
@@ -358,6 +364,24 @@
} }
//BLOB============================================================== //BLOB==============================================================
//сборщик scenario.txt пакетов======================================
if (data === "/st/scenario.txt") {
scenarioTxtFlag = true;
}
if (data === "/end/scenario.txt") {
scenarioTxtFlag = false;
var bb = scenarioTxtBlob.getBlob();
let scenarioTxtReader = new FileReader();
scenarioTxtReader.readAsText(bb);
scenarioTxtReader.onload = () => {
let scenarioTxtResult = scenarioTxtReader.result;
scenarioTxt = scenarioTxtResult;
scenarioTxt = scenarioTxt;
scenarioTxtParced = true;
if (debug) console.log("✔", "scenarioTxt parced");
onParced("scenario");
};
}
//сборщик configJson пакетов======================================== //сборщик configJson пакетов========================================
if (data === "/st/config.json") { if (data === "/st/config.json") {
configJsonFlag = true; configJsonFlag = true;
@@ -448,6 +472,7 @@
if (widgetsJsonFlag) widgetsJsonBlob.append(event.data); if (widgetsJsonFlag) widgetsJsonBlob.append(event.data);
if (itemsJsonFlag) itemsJsonBlob.append(event.data); if (itemsJsonFlag) itemsJsonBlob.append(event.data);
if (layoutJsonFlag) layoutJsonBlob.append(event.data); if (layoutJsonFlag) layoutJsonBlob.append(event.data);
if (scenarioTxtFlag) scenarioTxtBlob.append(event.data);
} }
} }
}); });
@@ -472,7 +497,7 @@
wigetsUpdate(); wigetsUpdate();
dashReady = true; dashReady = true;
} }
if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced) { if (currentPageName === "/config|" && itemsJsonParced && widgetsJsonParced && configJsonParced && settingsJsonParced && scenarioTxtParced) {
clearParcedFlags(); clearParcedFlags();
if (debug) console.log("✔✔", "config data parced"); if (debug) console.log("✔✔", "config data parced");
configReady = true; configReady = true;
@@ -498,6 +523,7 @@
function saveConfig() { function saveConfig() {
wsSendMsg(selectedWs, "/tuoyal|" + JSON.stringify(generateLayout())); wsSendMsg(selectedWs, "/tuoyal|" + JSON.stringify(generateLayout()));
wsSendMsg(selectedWs, "/gifnoc|" + JSON.stringify(configJson)); wsSendMsg(selectedWs, "/gifnoc|" + JSON.stringify(configJson));
wsSendMsg(selectedWs, "/oiranecs|" + scenarioTxt);
clearData(); clearData();
sendCurrentPageName(); sendCurrentPageName();
} }
@@ -598,6 +624,9 @@
coreMessages = []; coreMessages = [];
scenarioTxt = "";
scenarioTxtBlob.clear();
dashReady = false; dashReady = false;
configReady = false; configReady = false;
connectionReady = false; connectionReady = false;
@@ -620,6 +649,7 @@
paramsJsonParced = false; paramsJsonParced = false;
statusJsonParced = false; statusJsonParced = false;
incDeviceListParced = false; incDeviceListParced = false;
scenarioTxtParced = false;
} }
function wsPush(ws, topic, status) { function wsPush(ws, topic, status) {
@@ -1070,7 +1100,7 @@
<DashboardPage show={dashReady} layoutJson={layoutJson} pages={pages} wsPush={(ws, topic, status) => wsPush(ws, topic, status)} /> <DashboardPage show={dashReady} layoutJson={layoutJson} pages={pages} wsPush={(ws, topic, status) => wsPush(ws, topic, status)} />
</Route> </Route>
<Route path="/config"> <Route path="/config">
<ConfigPage show={configReady} configJson={configJson} widgetsJson={widgetsJson} itemsJson={itemsJson} saveConfig={() => saveConfig()} rebootEsp={() => rebootEsp()} /> <ConfigPage show={configReady} configJson={configJson} widgetsJson={widgetsJson} itemsJson={itemsJson} bind:scenarioTxt saveConfig={() => saveConfig()} rebootEsp={() => rebootEsp()} />
</Route> </Route>
<Route path="/connection"> <Route path="/connection">
<ConnectionPage show={connectionReady} rebootEsp={() => rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} /> <ConnectionPage show={connectionReady} rebootEsp={() => rebootEsp()} ssidClick={() => ssidClick()} saveSett={() => saveSett()} saveMqtt={() => saveMqtt()} settingsJson={settingsJson} errorsJson={errorsJson} ssidJson={ssidJson} />

View File

@@ -10,6 +10,8 @@
export let show; export let show;
export let scenarioTxt;
let itemsJsonBind = 0; let itemsJsonBind = 0;
let debug = true; let debug = true;
@@ -47,7 +49,7 @@
{#if show} {#if show}
<div class="grd-1col1"> <div class="grd-1col1">
<Card> <Card title="Конфигуратор">
<div class="grd-2col2"> <div class="grd-2col2">
<select class="slct-lg" bind:value={itemsJsonBind} on:change={() => elementsDropdownChange()}> <select class="slct-lg" bind:value={itemsJsonBind} on:change={() => elementsDropdownChange()}>
{#each itemsJson as item} {#each itemsJson as item}
@@ -114,6 +116,11 @@
{/each} {/each}
</tbody> </tbody>
</table> </table>
</Card>
</div>
<div class="grd-1col1">
<Card title="Сценарии">
<textarea bind:value={scenarioTxt} class="ipt-big h-80 w-full" />
<div class="grd-2col1"> <div class="grd-2col1">
<button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button> <button class="btn-lg" on:click={() => saveConfig()}>{"Сохранить"}</button>
<button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button> <button class="btn-lg" on:click={() => rebootEsp()}>{"Перезагрузить"}</button>

View File

@@ -245,7 +245,7 @@
<p class="pr-4 text-gray-500 font-bold text-sm truncate">Причина перезагрузки</p> <p class="pr-4 text-gray-500 font-bold text-sm truncate">Причина перезагрузки</p>
</div> </div>
<div class="flex justify-center w-1/3 text-sm"> <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> <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>
</div> </div>
</div> </div>
<button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button> <button class="btn-lg" on:click={() => startUpdate()}>{"Обновить прошивку"}</button>