Skip to content

Commit

Permalink
Merge branch 'master' into Dev
Browse files Browse the repository at this point in the history
  • Loading branch information
ataffe authored Jun 21, 2021
2 parents 9de2f72 + 31f9004 commit a01e072
Show file tree
Hide file tree
Showing 8 changed files with 159 additions and 164 deletions.
1 change: 1 addition & 0 deletions ControlPanel/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is an website built to directly interface with the garden and display status from the various modules in the system.
112 changes: 7 additions & 105 deletions ControlPanel/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,8 @@
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/d41cced03c.js" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="/ControlPanel/js/status.js"></script>
<title>Status</title>

<!-- JQuery-->
<script>
$(document).ready(function(){

setInterval(function() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200 && this.response === "ok") {
$("#statusText small").text("ON");
$("#statusText small").css("font-weight", "Bold");
$("#statusText small").removeClass("text-danger");
$("#statusText small").addClass("text-success");
$("body").css('background-color', 'white');
} else if(this.readyState == 4 && this.status == 0){
$("#statusText small").text("OFF");
$("#statusText small").css("font-weight", "Bold");
$("#statusText small").removeClass("text-success");
$("#statusText small").addClass("text-danger");
$("body").css('background-color', '#324C5C');
}
}
xhttp.open("GET", "http://192.168.1.4:5002/heartBeat", true);
xhttp.send();
}, 3000);

$("#shutdownButton").click(function() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert("Garden Shutdown Complete");
}
}
xhttp.open("GET", "http://192.168.1.4:5002/shutdown", true);
xhttp.send();
});
});
</script>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
Expand Down Expand Up @@ -85,9 +48,9 @@ <h1 class="display-4 text-primary text-center">Garden Status</h1>
<div class="card-body">
<h3 id="statusText" class="card-body">
Garden status is:
<small class="text-success"><strong>CHECKING</strong></small>
<small class="text-warning"><strong>CHECKING</strong></small>
</h3>
<button id="shutdownButton" type="button" class="btn btn-danger btn-lg">Shutdown Garden</button>
<button id="shutdownButton" type="button" class="btn btn-danger btn-lg disabled" disabled>Shutdown Garden</button>
</div>
</div>
</div>
Expand All @@ -99,7 +62,7 @@ <h3 id="statusText" class="card-body">
<div class="m-1 card text-center">
<div class="card-body">
<h3>Water Pump</h3>
<h3><span class="badge badge-success">Live</span></h3>
<h3><span id="waterText" class="badge badge-warning">CHECKING</span></h3>
</div>
</div>
</div>
Expand All @@ -108,7 +71,7 @@ <h3><span class="badge badge-success">Live</span></h3>
<div class="m-1 card text-center">
<div class="card-body">
<h3>Soil Moisture Sensor</h3>
<h3><span class="badge badge-danger">Failed</span></h3>
<h3><span id="moistureText" class="badge badge-warning">CHECKING</span></h3>
</div>
</div>
</div>
Expand All @@ -120,7 +83,7 @@ <h3><span class="badge badge-danger">Failed</span></h3>
<div class="m-1 card text-center">
<div class="card-body">
<h3>Lux Sensor</h3>
<h3><span class="badge badge-danger">Failed</span></h3>
<h3><span id="luxText" class="badge badge-warning">CHECKING</span></h3>
</div>
</div>
</div>
Expand All @@ -129,7 +92,7 @@ <h3><span class="badge badge-danger">Failed</span></h3>
<div class="m-1 card text-center">
<div class="card-body">
<h3>Temperature Sensor</h3>
<h3><span class="badge badge-success">Live</span></h3>
<h3><span id="tempText" class="badge badge-warning">CHECKING</span></h3>
</div>
</div>
</div>
Expand All @@ -139,67 +102,6 @@ <h3><span class="badge badge-success">Live</span></h3>
</br>
</br>
</br>
<div id="sun" class="sun">
<div class="sun-face">
<div class="sun-hlight"></div>
<div class="sun-leye"></div>
<div class="sun-reye"></div>
<div class="sun-lred"></div>
<div class="sun-rred"></div>
<div class="sun-nose"></div>
</div>
<div class="sun-anime">
<div class="sun-ball"></div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
<div class="sun-light">
<b></b>
<s></s>
</div>
</div>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
Expand Down
101 changes: 101 additions & 0 deletions ControlPanel/js/status.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
$(document).ready(function(){

setInterval(getStatus("http://192.168.1.4:5002/heartBeat", "#statusText small", setBackgroundColor, '#324C5C'), 1000);
setInterval(getModuleStatus("http://192.168.1.4:5002/water/heartBeat", "#waterText", null, null), 1000);
setInterval(getModuleStatus("http://192.168.1.4:5002/lux/heartBeat", "#moistureText", null, null), 1000);
setInterval(getModuleStatus("http://192.168.1.4:5002/moisture/heartBeat", "#luxText", null, null), 1000);
setInterval(getModuleStatus("http://192.168.1.4:5002/temp/heartBeat", "#tempText", null, null), 1000);

$("#shutdownButton").click(function() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert("Garden Shutdown Complete");
}
}
xhttp.open("GET", "http://192.168.1.4:5002/shutdown", true);
xhttp.send();
});
});

function setBackgroundColor(color) {
$("body").css('background-color', color);
}

function turnOffElement(element) {
$(element).text("OFF");
$(element).removeClass("badge badge-warning");
$(element).removeClass("badge badge-success");
$(element).addClass("badge badge-danger");
}

function turnOnElement(element) {
console.log("success for element: " + element);
$(element).text("ON");
$(element).removeClass("badge badge-warning");
$(element).removeClass("badge badge-danger");
$(element).addClass("badge badge-success");
}

function turnOffSystem(element, callback, arg) {
$(element).text("OFF");
$(element).css("font-weight", "Bold");
$(element).removeClass("text-warning");
$(element).removeClass("text-success");
$(element).addClass("text-danger");

$("#shutdownButton").addClass("disabled");
$("#shutdownButton").prop("disabled", true);
if(callback != null){
callback(arg);
}
}

function turnOnSystem(element) {
$(element).text("ON");
$(element).css("font-weight", "Bold");
$(element).removeClass("text-warning");
$(element).removeClass("text-danger");
$(element).addClass("text-success");
$("body").css('background-color', 'white');

$("#shutdownButton").removeClass("disabled");
$("#shutdownButton").prop("disabled", false);
}

function getModuleStatus(url, element) {
var xhttp = new XMLHttpRequest();
console.log("status: " + this.status + " for element: " + element);
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200 && this.response === "True") {
turnOnElement(element);
} else if(this.readyState == 4 && (this.response === "False" || this.status != 200)){
turnOffElement(element);
}
}
xhttp.open("GET", url, true);
try{
xhttp.send();
} catch(err) {
turnOnElement(element);
}

}

function getStatus(url, element, callback, arg) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200 && this.response === "ok") {
turnOnSystem(element);
} else if(this.readyState == 4 && this.status != 200){
turnOffSystem(element, callback, arg);
}
}
xhttp.open("GET", url, true);
try {
xhttp.send();
} catch(err) {
turnOffSystem(element, callback, arg);
}

}
3 changes: 3 additions & 0 deletions GardenModules/GardenModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ def __init__(self, queue):
self.daemon = True
self._startup = True

def is_running(self):
return self._startup

def run(self):
pass

Expand Down
Loading

0 comments on commit a01e072

Please sign in to comment.