diff --git a/.gitignore b/.gitignore index e1d4488..71338e9 100755 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ website-source-copy website-zipped website-zipped_bak .vscode +target +/data/ +/data2/ diff --git a/data/NotoSansBold15.vlw b/data/NotoSansBold15.vlw deleted file mode 100755 index 803a1bd..0000000 Binary files a/data/NotoSansBold15.vlw and /dev/null differ diff --git a/data/NotoSansBold36.vlw b/data/NotoSansBold36.vlw deleted file mode 100755 index 66003f6..0000000 Binary files a/data/NotoSansBold36.vlw and /dev/null differ diff --git a/data/Nunito-Light20.vlw b/data/Nunito-Light20.vlw deleted file mode 100755 index 55a6e41..0000000 Binary files a/data/Nunito-Light20.vlw and /dev/null differ diff --git a/data/Nunito-Light28.vlw b/data/Nunito-Light28.vlw deleted file mode 100755 index 97c6a07..0000000 Binary files a/data/Nunito-Light28.vlw and /dev/null differ diff --git a/data/Nunito-Light32.vlw b/data/Nunito-Light32.vlw deleted file mode 100755 index a2e3b07..0000000 Binary files a/data/Nunito-Light32.vlw and /dev/null differ diff --git a/data/Nunito-Regular20.vlw b/data/Nunito-Regular20.vlw deleted file mode 100755 index 7ea87fd..0000000 Binary files a/data/Nunito-Regular20.vlw and /dev/null differ diff --git a/data/WebSocket.js.gz b/data/WebSocket.js.gz deleted file mode 100755 index 07678ba..0000000 Binary files a/data/WebSocket.js.gz and /dev/null differ diff --git a/data/colors.css.gz b/data/colors.css.gz deleted file mode 100644 index 749506f..0000000 Binary files a/data/colors.css.gz and /dev/null differ diff --git a/data/edit.html.gz b/data/edit.html.gz deleted file mode 100644 index 3198285..0000000 Binary files a/data/edit.html.gz and /dev/null differ diff --git a/data/favicon.ico.gz b/data/favicon.ico.gz deleted file mode 100755 index 126c8e1..0000000 Binary files a/data/favicon.ico.gz and /dev/null differ diff --git a/data/index.html.gz b/data/index.html.gz deleted file mode 100755 index 5ed3922..0000000 Binary files a/data/index.html.gz and /dev/null differ diff --git a/data/ledcontrol.html.gz b/data/ledcontrol.html.gz deleted file mode 100755 index ae99f86..0000000 Binary files a/data/ledcontrol.html.gz and /dev/null differ diff --git a/data/loadMenu.js.gz b/data/loadMenu.js.gz deleted file mode 100644 index d20f950..0000000 Binary files a/data/loadMenu.js.gz and /dev/null differ diff --git a/data/main.css.gz b/data/main.css.gz deleted file mode 100644 index e606c35..0000000 Binary files a/data/main.css.gz and /dev/null differ diff --git a/data/main.js.gz b/data/main.js.gz deleted file mode 100644 index 2eb7731..0000000 Binary files a/data/main.js.gz and /dev/null differ diff --git a/data/manifest.json.gz b/data/manifest.json.gz deleted file mode 100755 index 46e5319..0000000 Binary files a/data/manifest.json.gz and /dev/null differ diff --git a/data/manualMode-ajax.html.gz b/data/manualMode-ajax.html.gz deleted file mode 100755 index 2ce7910..0000000 Binary files a/data/manualMode-ajax.html.gz and /dev/null differ diff --git a/data/manualMode.html.gz b/data/manualMode.html.gz deleted file mode 100755 index 1365e16..0000000 Binary files a/data/manualMode.html.gz and /dev/null differ diff --git a/data/menu.html.gz b/data/menu.html.gz deleted file mode 100755 index 39e4bce..0000000 Binary files a/data/menu.html.gz and /dev/null differ diff --git a/data/nunito-regular-webfont.woff b/data/nunito-regular-webfont.woff deleted file mode 100755 index 2735281..0000000 Binary files a/data/nunito-regular-webfont.woff and /dev/null differ diff --git a/data/nunito-regular-webfont.woff2 b/data/nunito-regular-webfont.woff2 deleted file mode 100755 index 3dcf532..0000000 Binary files a/data/nunito-regular-webfont.woff2 and /dev/null differ diff --git a/data/settings-ajax.html.gz b/data/settings-ajax.html.gz deleted file mode 100755 index cb025de..0000000 Binary files a/data/settings-ajax.html.gz and /dev/null differ diff --git a/data/settings-success.html.gz b/data/settings-success.html.gz deleted file mode 100755 index 55cfbc0..0000000 Binary files a/data/settings-success.html.gz and /dev/null differ diff --git a/data/settings.html.gz b/data/settings.html.gz deleted file mode 100755 index fb034c4..0000000 Binary files a/data/settings.html.gz and /dev/null differ diff --git a/data/settings.js.gz b/data/settings.js.gz deleted file mode 100644 index 6093525..0000000 Binary files a/data/settings.js.gz and /dev/null differ diff --git a/data/settingsFile1.txt b/data/settingsFile1.txt deleted file mode 100755 index c508163..0000000 --- a/data/settingsFile1.txt +++ /dev/null @@ -1,7 +0,0 @@ -{ - "shour1": 16, - "fadePeriod1": 30, - "smin1": 0, - "ehour": 22, - "emin": 0 -} diff --git a/data/settingsFile2.txt b/data/settingsFile2.txt deleted file mode 100755 index 8bf54c1..0000000 --- a/data/settingsFile2.txt +++ /dev/null @@ -1,7 +0,0 @@ -{ - "shour2": 16, - "fadePeriod2": 30, - "smin2": 0, - "ehour": 22, - "emin": 0 -} diff --git a/data/settingsFile3.txt b/data/settingsFile3.txt deleted file mode 100755 index 0da83a5..0000000 --- a/data/settingsFile3.txt +++ /dev/null @@ -1,7 +0,0 @@ -{ - "shour3": 16, - "fadePeriod3": 30, - "smin3": 0, - "ehour": 22, - "emin": 0 -} diff --git a/data/success.html.gz b/data/success.html.gz deleted file mode 100755 index 584a0ef..0000000 Binary files a/data/success.html.gz and /dev/null differ diff --git a/data/temperatures.txt.gz b/data/temperatures.txt.gz deleted file mode 100644 index 642784c..0000000 Binary files a/data/temperatures.txt.gz and /dev/null differ diff --git a/data/uploadButtonStyle.js.gz b/data/uploadButtonStyle.js.gz deleted file mode 100644 index 0407911..0000000 Binary files a/data/uploadButtonStyle.js.gz and /dev/null differ diff --git a/frontend-build.sh b/frontend-build.sh new file mode 100755 index 0000000..705e568 --- /dev/null +++ b/frontend-build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +rm -r frontend/target/ +rm -r data/ + +rsync -avz --progress frontend/src/** frontend/target/ +cd frontend/target/ + +find . \( \ +-name '*.css' \ +-o -name '*.html' \ +-o -name '*.js' \ +-o -name '*.jpg' \ +-o -name '*.png' \ +-o -name '*.ico' \ +\) -exec pigz --force --verbose {} \; + +cd ../.. +rsync -avz --progress frontend/target/** data/ \ No newline at end of file diff --git a/frontend/src/colors.css b/frontend/src/colors.css new file mode 100644 index 0000000..f399844 --- /dev/null +++ b/frontend/src/colors.css @@ -0,0 +1,159 @@ +/*------------------------------------ +- COLOR ternary +------------------------------------*/ + +.alert-ternary { + color: #001b1e; + background-color: #65edff; + border-color: #51eaff; +} + +.alert-ternary hr { + border-top-color: #38e7ff; +} + +.alert-ternary .alert-link { + color: #000000; +} + +.badge-ternary { + color: #fff; + background-color: #008799; +} + +.badge-ternary[href]:hover, +.badge-ternary[href]:focus { + color: #fff; + background-color: #005965; +} + +.bg-ternary { + background-color: #008799 !important; +} + +a.bg-ternary:hover, +a.bg-ternary:focus, +button.bg-ternary:hover, +button.bg-ternary:focus { + background-color: #005965 !important; +} + +.border-ternary { + border-color: #008799 !important; +} + +.btn-ternary { + color: #fff; + background-color: #008799; + border-color: #008799; +} + +.btn-ternary:hover { + color: #fff; + background-color: #006775; + border-color: #005965; +} + +.btn-ternary:focus, +.btn-ternary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 135, 153, 0.5); +} + +.btn-ternary.disabled, +.btn-ternary:disabled { + color: #fff; + background-color: #008799; + border-color: #008799; +} + +.btn-ternary:not(:disabled):not(.disabled):active, +.btn-ternary:not(:disabled):not(.disabled).active, +.show>.btn-ternary.dropdown-toggle { + color: #fff; + background-color: #005965; + border-color: #004c56; +} + +.btn-ternary:not(:disabled):not(.disabled):active:focus, +.btn-ternary:not(:disabled):not(.disabled).active:focus, +.show>.btn-ternary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 135, 153, 0.5); +} + +.btn-outline-ternary { + color: #008799; + background-color: transparent; + border-color: #008799; +} + +.btn-outline-ternary:hover { + color: #fff; + background-color: #008799; + border-color: #008799; +} + +.btn-outline-ternary:focus, +.btn-outline-ternary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 135, 153, 0.5); +} + +.btn-outline-ternary.disabled, +.btn-outline-ternary:disabled { + color: #008799; + background-color: transparent; +} + +.btn-outline-ternary:not(:disabled):not(.disabled):active, +.btn-outline-ternary:not(:disabled):not(.disabled).active, +.show>.btn-outline-ternary.dropdown-toggle { + color: #fff; + background-color: #008799; + border-color: #008799; +} + +.btn-outline-ternary:not(:disabled):not(.disabled):active:focus, +.btn-outline-ternary:not(:disabled):not(.disabled).active:focus, +.show>.btn-outline-ternary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 135, 153, 0.5); +} + +.list-group-item-ternary { + color: #001b1e; + background-color: #51eaff; +} + +.list-group-item-ternary.list-group-item-action:hover, +.list-group-item-ternary.list-group-item-action:focus { + color: #001b1e; + background-color: #38e7ff; +} + +.list-group-item-ternary.list-group-item-action.active { + color: #fff; + background-color: #001b1e; + border-color: #001b1e; +} + +.table-ternary, +.table-ternary>th, +.table-ternary>td { + background-color: #51eaff; +} + +.table-hover .table-ternary:hover { + background-color: #38e7ff; +} + +.table-hover .table-ternary:hover>td, +.table-hover .table-ternary:hover>th { + background-color: #38e7ff; +} + +.text-ternary { + color: #008799 !important; +} + +a.text-ternary:hover, +a.text-ternary:focus { + color: #005965 !important; +} \ No newline at end of file diff --git a/data/combinedSettingsFile.txt b/frontend/src/combinedSettingsFile.txt similarity index 100% rename from data/combinedSettingsFile.txt rename to frontend/src/combinedSettingsFile.txt diff --git a/frontend/src/edit.html b/frontend/src/edit.html new file mode 100644 index 0000000..c6435be --- /dev/null +++ b/frontend/src/edit.html @@ -0,0 +1,61 @@ + + + + + ESP8266 SPIFFS File Upload + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

ESP8266 SPIFFS File Upload

+ +
+
+

Select a new file to upload to the ESP8266. Existing files will be replaced.

+
+
+ +

You can drag and drop files as well

+
+
+ +
+
+
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/frontend/src/index.html b/frontend/src/index.html new file mode 100755 index 0000000..fe0917e --- /dev/null +++ b/frontend/src/index.html @@ -0,0 +1,109 @@ + + + + + Home + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+

Welcome

+

Welcome to the planted aquarium controller.

+
+
+
+
+
+
+
+
+
+

Settings at a glance

+
+
+ +
+
+ +
+
+

Ballast #1

+
+
+
+
+
+
+
+
+

Ballast #2

+
+
+
+
+
+
+
+
+

Ballast #3

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+

+ +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/frontend/src/ledcontrol.html b/frontend/src/ledcontrol.html new file mode 100755 index 0000000..e2d80b1 --- /dev/null +++ b/frontend/src/ledcontrol.html @@ -0,0 +1,39 @@ + + + + LED Control + + + + + + + + + + + +
+
+

LED Control

+
+
+ + + + + + + + + + + + + +
R:
G:
B:
+

+
+
+ + diff --git a/frontend/src/loadMenu.js b/frontend/src/loadMenu.js new file mode 100644 index 0000000..39493b1 --- /dev/null +++ b/frontend/src/loadMenu.js @@ -0,0 +1,3 @@ +$(document).ready(function() { + $('#navigation').load('menu.html'); +}); \ No newline at end of file diff --git a/frontend/src/main.css b/frontend/src/main.css new file mode 100644 index 0000000..2747ae2 --- /dev/null +++ b/frontend/src/main.css @@ -0,0 +1,29 @@ +/* .navbar-light .nav-item.active .nav-link, +.navbar-light .nav-item:focus .nav-link, +.navbar-light .nav-item:hover .nav-link { + color: #ffffff; +} */ + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, .5); + color: #ffffff; +} + + +/* #form-section { + width: 30%; + margin: auto; +} + +#manual-card { + width: 40%; +} */ + +@media only screen and (max-width: 900px) { + /* #form-section { + width: 90%; + } + #manual-card { + width: 90%; + } */ +} \ No newline at end of file diff --git a/frontend/src/main.js b/frontend/src/main.js new file mode 100644 index 0000000..66e0051 --- /dev/null +++ b/frontend/src/main.js @@ -0,0 +1,177 @@ +function incHeight() { + var el = document.getElementById('mySection'); + var height = el.offsetHeight; + console.log("Height = " + height); + var newHeight = height + 250; + el.style.height = newHeight + 'px'; +} + +var header = document.querySelector('header'); +var section = document.querySelector('section'); + +function handleErrors(response) { + if (!response.ok) { + throw Error(response.statusText); + } + return response; +} + + +async function getData() { + //await the response of the fetch call + let response = await fetch('combinedSettingsFile.txt'); + //proceed once the first promise is resolved. + let data = await response.json() + //proceed only when the second promise is resolved + return data; +} + +async function getTemperatures() { + //await the response of the fetch call + let response = await fetch('temperatures.txt'); + //proceed once the first promise is resolved. + let data = await response.json() + //proceed only when the second promise is resolved + return data; +} +async function getTemperatures2() { + //await the response of the fetch call + let response = await fetch('api/get/temperatures'); + //proceed once the first promise is resolved. + let data = await response.json() + //proceed only when the second promise is resolved + return data; +} +getTemperatures() + .then(data => { + data.temperatures.forEach(function(temperature) { + console.log(temperature); + }) + }) + +// .then(result => { +// //Here body is not ready yet, throw promise +// if (!result.ok) throw result; +// return result.json(); +// }) +// .then(result => { +// //Successful request processing +// console.log(result); +// }).catch(error => { +// //Here is still promise +// console.log(error); +// error.json().then((body) => { +// //Here is already the payload from API +// console.log(body); +// }); +// }) + +setInterval(function() { + let temperaturesSwitch = document.getElementById('temperatures-switch'); + if (temperaturesSwitch.checked) { + // getTemperatures2() + fetch('api/get/temperatures') + // .then(handleErrors) + .then(result => { + //Here body is not ready yet, throw promise + if (!result.ok) throw result; + return result.json(); + }) + .then(data => { + let p = document.getElementById('temperature'); + if (data.status == 'failed') { + let errorMessage = sprintf('status = %s reason = %s', data.status, data.message) + p.textContent = errorMessage; + console.log(errorMessage); + } else { + + p.textContent = ""; + data.temperatures.forEach(function(temperature) { + + console.log("Temperature = " + temperature); + temp = sprintf("%05.2f", temperature); + p.textContent += temp + ' '; + + }) + // let temp = sprintf("%.2f", 36.72); + // p.textContent += temp + ' '; + } + }) + .catch(error => { + //Here is still promise + // console.log(error); + // if (error.status == 404) { + // console.log('error = ' + 404); + // } + // else { + // error.json().then((body) => { + //Here is already the payload from API + // let errorMessage = sprintf('status = %s reason = %s', body.status, body.message) + // console.log(errorMessage); + // }); + // } + let p = document.getElementById('temperature'); + p.textContent = 'Network Error'; + }) + } + }, + 2000 +); + +//call getData function +getData() + //.then(data => console.log(data))//log the data + .then(function showSettings(data) { + var ballasts = data['settings']; + console.log(ballasts); + for (let i = 0; i < 3; i++) { + // var myArticle = document.createElement('article'); + // var myH2 = document.createElement('h3'); + // var myPara1 = document.createElement('p'); + // var myPara2 = document.createElement('p'); + // var myPara3 = document.createElement('p'); + // var myPara4 = document.createElement('p'); + // var myPara5 = document.createElement('p'); + // // var myList = document.createElement('ul'); + + // myH2.textContent = 'Ballast' + ' #' + (i + 1); + // myPara1.textContent = 'Start Hour: ' + ballasts[i].shour; + // myPara2.textContent = 'Start Minute: ' + ballasts[i].smin; + // myPara3.textContent = 'Fade Period: ' + ballasts[i].fadePeriod; + // myPara4.textContent = 'End Hour: ' + ballasts[i].ehour; + // myPara5.textContent = 'End Minute: ' + ballasts[i].emin; + // console.log(ballasts[i].shour); + // myArticle.appendChild(myH2); + // myArticle.appendChild(myPara1); + // myArticle.appendChild(myPara2); + // myArticle.appendChild(myPara3); + // myArticle.appendChild(myPara4); + // myArticle.appendChild(myPara5); + // // myArticle.appendChild(myList); + // section.appendChild(myArticle); + let myDiv = document.getElementById('ballast' + (i + 1)); + // let myH2 = document.createElement('h3'); + let myPara1 = document.createElement('p'); + let myPara2 = document.createElement('p'); + let myPara3 = document.createElement('p'); + let myPara4 = document.createElement('p'); + let myPara5 = document.createElement('p'); + + // myH2.textContent = 'Ballast' + ' #' + (i + 1); + myPara1.textContent = 'Start Hour: ' + ballasts[i].shour; + myPara2.textContent = 'Start Minute: ' + ballasts[i].smin; + myPara3.textContent = 'Fade Period: ' + ballasts[i].fadePeriod; + myPara4.textContent = 'End Hour: ' + ballasts[i].ehour; + myPara5.textContent = 'End Minute: ' + ballasts[i].emin; + + // myDiv.appendChild(myH2); + myDiv.appendChild(myPara1); + myDiv.appendChild(myPara2); + myDiv.appendChild(myPara3); + myDiv.appendChild(myPara4); + myDiv.appendChild(myPara5); + } + return data; + }) + .then(data => console.log(data)) + // .then(incHeight()); \ No newline at end of file diff --git a/frontend/src/main_bak.css b/frontend/src/main_bak.css new file mode 100755 index 0000000..7c9be60 --- /dev/null +++ b/frontend/src/main_bak.css @@ -0,0 +1,186 @@ +.nav-pills .nav-link.active, +.nav-pills .show>.nav-link { + color: #fff; + background-color: #00878F; +} + +@font-face { + font-family: 'nunitoregular'; + src: url('nunito-regular-webfont.woff2') format('woff2'), url('nunito-regular-webfont.woff') format('woff'); + font-weight: normal; + font-style: normal; +} + +iframe { + border: none; + align-self: center; + align-content: center; + align-items: center; +} + +center { + width: 70%; + max-width: 100%; + margin: 0px auto; + font-family: 'Roboto', sans-serif; + color: #444; +} + +header { + background-color: #00878F; + color: white; + padding: 6px; + font-family: 'Roboto', sans-serif; + box-shadow: 1px 1px 5px #555555; + position: relative; +} + +h1 { + margin: 0px; + font-family: 'Roboto', sans-serif; + font-size: 32; +} + +h2 { + color: #00878f; +} + +h3 { + color: #00878f; +} + +.shadow { + box-shadow: 1px 1px 5px #555555; + /* height: 500px; */ +} + +.navmenu { + margin-top: 10px; + margin-left: 0px; +} + +.navm { + margin: 2px; +} + +radio { + float: left; +} + +.content { + margin: 10px 10px 10px 10px +} + +table { + margin: 5px 24px 5px 12px; + border: #000000 +} + +.tbl { + margin-top: 10px; + margin-bottom: 5px; + border: #000000 +} + +td { + color: #555; +} + + +/* tr { + width: 100%; +} */ + +.button { + text-decoration: none; + border: none; + color: white; + background-color: #00878F; + padding: 6px 24px; + font-size: 16px; + cursor: pointer; + box-shadow: 1px 1px 6px #555; + outline: none; + margin: 12px auto 0px auto; + display: inline-block; +} + +.button:hover { + box-shadow: 1px 1px 3px #444; +} + +hr { + width: 97%; + margin-right: 10px; +} + +input[type=range] { + -webkit-appearance: none; + outline: none; + width: auto; + margin: 6px; +} + +input { + width: 95px; + height: 20px; +} + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: 0px; + height: 15px; + width: 15px; + margin-top: -6px; + border-radius: 7.5px; +} + +input.disabled[type=range]::-webkit-slider-thumb { + background: #999; +} + +input.enabled[type=range]::-webkit-slider-thumb { + background: #00878F; + cursor: pointer; + box-shadow: 1px 1px 2px #777, 0px 0px 1px #777; +} + +input[type=range]::-webkit-slider-runnable-track { + width: inherit; + height: 4px; + background: #ccc; + border-radius: 1px; +} + +input.enabled[type=range]::-webkit-slider-runnable-track { + cursor: pointer; +} + +p { + font-family: 'Nunito', sans-serif; +} + + +/* section styles */ + +section article { + width: 33%; + float: left; +} + +section p { + margin: 5px 0; +} + +section ul { + margin-top: 0; +} + +@media screen and (max-width: 900px) { + center { + width: 90%; + } + .content { + height: 600px; + } +} \ No newline at end of file diff --git a/frontend/src/manifest.json b/frontend/src/manifest.json new file mode 100755 index 0000000..f80d658 --- /dev/null +++ b/frontend/src/manifest.json @@ -0,0 +1,11 @@ +{ + "name": "LED Control", + "icons": [ + { + "src": "\/favicon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + } + ] +} diff --git a/frontend/src/manualMode-ajax.html b/frontend/src/manualMode-ajax.html new file mode 100755 index 0000000..5b97a55 --- /dev/null +++ b/frontend/src/manualMode-ajax.html @@ -0,0 +1,122 @@ + + + + + Manual Mode + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+

+ Manual Settings +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ + +
+
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/frontend/src/manualMode.html b/frontend/src/manualMode.html new file mode 100755 index 0000000..94968e9 --- /dev/null +++ b/frontend/src/manualMode.html @@ -0,0 +1,78 @@ + + + + + Manual Mode + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Manual Mode

+
+ +
+ + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ Yes + + No +
+

+
+ + +
+
+
+ + + \ No newline at end of file diff --git a/data/manualMode.txt b/frontend/src/manualMode.txt similarity index 100% rename from data/manualMode.txt rename to frontend/src/manualMode.txt diff --git a/frontend/src/menu.html b/frontend/src/menu.html new file mode 100755 index 0000000..2850342 --- /dev/null +++ b/frontend/src/menu.html @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/frontend/src/settings-ajax.html b/frontend/src/settings-ajax.html new file mode 100755 index 0000000..006bb74 --- /dev/null +++ b/frontend/src/settings-ajax.html @@ -0,0 +1,88 @@ + + + + + Settings + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +

Change Settings

+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + Must be a whole number +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/frontend/src/settings-success.html b/frontend/src/settings-success.html new file mode 100755 index 0000000..52a6e6f --- /dev/null +++ b/frontend/src/settings-success.html @@ -0,0 +1,23 @@ + + + Settings update successful + + + + + + + + + +
+
+

Success

+
+
+

Settings changed successfully.

+ Back +
+
+ + diff --git a/frontend/src/settings.html b/frontend/src/settings.html new file mode 100755 index 0000000..82aba0c --- /dev/null +++ b/frontend/src/settings.html @@ -0,0 +1,88 @@ + + + + Settings + + + + + + + + + + + + + + +

Settings page

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ Enter start hour:
+
+
+
+ Enter start minute:
+
+
+
+ Enter amount of time to fade in(in mins)(cannot be decimal):
+
+
+
+ Enter end hour:
+
+
+
+ Enter start minute:
+
+
+
+
+

+
+
+
+
+ + \ No newline at end of file diff --git a/frontend/src/settings.js b/frontend/src/settings.js new file mode 100644 index 0000000..2801fd1 --- /dev/null +++ b/frontend/src/settings.js @@ -0,0 +1,39 @@ +var myForm = document.getElementById('myForm') +myForm.addEventListener('submit', function(e) { + e.preventDefault(); + //var data = JSON.stringify(formData(myForm)); + loadJSON(formData(myForm)) +}) + +function formData(form) { +let el = form.querySelectorAll('input[type="text"]'); +let ballast = document.getElementById('myBallasts').value; +let myData = ''; + myData += 'ballast' + '=' + ballast + '&'; + for (var x = 0; x < el.length; x++) { + let name = el[x].name; + let value = el[x].value; + //myData[name] = value; + myData += name + '=' + value + '&' + } + return myData.slice(0, -1); +} + +function loadJSON(data) { + const url = '/settings.html'; + console.log(data) + const myData = data + fetch(url, { + method: 'post', + headers: { + "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" + }, + body: myData + }) + // .then(function (response) { + // return response.json() + // }).then(function (data) { + // console.log(data) + // }) + .catch(error => console.log(error)) +} \ No newline at end of file diff --git a/frontend/src/settingsFile1.txt b/frontend/src/settingsFile1.txt new file mode 100755 index 0000000..fc54fe7 --- /dev/null +++ b/frontend/src/settingsFile1.txt @@ -0,0 +1,7 @@ +{ + "shour": 16, + "fadePeriod": 30, + "smin": 0, + "ehour": 22, + "emin": 0 +} diff --git a/frontend/src/settingsFile2.txt b/frontend/src/settingsFile2.txt new file mode 100755 index 0000000..fc54fe7 --- /dev/null +++ b/frontend/src/settingsFile2.txt @@ -0,0 +1,7 @@ +{ + "shour": 16, + "fadePeriod": 30, + "smin": 0, + "ehour": 22, + "emin": 0 +} diff --git a/frontend/src/settingsFile3.txt b/frontend/src/settingsFile3.txt new file mode 100755 index 0000000..fc54fe7 --- /dev/null +++ b/frontend/src/settingsFile3.txt @@ -0,0 +1,7 @@ +{ + "shour": 16, + "fadePeriod": 30, + "smin": 0, + "ehour": 22, + "emin": 0 +} diff --git a/frontend/src/success.html b/frontend/src/success.html new file mode 100755 index 0000000..a552e98 --- /dev/null +++ b/frontend/src/success.html @@ -0,0 +1,23 @@ + + + HTML Upload successful + + + + + + + + + +
+
+

HTML Uploader

+
+
+

The upload was successful.

+ Back +
+
+ + diff --git a/frontend/src/temperatures.txt b/frontend/src/temperatures.txt new file mode 100644 index 0000000..cbcb0fe --- /dev/null +++ b/frontend/src/temperatures.txt @@ -0,0 +1,6 @@ +{ + "temperatures": [ + 48, + 2 + ] +} \ No newline at end of file diff --git a/frontend/src/uploadButtonStyle.js b/frontend/src/uploadButtonStyle.js new file mode 100644 index 0000000..6f9b0a1 --- /dev/null +++ b/frontend/src/uploadButtonStyle.js @@ -0,0 +1,8 @@ +$('#upload-button').filestyle({ + + buttonName: 'btn-success', + + buttonText: ' File selection', + btnClass: "btn-ternary", + dragDrop: true +}); \ No newline at end of file diff --git a/include.js b/include.js deleted file mode 100755 index 4d49a8b..0000000 --- a/include.js +++ /dev/null @@ -1,10 +0,0 @@ -$(function(){ - var includes = $('[data-include]'); - jQuery.each(includes, function(){ - var file = '/' + $(this).data('include') + '.html'; - $(this).load(file); - }); - }); -// $(document).ready(function(){ -// $( "#header" ).load( "/menu.html" ); -// }); \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 3f4edb5..8f8fb62 100755 --- a/platformio.ini +++ b/platformio.ini @@ -29,6 +29,6 @@ board_build.f_cpu = 160000000L ; --ip=192.168.1.103 ; --port=8266 ; --auth=esp8266 -build_flags = - -DLC_WIFI_SSID=${sysenv.WIFI_SSID} - -DLC_WIFI_PASS=${sysenv.WIFI_PASS} +; build_flags = +; -DLC_WIFI_SSID=${sysenv.WIFI_SSID} +; -DLC_WIFI_PASS=${sysenv.WIFI_PASS} diff --git a/src/main.cpp b/src/main.cpp index e2ad080..1d6b2d5 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -358,6 +358,8 @@ void startServer() server.send(200, "text/plain", rtcDate); }); + server.serveStatic("/", SPIFFS, "www", "no-cache"); + server.begin(); // start the HTTP server Serial.println("HTTP server started."); } @@ -366,6 +368,9 @@ void startServer() void handleNotFound() { // if the requested file or page doesn't exist, return a 404 not found error + server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server.sendHeader("Pragma", "no-cache"); + server.sendHeader("Expires", "-1"); if (!handleFileRead(server.uri())) { // check if the file exists in the flash memory (SPIFFS), if so, send it server.send(404, "application/json", "{\"status\":\"failed\",\"message\":\"Resource not found\"}"); @@ -498,21 +503,24 @@ void combineSettings() StaticJsonBuffer<100> jsonBuffer10; JsonObject &root1 = jsonBuffer10.parseObject(buf1.get()); - if (root1 == JsonObject::invalid()) + if (!root1.success()) { - Serial.println("Error1"); + Log.error("Error parsing JSON"); + return; } StaticJsonBuffer<100> jsonBuffer11; JsonObject &root2 = jsonBuffer11.parseObject(buf2.get()); - if (root2 == JsonObject::invalid()) + if (!root2.success()) { - Serial.println("Error2"); + Log.error("Error parsing JSON"); + return; } StaticJsonBuffer<100> jsonBuffer12; JsonObject &root3 = jsonBuffer12.parseObject(buf3.get()); - if (root3 == JsonObject::invalid()) + if (!root3.success()) { - Serial.println("Error3"); + Log.error("Error parsing JSON"); + return; } StaticJsonBuffer<50> jsonBuffer16; JsonObject &root5 = jsonBuffer16.parseObject(buf5.get()); @@ -574,6 +582,7 @@ void combineSettings() file5.close(); } +//FIXME borked - has strange/undefined behaviour void combineSettings_new() { const File file1 = SPIFFS.open("/settingsFile1.txt", "r"); diff --git a/website-zipped_bak/index.html.gz b/website-zipped_bak/index.html.gz deleted file mode 100755 index 83c4b6c..0000000 Binary files a/website-zipped_bak/index.html.gz and /dev/null differ diff --git a/website-zipped_bak/ledcontrol.html.gz b/website-zipped_bak/ledcontrol.html.gz deleted file mode 100755 index ae99f86..0000000 Binary files a/website-zipped_bak/ledcontrol.html.gz and /dev/null differ diff --git a/website-zipped_bak/main.css.gz b/website-zipped_bak/main.css.gz deleted file mode 100755 index 9e97edc..0000000 Binary files a/website-zipped_bak/main.css.gz and /dev/null differ diff --git a/website-zipped_bak/manifest.json.gz b/website-zipped_bak/manifest.json.gz deleted file mode 100755 index 46e5319..0000000 Binary files a/website-zipped_bak/manifest.json.gz and /dev/null differ diff --git a/website-zipped_bak/manualMode-ajax.html.gz b/website-zipped_bak/manualMode-ajax.html.gz deleted file mode 100755 index 0724d78..0000000 Binary files a/website-zipped_bak/manualMode-ajax.html.gz and /dev/null differ diff --git a/website-zipped_bak/manualMode.html.gz b/website-zipped_bak/manualMode.html.gz deleted file mode 100755 index 89f0937..0000000 Binary files a/website-zipped_bak/manualMode.html.gz and /dev/null differ diff --git a/website-zipped_bak/menu.html.gz b/website-zipped_bak/menu.html.gz deleted file mode 100755 index 9f74f21..0000000 Binary files a/website-zipped_bak/menu.html.gz and /dev/null differ diff --git a/website-zipped_bak/nunito-regular-webfont.woff.gz b/website-zipped_bak/nunito-regular-webfont.woff.gz deleted file mode 100755 index 4d82150..0000000 Binary files a/website-zipped_bak/nunito-regular-webfont.woff.gz and /dev/null differ diff --git a/website-zipped_bak/nunito-regular-webfont.woff2.gz b/website-zipped_bak/nunito-regular-webfont.woff2.gz deleted file mode 100755 index ded3e34..0000000 Binary files a/website-zipped_bak/nunito-regular-webfont.woff2.gz and /dev/null differ diff --git a/website-zipped_bak/settings-ajax.html.gz b/website-zipped_bak/settings-ajax.html.gz deleted file mode 100755 index e807f44..0000000 Binary files a/website-zipped_bak/settings-ajax.html.gz and /dev/null differ diff --git a/website-zipped_bak/settings-success.html.gz b/website-zipped_bak/settings-success.html.gz deleted file mode 100755 index 55cfbc0..0000000 Binary files a/website-zipped_bak/settings-success.html.gz and /dev/null differ diff --git a/website-zipped_bak/settings.html.gz b/website-zipped_bak/settings.html.gz deleted file mode 100755 index fb034c4..0000000 Binary files a/website-zipped_bak/settings.html.gz and /dev/null differ diff --git a/website-zipped_bak/success.html.gz b/website-zipped_bak/success.html.gz deleted file mode 100755 index 584a0ef..0000000 Binary files a/website-zipped_bak/success.html.gz and /dev/null differ