diff --git a/draw.php b/draw.php
index f3c3649..66dae00 100644
--- a/draw.php
+++ b/draw.php
@@ -220,7 +220,7 @@ function generateChart($today,$mode,$hours=0,$dateInput){
//only redraw, if new data was added, indicated by 'newData' token left by update.php
$newData=false;
if(file_exists('newData')){
- unlink('newData');
+ @unlink('newData');
$newData=true;
}
$file_exists=false;
diff --git a/index.php b/index.php
index acad537..6b28390 100644
--- a/index.php
+++ b/index.php
@@ -51,6 +51,8 @@ if(isset($_GET['mode']) && $_GET['mode']=='last'){
}else if($type!='none' && ($type=="temp" || $type=="ambi" || $type=="humi" || $type=="baro")){
//mode: day
$mode=1;
+}else if (isset($_GET['mode']) && $_GET['mode']=='predict'){
+ $mode=4;
}else{
$html.="Keine weiteren Angaben: Heutige Temperatur wird angezeigt";
$mode=1;
@@ -84,11 +86,13 @@ if($mode==1){
$date=array(date("Y"),date("n"),date("j"));
}
}
+$db=new DBLib($database['host'],$database['user'],$database['password'],$database['database']);
if(!$error===false){
$html.=$error;
-}else{
- $db=new DBLib($database['host'],$database['user'],$database['password'],$database['database']);
+}else if($mode != 4){
$html.=generateChart($today,$mode,$num,$date);
+}else{
+ include('predict.php');
}
$runtime=microtime(true)-$start;
$html.="
Runtime: ".$runtime." s
";
diff --git a/predict.php b/predict.php
new file mode 100644
index 0000000..b5387b0
--- /dev/null
+++ b/predict.php
@@ -0,0 +1,129 @@
+$value){
+ if(!empty($value) && !empty($b[$i])){
+ $div+=($value - $averageA)*($b[$i] - $averageB);
+ $sumA+=pow(($value-$averageA), 2);
+ $sumB+=pow(($b[$i]-$averageB), 2);
+ }
+ }
+ return ($div / (sqrt($sumA) * sqrt($sumB)));
+}
+function r($p,$i,$data){
+ return average($p,$p) + c($p,$i,$data);
+}
+function c($p,$i,$data){
+ $divident=$divisor=0.0;
+ foreach($data as $q){
+ if (empty($q[$i]) || $p===$q){
+ continue;
+ }
+ $simPQ=sim($p,$q);
+ $averageQ=average($q,$p);
+ $divisor+=abs($simPQ);
+ $divident+=(($q[$i]-$averageQ)*$simPQ);
+ }
+ return ($divident / $divisor);
+}
+function wrapR($subject, $item, $data){
+ return r($data[$subject], $item, $data);
+}
+function average($set, $controlSet){
+ $average=0.0;
+ $count=0;
+ foreach($set as $i=>$value){
+ if (!empty($value) && !empty($controlSet[$i])){
+ $average+=$value;
+ $count+=1;
+ }
+ }
+ return ($average / $count);
+}
+
+#$ratings=array(
+# "alice"=>array(5, 1, 0, 3, 2),
+# "bob"=>array(3, 1, 5, 4, 2),
+# "carol"=>array(4, 0, 5, 0, 3),
+# "chuck"=>array(1, 4, 0, 0, 2),
+# "dave"=>array(0, 4, 3, 0, 1),
+# "eve"=>array(5, 4, 5, 4, 3),
+# "fran"=>array(4, 0, 0, 0,2),
+# "gordon"=>array(3, 4, 0, 5, 1),
+# "isaac"=>array(5, 0, 4, 3, 0),
+# "ivan"=>array(3, 1, 1, 0, 1)
+#);
+#echo sim($ratings['alice'],$ratings['ivan']);
+#echo "
";
+#echo "
";
+#echo wrapR('alice', 2, $ratings);
+#
+#die();
+
+
+
+echo "[BETA] prediction";
+
+$date=array(date("Y"),date("n"),date("j"));
+#$date=array(2014, 8, 26);
+$diffuse=0;
+
+$selectionStart=mktime(0,0,0,$date[1],$date[2],$date[0]);
+$selectionEnd=$selectionStart+(60*60*(24+date("I",$selectionStart)));
+$rangeSelector=array('time',$selectionStart-$diffuse,$selectionEnd+$diffuse);
+$data= $db->selectRange('temp2','*',$rangeSelector);
+foreach($data as $record){
+ $tupel=$record;
+}
+$data=null;
+
+#var_dump($tupel);
+#echo date("H:i:s", $tupel['time']);
+$month=date('n', $tupel['time']);
+$year=date('Y', $tupel['time']);
+$day=date('j', $tupel['time']);
+
+$div=getdiv('temp2');
+for($i=1; $i<=$day;$i++){
+ $selectionStart=mktime(0,0,0,$month,$i,$year);
+ $selectionEnd=$selectionStart+(60*60*(24+date("I",$selectionStart)));
+ $rangeSelector=array('time',$selectionStart-$diffuse,$selectionEnd+$diffuse);
+ $data= $db->selectRange('temp2','*',$rangeSelector);
+ $sumary[]=prepareData($data,$div,$selectionStart,$selectionEnd);
+}
+
+#foreach($sumary as $key=>$daily){
+# echo "| Day: ".($key+1)." | ";
+# foreach ($daily as $key=>$hour){
+# echo "".$key."-".$hour." ";
+# }
+# echo " |
";
+#}
+echo "prediction for ".date("d.m.Y");
+echo "";
+echo "| hour | prediction | difference | actual measurement |
";
+for ($i=0;$i<25;$i++){
+ $r=wrapR(25,$i,$sumary);
+ $r=round($r,2);
+ echo "| ".$i." | ".$r." | ".($r-$sumary[25][$i+1])." | ".$sumary[25][$i+1]." |
";
+}
+echo "
";
+
+
+#for($i=0;$i<=24;$i++){
+# $hours[]=$i*60*60;
+#}
+#var_dump($hours);
+#var_dump(array($month,$year,$day));
+$runtime=microtime(true)-$start;
+echo "Runtime: ".$runtime." s
";
+$db->close();
+die();
+
diff --git a/recent b/recent
index e69de29..d7d3d8c 100644
--- a/recent
+++ b/recent
@@ -0,0 +1 @@
+Temperatur: 14.75 C
Luftfeuchtigkeit: 84.9 %
Helligkeit: 0.01 Lux
Luftdruck: 981.881mbar
\ No newline at end of file
diff --git a/update.php b/update.php
index 649a148..3f06e08 100644
--- a/update.php
+++ b/update.php
@@ -12,7 +12,7 @@ $temp=$humi=$ambi=$baro=0;
foreach($dir as $file){
if(validFile($file)){
file_put_contents('newData',"");
- #echo "parsing file: ".$file."\n";
+ echo "parsing file: ".$file."\n";
importLogfiletoDatabase('data/'.$file);
//recent records on frontpage:
if($file[0].$file[1].$file[2].$file[3].$file[4] == "temp2"){
@@ -27,7 +27,7 @@ foreach($dir as $file){
///
unlink('data/'.$file);
}else{
- #echo "invalidFile: ".$file." \n";
+ echo "invalidFile: ".$file." \n";
}
}
$db->close();