From bd528638df3b0caeab2704e94d63a36f0356f6df Mon Sep 17 00:00:00 2001 From: Thomas Klaehn Date: Tue, 26 Apr 2022 11:09:01 +0200 Subject: [PATCH] Add free water port handling --- greenhouseui/app.py | 4 + greenhouseui/static/scripts/free_port.js | 116 +++++++++++++++++++++++ greenhouseui/templates/free_port.html | 77 +++++++++++++++ greenhouseui/templates/garden.html | 1 + greenhouseui/templates/greenhouse.html | 1 + greenhouseui/templates/index.html | 2 + setup.py | 2 +- 7 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 greenhouseui/static/scripts/free_port.js create mode 100644 greenhouseui/templates/free_port.html diff --git a/greenhouseui/app.py b/greenhouseui/app.py index 5dffbd8..ef5a383 100644 --- a/greenhouseui/app.py +++ b/greenhouseui/app.py @@ -109,6 +109,10 @@ def garden(): def greenhouse_1(): return render_template('greenhouse.html') +@app.route('/free_port') +def free_port(): + return render_template('free_port.html') + @app.route('/sample/', methods=['GET']) def get_sample(idx='0'): """Handle GET to /sample/""" diff --git a/greenhouseui/static/scripts/free_port.js b/greenhouseui/static/scripts/free_port.js new file mode 100644 index 0000000..8c528d8 --- /dev/null +++ b/greenhouseui/static/scripts/free_port.js @@ -0,0 +1,116 @@ +var on_switch_water = function() { + var state = true; + if(document.getElementById("water_switch").value == "ausschalten") { + state = false; + } + var json_str = JSON.stringify({"id": "2", "waterstate": state}); + patch_sample(json_str); +} + +var on_switch_auto_state = function() { + var state = true; + if(document.getElementById("auto_switch").value == "ausschalten") { + state = false; + } + var json_str = JSON.stringify({"water": {"id": "2", "autostate": state}}); + patch_config(json_str); +} + +var on_change_config = function() { + var on_time_one = document.getElementById("water_on_one").value; + var off_time_one = document.getElementById("water_off_one").value; + var on_time_two = document.getElementById("water_on_two").value; + var off_time_two = document.getElementById("water_off_two").value; + var json_str = JSON.stringify({"water": {"id": "2", "times": [{"on_time": on_time_one, "off_time": off_time_one}, {"on_time": on_time_two, "off_time": off_time_two}]}}); + patch_config(json_str); +} + +var http_patch_config = new XMLHttpRequest(); +http_patch_config.onreadystatechange = function () { + if (http_patch_config.readyState === 4) { + var status = http_patch_config.status; + if (status === 0 || (status >= 200 && status < 400)) { + // The request has been completed successfully + parse_config(http_patch_config.responseText); + } + } else { + // request error + } +} +var patch_config = function(config) { + http_patch_config.abort(); + http_patch_config.open("PATCH", "/config"); + http_patch_config.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); + http_patch_config.send(config); +} + +var patch_http = new XMLHttpRequest(); +var patch_sample = function(sample) { + patch_http.abort(); + patch_http.open("PATCH", "/sample"); + patch_http.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); + patch_http.send(sample); +} + +var parse_config = function (event) { + var config = JSON.parse(event) + var output = "einschalten" + var visibility = 'hidden' + if(config.water && config.water.id == '2') { + if(config.water.autostate) { + output = "ausschalten" + visibility = "visible" + document.getElementById("water_on_one").value = config.water.times[0].on_time; + document.getElementById("water_off_one").value = config.water.times[0].off_time; + document.getElementById("water_on_two").value = config.water.times[1].on_time; + document.getElementById("water_off_two").value = config.water.times[1].off_time; + } + document.getElementById("auto_switch").value = output; + document.getElementById("water_times").style.visibility = visibility + } +} + +var parse_sample = function (event) { + var sample = JSON.parse(event) + if(sample.water && sample.water.id == '2') { + var switch_caption = "einschalten"; + if(sample.water.state) { + switch_caption = "ausschalten"; + } + document.getElementById("water_switch").value = switch_caption; + } +} + +var http = new XMLHttpRequest(); +http.onreadystatechange = function () { + if (http.readyState === 4) { + var status = http.status; + if (status === 0 || (status >= 200 && status < 400)) { + // The request has been completed successfully + parse_sample(http.responseText); + setTimeout(function () { + http.open("GET", 'sample/2'); + http.send(); + }, 500); + } + } else { + // request error + } +} +http.open("GET", "sample/2"); +http.send(); + +var http_get_config = new XMLHttpRequest(); +http_get_config.onreadystatechange = function () { + if (http_get_config.readyState === 4) { + var status = http_get_config.status; + if (status === 0 || (status >= 200 && status < 400)) { + // The request has been completed successfully + parse_config(http_get_config.responseText); + } + } else { + // request error + } +} +http_get_config.open("GET", "config/2"); +http_get_config.send(); \ No newline at end of file diff --git a/greenhouseui/templates/free_port.html b/greenhouseui/templates/free_port.html new file mode 100644 index 0000000..1abc4e9 --- /dev/null +++ b/greenhouseui/templates/free_port.html @@ -0,0 +1,77 @@ + + + + Wasseranschluß + + + + + + +

Wasseranschluß

+ + + + + + + + + +
Bewässerung + +
Zeigesteuerte Bewässerung + +
+ + + + \ No newline at end of file diff --git a/greenhouseui/templates/garden.html b/greenhouseui/templates/garden.html index 7366c20..51a0b36 100644 --- a/greenhouseui/templates/garden.html +++ b/greenhouseui/templates/garden.html @@ -70,6 +70,7 @@ diff --git a/greenhouseui/templates/greenhouse.html b/greenhouseui/templates/greenhouse.html index 2a77988..d7fd954 100644 --- a/greenhouseui/templates/greenhouse.html +++ b/greenhouseui/templates/greenhouse.html @@ -118,6 +118,7 @@ diff --git a/greenhouseui/templates/index.html b/greenhouseui/templates/index.html index 46ddcef..c5dd83e 100644 --- a/greenhouseui/templates/index.html +++ b/greenhouseui/templates/index.html @@ -10,6 +10,7 @@

Garten

@@ -18,6 +19,7 @@ diff --git a/setup.py b/setup.py index f1e9723..4024a3f 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ from setuptools import setup from setuptools.command.install import install NAME = 'Greenhouseui' -VERSION = '4' +VERSION = '5' AUTHOR = 'Thomas Klaehn' EMAIL = 'tkl@blackfinn.de' PACKAGES = ['greenhouseui']