commit c95c41b38b3616186df33b44999cf8cd4a546ea9
parent 0bd867f29c515e173a81a4139e711df0929e8aca
Author: Dominik Schmidt <das1993@hotmail.com>
Date: Sun, 1 Jul 2018 18:35:38 +0000
Merge laundrysorcery.local:LaundrySorcery
Diffstat:
2 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/www/details.html b/www/details.html
@@ -4,9 +4,20 @@
<title>LaundrySorcery</title>
<meta charset="UTF-8"/>
<style type="text/CSS">
+ body{
+ max-width:80ex;
+ font-size:18px;
+ font:serif;
+ margin:10px auto;
+ background-color:#EEEEEE;
+ color:#111111;
+ }
</style>
</head>
<body>
+ <H1 style="color:#e68616; text-align:center; text-shadow:0px 0px 5px;">We do what we must because we can</H1>
+ Have a look at <a href="http://xatko.vsos.ethz.ch:36492/git/LaundrySorcery/">The Codeā¢</a><p />
+ <H1>Controls</H1>
<div id="CtrlPanel"><form action="control.cgi" method="GET"><input type="submit" name="restart" value="Restart"/> <input type="submit" name="reboot" value="Reboot"/> <input type="submit" name="shutdown" value="Shutdown" /></form></div>
<H1>Light Sensor Data</H1>
<div id="SensorPanel">
diff --git a/www/index.cgi b/www/index.cgi
@@ -20,10 +20,10 @@ Content-Type: text/html
text-align:center;
font-size:x-large;
}
- #status.off #guessTime{
+ #status.off .guess{
display:none;
}
- #guessTime{
+ .guess{
font-size:large;
}
#power{
@@ -51,29 +51,31 @@ Content-Type: text/html
<div id="status">
<div id="power"><img src="off.svg" /></div>
<div id="delta_t"></div>
- <div id="guessTime"></div>
+ <div id="guessTime" class="guess"></div>
+ <div id="guessProg" class="guess"></div>
</div>
<script type="text/JavaScript">
<!--
delta_t=${RTIME};
function updateDisplay(){
var g=document.getElementById("guessTime");
+ var g2=document.getElementById("guessProg");
var dt=document.getElementById("delta_t");
var st=document.getElementById("status");
var txt="";
- var txt2="";
var classn="";
if(delta_t < 0){
txt="since "+timeSince(-delta_t);
classn="off";
}
else{
+ c=guessCluster(delta_t);
txt="since "+timeSince(delta_t);
- txt2="The crystal ball guesses: "+timeSince(Math.round(guessTimeLeft(delta_t)))+" left"
+ g.textContent="The crystal ball guesses: "+timeSince(Math.round(guessTimeLeft(delta_t)))+" left";
+ g2.textContent="Guessed program lasts "+timeSince(Math.round(c.mean));
classn="on";
}
dt.textContent=txt;
- g.textContent=txt2;
st.setAttribute("class",classn);
st.getElementsByTagName("img")[0].setAttribute("src",classn+".svg");
}
@@ -102,6 +104,20 @@ Content-Type: text/html
}
}
+ function guessCluster(elapsed){
+ var max=-Infinity;
+ var maxc={};
+ for(var i=0; i<clusters.length; i++){
+ var cluster=clusters[i]
+ var prob=cluster.apriori*(1-cluster.cdf(elapsed));
+ if(prob>max){
+ maxc=cluster;
+ max=prob;
+ }
+ }
+ return maxc;
+ }
+
function guessTimeLeft(elapsed){
return guessTime(elapsed)-elapsed;
}