some performance optimizions in the frontend
git-svn-id: file:///home/jan/tmp/wetterstation/trunk@222 dd492736-c11a-0410-ad51-8c26713eaf7f
This commit is contained in:
parent
194ad4d412
commit
288f351cb6
|
|
@ -48,5 +48,10 @@ class Config{
|
||||||
global $allTitle;
|
global $allTitle;
|
||||||
return $allTitle;
|
return $allTitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getAvInterval(){
|
||||||
|
global $average_interval;
|
||||||
|
return $average_interval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ class Connection{
|
||||||
function _createConn(){
|
function _createConn(){
|
||||||
//print $this->conn."<br>";
|
//print $this->conn."<br>";
|
||||||
if($this->conn === NULL){
|
if($this->conn === NULL){
|
||||||
$this->conn = pg_connect(Config::getPgConnString())
|
$this->conn = pg_pconnect(Config::getPgConnString())
|
||||||
or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
|
or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -39,7 +39,7 @@ class Connection{
|
||||||
function fetchQueryResultLine($query){
|
function fetchQueryResultLine($query){
|
||||||
$this->_createConn();
|
$this->_createConn();
|
||||||
$result = pg_query($this->conn, $query)
|
$result = pg_query($this->conn, $query)
|
||||||
or die('Abfrage fehlgeschlagen: ' . pg_last_error());
|
or die('Abfrage fehlgeschlagen: ' . pg_last_error(). "\n<br>\nquery: '".$query."'");
|
||||||
$array = pg_fetch_assoc($result);
|
$array = pg_fetch_assoc($result);
|
||||||
//print_r($array);
|
//print_r($array);
|
||||||
return $array;
|
return $array;
|
||||||
|
|
@ -50,7 +50,7 @@ class Connection{
|
||||||
$returnArray = array();
|
$returnArray = array();
|
||||||
$this->_createConn();
|
$this->_createConn();
|
||||||
$result = pg_query($this->conn, $query)
|
$result = pg_query($this->conn, $query)
|
||||||
or die('Abfrage fehlgeschlagen: ' . pg_last_error());
|
or die('Abfrage fehlgeschlagen: ' . pg_last_error(). "\n<br>\nquery: '".$query."'");
|
||||||
while($array = pg_fetch_assoc($result))
|
while($array = pg_fetch_assoc($result))
|
||||||
array_push($returnArray, $array);
|
array_push($returnArray, $array);
|
||||||
return $returnArray;
|
return $returnArray;
|
||||||
|
|
@ -60,7 +60,7 @@ class Connection{
|
||||||
function &getRawResult($query){
|
function &getRawResult($query){
|
||||||
$this->_createConn();
|
$this->_createConn();
|
||||||
$result = pg_query($this->conn, $query)
|
$result = pg_query($this->conn, $query)
|
||||||
or die('Abfrage fehlgeschlagen: ' . pg_last_error());
|
or die('Abfrage fehlgeschlagen: ' . pg_last_error(). "\n<br>\nquery: '".$query."'");
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,16 @@ class Hum{
|
||||||
|
|
||||||
var $nowHum; /* Momentane Luftfeuchtigkeit */
|
var $nowHum; /* Momentane Luftfeuchtigkeit */
|
||||||
var $nowDate; /* datum des letzten Messvorgangs */
|
var $nowDate; /* datum des letzten Messvorgangs */
|
||||||
var $avVal; /* Durchschnittswert */
|
var $avVal = "nc"; /* Durchschnittswert */
|
||||||
var $avInter; /* Interval des Durchschnittswertes */
|
var $avInter = "nc"; /* Interval des Durchschnittswertes */
|
||||||
var $minHum; /* Minimale Luftfeuchtigkeit */
|
var $minHum; /* Minimale Luftfeuchtigkeit */
|
||||||
var $minDate; /* Datum, wann die Minimale Luftfeuchtigkeit gemessen wurde */
|
var $minDate; /* Datum, wann die Minimale Luftfeuchtigkeit gemessen wurde */
|
||||||
var $maxHum; /* Maximale Luftfeuchtigkeit */
|
var $maxHum; /* Maximale Luftfeuchtigkeit */
|
||||||
var $maxDate; /* Datum, wann die Max. Luftfeuchtigkeit. gemessen wurde */
|
var $maxDate; /* Datum, wann die Max. Luftfeuchtigkeit. gemessen wurde */
|
||||||
var $changing; /* Tendenz */
|
var $changing = "nc"; /* Tendenz */
|
||||||
|
var $connection;
|
||||||
|
var $sensId;
|
||||||
|
var $table;
|
||||||
|
|
||||||
/* Konstruktor */
|
/* Konstruktor */
|
||||||
function Hum($sensId, & $connection){
|
function Hum($sensId, & $connection){
|
||||||
|
|
@ -26,70 +29,67 @@ class Hum{
|
||||||
|
|
||||||
/* Funktion, die die Klasse mit den Weten initialisiert */
|
/* Funktion, die die Klasse mit den Weten initialisiert */
|
||||||
function _fetchHumData($sensId, &$connection){
|
function _fetchHumData($sensId, &$connection){
|
||||||
|
$this->connection = &$connection;
|
||||||
|
$this->sensId = $sensId;
|
||||||
|
|
||||||
/* Tabelle des Sensors bestimmen */
|
/* Tabelle des Sensors bestimmen */
|
||||||
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
||||||
$table = $connection->fetchQueryResultLine($tableQuery);
|
$table = $connection->fetchQueryResultLine($tableQuery);
|
||||||
|
$this->table = $table['tabelle'];
|
||||||
|
|
||||||
/* Aktuelle Luftfeuchtigkeit bestimmen */
|
/* Aktuelle Luftfeuchtigkeit bestimmen */
|
||||||
$nowQuery = "SELECT hum, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE timestamp=(select max(timestamp) from ".$table['tabelle']." where sens_id=".$sensId.")";
|
$nowQuery = "SELECT hum, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." ORDER BY timestamp DESC LIMIT 1";
|
||||||
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
||||||
|
|
||||||
/* Max und Min-Werte bestimmen */
|
/* Max und Min-Werte bestimmen */
|
||||||
$maxQuery = "SELECT hum, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND hum=(SELECT max(hum) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$maxQuery = "SELECT hum, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND hum=(SELECT max(hum) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
||||||
$minQuery = "SELECT hum, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND hum=(SELECT min(hum) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$minQuery = "SELECT hum, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND hum=(SELECT min(hum) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$minData = $connection->fetchQueryResultLine($minQuery);
|
$minData = $connection->fetchQueryResultLine($minQuery);
|
||||||
|
|
||||||
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
||||||
$this->nowHum = $nowData['hum'];
|
$this->nowHum = $nowData['hum'];
|
||||||
$this->nowDate = $nowData['timestamp'];
|
$this->nowDate = $nowData['text_timestamp'];
|
||||||
$this->maxHum = $maxData['hum'];
|
$this->maxHum = $maxData['hum'];
|
||||||
$this->maxDate = $maxData['timestamp'];
|
$this->maxDate = $maxData['text_timestamp'];
|
||||||
$this->minHum = $minData['hum'];
|
$this->minHum = $minData['hum'];
|
||||||
$this->minDate = $minData['timestamp'];
|
$this->minDate = $minData['text_timestamp'];
|
||||||
|
|
||||||
/* Durchschnittswert bestimmen lassen */
|
|
||||||
$this->_fetchAverage($sensId, $table['tabelle'], &$connection);
|
|
||||||
|
|
||||||
/* Tendenz bestimmen lassen */
|
|
||||||
$this->_fetchMoving($sensId, $table['tabelle'], &$connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
||||||
function _getAverage($sensId, $table, &$connection, $interval){
|
function _getAverage($interval){
|
||||||
$avQuery = "SELECT (sum(hum)/count(hum)) as average, count(hum) as count FROM ".$table." WHERE sens_id=".$sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
$avQuery = "SELECT avg(hum) as average, count(hum) as count FROM ".$this->table." WHERE sens_id=".$this->sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
||||||
$avData = $connection->fetchQueryResultLine($avQuery);
|
$avData = $this->connection->fetchQueryResultLine($avQuery);
|
||||||
return $avData;
|
return $avData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* momentanen Durchschnittswert bestimmen */
|
/* momentanen Durchschnittswert bestimmen */
|
||||||
function _fetchAverage($sensId, $table, &$connection){
|
function _fetchAverage(){
|
||||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||||
$i = 1; /* Laufvariable */
|
$i = 1; /* Laufvariable */
|
||||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||||
$i++; /* Laufvariable erhoehen */
|
$i++; /* Laufvariable erhoehen */
|
||||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
$avData = $this->_getAverage(($i*(Config::getAvInterval()))." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Werte den Klassenvariablen zuordnen */
|
/* Werte den Klassenvariablen zuordnen */
|
||||||
$this->avVal = $avData['average'];
|
$this->avVal = $avData['average'];
|
||||||
$this->avInter = $i*20;
|
$this->avInter = $i*(Config::getAvInterval());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bestimmt die Tendenz */
|
/* Bestimmt die Tendenz */
|
||||||
function _fetchMoving($sensId, $table, &$connection){
|
function _fetchMoving(){
|
||||||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
$shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
$longAvData = $this->_getAverage("120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||||
return; /* und aus der Funktion huepfen */
|
return; /* und aus der Funktion huepfen */
|
||||||
}
|
}
|
||||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||||
if($changing > 0){ /* Wenn Aenderung positiv */
|
if($changing > 0){ /* Wenn Aenderung positiv */
|
||||||
$this->changing = "steigend (+ ".abs($changing * 0.1)."%)"; /* dann steigende Tendenz ausgeben */
|
$this->changing = "steigend (+ ".abs(round($changing * 0.1, 1))."%)"; /* dann steigende Tendenz ausgeben */
|
||||||
} elseif($changing < 0) { /* wenn Negativ */
|
} elseif($changing < 0) { /* wenn Negativ */
|
||||||
$this->changing = "fallend (- ".abs($changing * 0.1)."%)"; /* Fallende Tendenz ausgeben */
|
$this->changing = "fallend (- ".abs(round($changing * 0.1, 1))."%)"; /* Fallende Tendenz ausgeben */
|
||||||
} else { /* an sonsten */
|
} else { /* an sonsten */
|
||||||
$this->changing = "gleichbleibend (± 0%)"; /* sagen, das es gleich geblieben ist */
|
$this->changing = "gleichbleibend (± 0%)"; /* sagen, das es gleich geblieben ist */
|
||||||
}
|
}
|
||||||
|
|
@ -106,14 +106,20 @@ class Hum{
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_value(){
|
function get_av_value(){
|
||||||
return $this->avVal;
|
if($this->avVal == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
|
return round($this->avVal, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_interval(){
|
function get_av_interval(){
|
||||||
|
if($this->avInter == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
return $this->avInter;
|
return $this->avInter;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_changing(){
|
function get_changing(){
|
||||||
|
if($this->changing == "nc")
|
||||||
|
$this->_fetchMoving();
|
||||||
return $this->changing;
|
return $this->changing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,17 @@
|
||||||
class Press{
|
class Press{
|
||||||
|
|
||||||
var $nowPress; /* Momentaner Luftdruck */
|
var $nowPress; /* Momentaner Luftdruck */
|
||||||
var $nowDate; /* datum des letzten Messvorgangs */
|
var $nowDate; /* datum des letzten Messvorgangs */
|
||||||
var $avVal; /* Durchschnittswert */
|
var $avVal = "nc"; /* Durchschnittswert */
|
||||||
var $avInter; /* Interval des Durchschnittswertes */
|
var $avInter = "nc"; /* Interval des Durchschnittswertes */
|
||||||
var $minPress; /* Minimaler Luftdruck */
|
var $minPress; /* Minimaler Luftdruck */
|
||||||
var $minDate; /* Datum, wann der Minimale Luftdruck gemessen wurde */
|
var $minDate; /* Datum, wann der Minimale Luftdruck gemessen wurde */
|
||||||
var $maxPress; /* Maximale Luftdruck */
|
var $maxPress; /* Maximale Luftdruck */
|
||||||
var $maxDate; /* Datum, wann der Max. Luftdruck gemessen wurde */
|
var $maxDate; /* Datum, wann der Max. Luftdruck gemessen wurde */
|
||||||
var $changing; /* Tendenz */
|
var $changing = "nc"; /* Tendenz */
|
||||||
|
var $connection;
|
||||||
|
var $sensId;
|
||||||
|
var $table;
|
||||||
|
|
||||||
/* Konstruktor */
|
/* Konstruktor */
|
||||||
function Press($sensId, & $connection){
|
function Press($sensId, & $connection){
|
||||||
|
|
@ -25,70 +28,67 @@ class Press{
|
||||||
|
|
||||||
/* Funktion, die die Klasse mit den Weten initialisiert */
|
/* Funktion, die die Klasse mit den Weten initialisiert */
|
||||||
function _fetchPressData($sensId, &$connection){
|
function _fetchPressData($sensId, &$connection){
|
||||||
|
$this->connection = &$connection;
|
||||||
|
$this->sensId = $sensId;
|
||||||
|
|
||||||
/* Tabelle des Sensors bestimmen */
|
/* Tabelle des Sensors bestimmen */
|
||||||
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
||||||
$table = $connection->fetchQueryResultLine($tableQuery);
|
$table = $connection->fetchQueryResultLine($tableQuery);
|
||||||
|
$this->table = $table['tabelle'];
|
||||||
|
|
||||||
/* Aktuelle Luftdruck bestimmen */
|
/* Aktuelle Luftdruck bestimmen */
|
||||||
$nowQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE timestamp=(select max(timestamp) from ".$table['tabelle']." where sens_id=".$sensId.")";
|
$nowQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." ORDER BY timestamp DESC LIMIT 1";
|
||||||
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
||||||
|
|
||||||
/* Max und Min-Werte bestimmen */
|
/* Max und Min-Werte bestimmen */
|
||||||
$maxQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND press=(SELECT max(press) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$maxQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND press=(SELECT max(press) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
||||||
$minQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND press=(SELECT min(press) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$minQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND press=(SELECT min(press) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$minData = $connection->fetchQueryResultLine($minQuery);
|
$minData = $connection->fetchQueryResultLine($minQuery);
|
||||||
|
|
||||||
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
||||||
$this->nowPress = $nowData['press'];
|
$this->nowPress = $nowData['press'];
|
||||||
$this->nowDate = $nowData['timestamp'];
|
$this->nowDate = $nowData['text_timestamp'];
|
||||||
$this->maxPress = $maxData['press'];
|
$this->maxPress = $maxData['press'];
|
||||||
$this->maxDate = $maxData['timestamp'];
|
$this->maxDate = $maxData['text_timestamp'];
|
||||||
$this->minPress = $minData['press'];
|
$this->minPress = $minData['press'];
|
||||||
$this->minDate = $minData['timestamp'];
|
$this->minDate = $minData['text_timestamp'];
|
||||||
|
|
||||||
/* Durchschnittswert bestimmen lassen */
|
|
||||||
$this->_fetchAverage($sensId, $table['tabelle'], &$connection);
|
|
||||||
|
|
||||||
/* Tendenz bestimmen lassen */
|
|
||||||
$this->_fetchMoving($sensId, $table['tabelle'], &$connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
||||||
function _getAverage($sensId, $table, &$connection, $interval){
|
function _getAverage($interval){
|
||||||
$avQuery = "SELECT (sum(press)/count(press)) as average, count(press) as count FROM ".$table." WHERE sens_id=".$sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
$avQuery = "SELECT avg(press) as average, count(press) as count FROM ".$this->table." WHERE sens_id=".$this->sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
||||||
$avData = $connection->fetchQueryResultLine($avQuery);
|
$avData = $this->connection->fetchQueryResultLine($avQuery);
|
||||||
return $avData;
|
return $avData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* momentanen Durchschnittswert bestimmen */
|
/* momentanen Durchschnittswert bestimmen */
|
||||||
function _fetchAverage($sensId, $table, &$connection){
|
function _fetchAverage(){
|
||||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||||
$i = 1; /* Laufvariable */
|
$i = 1; /* Laufvariable */
|
||||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||||
$i++; /* Laufvariable erhoehen */
|
$i++; /* Laufvariable erhoehen */
|
||||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
$avData = $this->_getAverage(($i*(Config::getAvInterval()))." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Werte den Klassenvariablen zuordnen */
|
/* Werte den Klassenvariablen zuordnen */
|
||||||
$this->avVal = $avData['average'];
|
$this->avVal = $avData['average'];
|
||||||
$this->avInter = $i*20;
|
$this->avInter = $i*(Config::getAvInterval());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bestimmt die Tendenz */
|
/* Bestimmt die Tendenz */
|
||||||
function _fetchMoving($sensId, $table, &$connection){
|
function _fetchMoving(){
|
||||||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
$shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
$longAvData = $this->_getAverage("120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||||
return; /* und aus der Funktion huepfen */
|
return; /* und aus der Funktion huepfen */
|
||||||
}
|
}
|
||||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||||
if($changing > 0){ /* Wenn Aenderung positiv */
|
if($changing > 0){ /* Wenn Aenderung positiv */
|
||||||
$this->changing = "steigend (+ ".abs($changing * 0.1)." hPa)"; /* dann steigende Tendenz ausgeben */
|
$this->changing = "steigend (+ ".abs(round($changing * 0.1, 1))." hPa)"; /* dann steigende Tendenz ausgeben */
|
||||||
} elseif($changing < 0) { /* wenn Negativ */
|
} elseif($changing < 0) { /* wenn Negativ */
|
||||||
$this->changing = "fallend (- ".abs($changing * 0.1)." hPa)"; /* Fallende Tendenz ausgeben */
|
$this->changing = "fallend (- ".abs(round($changing * 0.1, 1))." hPa)"; /* Fallende Tendenz ausgeben */
|
||||||
} else { /* an sonsten */
|
} else { /* an sonsten */
|
||||||
$this->changing = "gleichbleibend (± 0 hPa)"; /* sagen, das es gleich geblieben ist */
|
$this->changing = "gleichbleibend (± 0 hPa)"; /* sagen, das es gleich geblieben ist */
|
||||||
}
|
}
|
||||||
|
|
@ -105,14 +105,20 @@ class Press{
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_value(){
|
function get_av_value(){
|
||||||
return $this->avVal;
|
if($this->avVal == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
|
return round($this->avVal,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_interval(){
|
function get_av_interval(){
|
||||||
|
if($this->avInter == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
return $this->avInter;
|
return $this->avInter;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_changing(){
|
function get_changing(){
|
||||||
|
if($this->changing == "nc")
|
||||||
|
$this->_fetchMoving();
|
||||||
return $this->changing;
|
return $this->changing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,100 +12,120 @@ include_once($path."php_inc/connection.inc.php");
|
||||||
/* Rain-Klasse fuer das Rain-Modul */
|
/* Rain-Klasse fuer das Rain-Modul */
|
||||||
class Rain{
|
class Rain{
|
||||||
|
|
||||||
var $nowHour; /* Regen in der momentanen Stunde */
|
var $nowHour = "nc"; /* Regen in der momentanen Stunde */
|
||||||
var $nowDay; /* Regen in heute */
|
var $nowDay = "nc"; /* Regen in heute */
|
||||||
var $nowMonth; /* Regen diesen Monat */
|
var $nowMonth = "nc"; /* Regen diesen Monat */
|
||||||
var $nowYear; /* Regen dies Jahr */
|
var $nowYear = "nc"; /* Regen dies Jahr */
|
||||||
var $nowAll; /* Regen seit Messbeginn */
|
var $nowAll = "nc"; /* Regen seit Messbeginn */
|
||||||
var $maxHourData; /* Stunde mit dem meistem Regen */
|
var $maxHourData = "nc"; /* Stunde mit dem meistem Regen */
|
||||||
var $maxDayData; /* Tag mit dem meistem Regen */
|
var $maxDayData = "nc"; /* Tag mit dem meistem Regen */
|
||||||
var $maxMonthData; /* Monat mit dem meistem Regen */
|
var $maxMonthData = "nc"; /* Monat mit dem meistem Regen */
|
||||||
var $maxYearData; /* Jahr mit dem meistem Regen */
|
var $maxYearData = "nc"; /* Jahr mit dem meistem Regen */
|
||||||
|
var $connection;
|
||||||
|
var $table;
|
||||||
|
var $sensId;
|
||||||
|
|
||||||
/* Konstruktor, Holt die Werte aus der Datenbank und fuellt die Variablen damit */
|
/* Konstruktor, Holt die Werte aus der Datenbank und fuellt die Variablen damit */
|
||||||
function Rain($sensId, & $connection){
|
function Rain($sensId, & $connection){
|
||||||
|
$this->connection = &$connection;
|
||||||
|
$this->sensId = $sensId;
|
||||||
|
|
||||||
/* Tabelle des Sensors bestimmen */
|
/* Tabelle des Sensors bestimmen */
|
||||||
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
||||||
$table = $connection->fetchQueryResultLine($tableQuery);
|
$table = $connection->fetchQueryResultLine($tableQuery);
|
||||||
$table = trim($table['tabelle']);
|
$table = trim($table['tabelle']);
|
||||||
|
$this->table = $table;
|
||||||
|
|
||||||
/* Aktuelle Werte holen */
|
|
||||||
$this->nowHour = $this->_getNowValues($sensId, & $connection, $table, "1 hours");
|
|
||||||
$this->nowDay = $this->_getNowValues($sensId, & $connection, $table, "1 days");
|
|
||||||
$this->nowMonth = $this->_getNowValues($sensId, & $connection, $table, "1 months");
|
|
||||||
$this->nowYear = $this->_getNowValues($sensId, & $connection, $table, "1 years");
|
|
||||||
$this->nowAll = $connection->fetchQueryResultLine("SELECT sum(count) as rain FROM ".$table." WHERE sens_id=".$sensId);
|
|
||||||
|
|
||||||
/* Maximale Werte holen */
|
|
||||||
$this->maxHourData = $this->_getMaxValues($sensId, & $connection, $table, "hour", "DD.MM.YYYY HH24:MI");
|
|
||||||
$this->maxDayData = $this->_getMaxValues($sensId, & $connection, $table, "day", "DD.MM.YYYY");
|
|
||||||
$this->maxMonthData = $this->_getMaxValues($sensId, & $connection, $table, "month", "MM.YYYY");
|
|
||||||
$this->maxYearData = $this->_getMaxValues($sensId, & $connection, $table, "year", "YYYY");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Momentane Werte aus der Datenbank holen */
|
/* Momentane Werte aus der Datenbank holen */
|
||||||
function _getNowValues($sensId, & $connection, $table, $interval){
|
function _getNowValues($interval){
|
||||||
$result = $connection->fetchQueryResultLine("SELECT sum(count) as rain FROM ".$table." WHERE sens_id=".$sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')");
|
$result = $this->connection->fetchQueryResultLine("SELECT sum(count) as rain FROM ".$this->table." WHERE sens_id=".$this->sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')");
|
||||||
return $result['rain'];
|
return $result['rain'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Maximal gemessene Werte aus der Datenbank holen */
|
/* Maximal gemessene Werte aus der Datenbank holen */
|
||||||
function _getMaxValues($sensId, & $connection, $table, $unit, $dateFormat){ // unit = hour, minute, ...
|
function _getMaxValues($unit, $dateFormat){ // unit = hour, minute, ...
|
||||||
return $connection->fetchQueryResultLine("SELECT to_char(ts, '".$dateFormat."') as date, val FROM ".$table."_".$unit." WHERE sens_id=".$sensId." AND val=(SELECT max(val) FROM ".$table."_".$unit." WHERE sens_id=".$sensId.")");
|
return $this->connection->fetchQueryResultLine("SELECT to_char(ts, '".$dateFormat."') as date, val FROM ".$this->table."_".$unit." WHERE sens_id=".$this->sensId." AND val=(SELECT max(val) FROM ".$this->table."_".$unit." WHERE sens_id=".$this->sensId.") ORDER BY ts DESC LIMIT 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* --- Funktionen, die die Werte fuer die Ausgabe zurueckgeben --- */
|
/* --- Funktionen, die die Werte fuer die Ausgabe zurueckgeben --- */
|
||||||
function get_now_hour(){
|
function get_now_hour(){
|
||||||
|
if($this->nowHour == "nc");
|
||||||
|
$this->nowHour = $this->_getNowValues( "1 hours");
|
||||||
return round($this->nowHour * 0.001,3);
|
return round($this->nowHour * 0.001,3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_now_day(){
|
function get_now_day(){
|
||||||
|
if($this->nowDay == "nc");
|
||||||
|
$this->nowDay = $this->_getNowValues( "1 days");
|
||||||
return round($this->nowDay * 0.001,3);
|
return round($this->nowDay * 0.001,3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_now_month(){
|
function get_now_month(){
|
||||||
|
if($this->nowMonth == "nc");
|
||||||
|
$this->nowMonth = $this->_getNowValues( "1 months");
|
||||||
return round($this->nowMonth * 0.001,3);
|
return round($this->nowMonth * 0.001,3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_now_year(){
|
function get_now_year(){
|
||||||
|
if($this->nowYear == "nc");
|
||||||
|
$this->nowYear = $this->_getNowValues( "1 years");
|
||||||
return round($this->nowYear * 0.001,3);
|
return round($this->nowYear * 0.001,3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_now_all(){
|
function get_now_all(){
|
||||||
|
if($this->nowAll == "nc");
|
||||||
|
$this->nowAll = $this->connection->fetchQueryResultLine("SELECT sum(count) as rain FROM ".$this->table." WHERE sens_id=".$this->sensId);
|
||||||
return round($this->nowAll['rain'] * 0.001,3);
|
return round($this->nowAll['rain'] * 0.001,3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_hour_val(){
|
function get_max_hour_val(){
|
||||||
|
if($this->maxHourData == "nc")
|
||||||
|
$this->maxHourData = $this->_getMaxValues("hour", "DD.MM.YYYY HH24:MI");
|
||||||
return round($this->maxHourData['val'] * 0.001, 3);
|
return round($this->maxHourData['val'] * 0.001, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_hour_date(){
|
function get_max_hour_date(){
|
||||||
|
if($this->maxHourData == "nc")
|
||||||
|
$this->maxHourData = $this->_getMaxValues("hour", "DD.MM.YYYY HH24:MI");
|
||||||
return $this->maxHourData['date'];
|
return $this->maxHourData['date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_day_val(){
|
function get_max_day_val(){
|
||||||
|
if($this->maxDayData == "nc")
|
||||||
|
$this->maxDayData = $this->_getMaxValues("day", "DD.MM.YYYY");
|
||||||
return round($this->maxDayData['val'] * 0.001, 3);
|
return round($this->maxDayData['val'] * 0.001, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_day_date(){
|
function get_max_day_date(){
|
||||||
|
if($this->maxDayData == "nc")
|
||||||
|
$this->maxDayData = $this->_getMaxValues("day", "DD.MM.YYYY");
|
||||||
return $this->maxDayData['date'];
|
return $this->maxDayData['date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_month_val(){
|
function get_max_month_val(){
|
||||||
|
if($this->maxMonthData == "nc")
|
||||||
|
$this->maxMonthData = $this->_getMaxValues("month", "MM.YYYY");
|
||||||
return round($this->maxMonthData['val'] * 0.001, 3);
|
return round($this->maxMonthData['val'] * 0.001, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_month_date(){
|
function get_max_month_date(){
|
||||||
|
if($this->maxMonthData == "nc")
|
||||||
|
$this->maxMonthData = $this->_getMaxValues("month", "MM.YYYY");
|
||||||
return $this->maxMonthData['date'];
|
return $this->maxMonthData['date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_year_val(){
|
function get_max_year_val(){
|
||||||
|
if($this->maxYearData)
|
||||||
|
$this->maxYearData = $this->_getMaxValues("year", "YYYY");
|
||||||
return round($this->maxYearData['val'] * 0.001, 3);
|
return round($this->maxYearData['val'] * 0.001, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_max_year_date(){
|
function get_max_year_date(){
|
||||||
|
if($this->maxYearData)
|
||||||
|
$this->maxYearData = $this->_getMaxValues("year", "YYYY");
|
||||||
return $this->maxYearData['date'];
|
return $this->maxYearData['date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,18 @@
|
||||||
|
|
||||||
class Temp{
|
class Temp{
|
||||||
|
|
||||||
var $nowTemp; /* Momentane Temparatur */
|
var $nowTemp; /* Momentane Temparatur */
|
||||||
var $nowDate; /* datum des letzten Messvorgangs */
|
var $nowDate; /* datum des letzten Messvorgangs */
|
||||||
var $avVal; /* Durchschnittswert */
|
var $avVal = "nc"; /* Durchschnittswert */
|
||||||
var $avInter; /* Interval des Durchschnittswertes */
|
var $avInter = "nc"; /* Interval des Durchschnittswertes */
|
||||||
var $minTemp; /* Minimale Temparatur */
|
var $minTemp; /* Minimale Temparatur */
|
||||||
var $minDate; /* Datum, wann die Minimale Temparatur gemessen wurde */
|
var $minDate; /* Datum, wann die Minimale Temparatur gemessen wurde */
|
||||||
var $maxTemp; /* Maximale Temparatur */
|
var $maxTemp; /* Maximale Temparatur */
|
||||||
var $maxDate; /* Datum, wann die Max. Temp. gemessen wurde */
|
var $maxDate; /* Datum, wann die Max. Temp. gemessen wurde */
|
||||||
var $changing; /* Tendenz */
|
var $changing = "nc"; /* Tendenz */
|
||||||
|
var $connection;
|
||||||
|
var $sensId;
|
||||||
|
var $table;
|
||||||
|
|
||||||
/* Konstruktor */
|
/* Konstruktor */
|
||||||
function Temp($sensId, & $connection){
|
function Temp($sensId, & $connection){
|
||||||
|
|
@ -25,70 +28,67 @@ class Temp{
|
||||||
|
|
||||||
/* Funktion, die die Klasse mit den Weten initialisiert */
|
/* Funktion, die die Klasse mit den Weten initialisiert */
|
||||||
function _fetchTempData($sensId, &$connection){
|
function _fetchTempData($sensId, &$connection){
|
||||||
|
$this->connection = &$connection;
|
||||||
|
$this->sensId = $sensId;
|
||||||
|
|
||||||
/* Tabelle des Sensors bestimmen */
|
/* Tabelle des Sensors bestimmen */
|
||||||
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
||||||
$table = $connection->fetchQueryResultLine($tableQuery);
|
$table = $connection->fetchQueryResultLine($tableQuery);
|
||||||
|
$this->table = $table['tabelle'];
|
||||||
|
|
||||||
/* Aktuelle Temperatur bestimmen */
|
/* Aktuelle Temperatur bestimmen */
|
||||||
$nowQuery = "SELECT temp, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE timestamp=(select max(timestamp) from ".$table['tabelle']." where sens_id=".$sensId.")";
|
$nowQuery = "SELECT temp, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." ORDER BY timestamp DESC LIMIT 1";
|
||||||
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
||||||
|
|
||||||
/* Max und Min-Werte bestimmen */
|
/* Max und Min-Werte bestimmen */
|
||||||
$maxQuery = "SELECT temp, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND temp=(SELECT max(temp) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$maxQuery = "SELECT temp, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND temp=(SELECT max(temp) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
||||||
$minQuery = "SELECT temp, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND temp=(SELECT min(temp) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$minQuery = "SELECT temp, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND temp=(SELECT min(temp) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$minData = $connection->fetchQueryResultLine($minQuery);
|
$minData = $connection->fetchQueryResultLine($minQuery);
|
||||||
|
|
||||||
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
||||||
$this->nowTemp = $nowData['temp'];
|
$this->nowTemp = $nowData['temp'];
|
||||||
$this->nowDate = $nowData['timestamp'];
|
$this->nowDate = $nowData['text_timestamp'];
|
||||||
$this->maxTemp = $maxData['temp'];
|
$this->maxTemp = $maxData['temp'];
|
||||||
$this->maxDate = $maxData['timestamp'];
|
$this->maxDate = $maxData['text_timestamp'];
|
||||||
$this->minTemp = $minData['temp'];
|
$this->minTemp = $minData['temp'];
|
||||||
$this->minDate = $minData['timestamp'];
|
$this->minDate = $minData['text_timestamp'];
|
||||||
|
|
||||||
/* Durchschnittswert bestimmen lassen */
|
|
||||||
$this->_fetchAverage($sensId, $table['tabelle'], &$connection);
|
|
||||||
|
|
||||||
/* Tendenz bestimmen lassen */
|
|
||||||
$this->_fetchMoving($sensId, $table['tabelle'], &$connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
||||||
function _getAverage($sensId, $table, &$connection, $interval){
|
function _getAverage($interval){
|
||||||
$avQuery = "SELECT (sum(temp)/count(temp)) as average, count(temp) as count FROM ".$table." WHERE sens_id=".$sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
$avQuery = "SELECT avg(temp) as average, count(temp) as count FROM ".$this->table." WHERE sens_id=".$this->sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
||||||
$avData = $connection->fetchQueryResultLine($avQuery);
|
$avData = $this->connection->fetchQueryResultLine($avQuery);
|
||||||
return $avData;
|
return $avData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* momentanen Durchschnittswert bestimmen */
|
/* momentanen Durchschnittswert bestimmen */
|
||||||
function _fetchAverage($sensId, $table, &$connection){
|
function _fetchAverage(){
|
||||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||||
$i = 1; /* Laufvariable */
|
$i = 1; /* Laufvariable */
|
||||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||||
$i++; /* Laufvariable erhoehen */
|
$i++; /* Laufvariable erhoehen */
|
||||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
$avData = $this->_getAverage(($i*(Config::getAvInterval()))." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Werte den Klassenvariablen zuordnen */
|
/* Werte den Klassenvariablen zuordnen */
|
||||||
$this->avVal = $avData['average'];
|
$this->avVal = $avData['average'];
|
||||||
$this->avInter = $i*20;
|
$this->avInter = $i*(Config::getAvInterval());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bestimmt die Tendenz */
|
/* Bestimmt die Tendenz */
|
||||||
function _fetchMoving($sensId, $table, &$connection){
|
function _fetchMoving(){
|
||||||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
$shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
$longAvData = $this->_getAverage("120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||||
return; /* und aus der Funktion huepfen */
|
return; /* und aus der Funktion huepfen */
|
||||||
}
|
}
|
||||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||||
if($changing > 0){ /* Wenn Aenderung positiv */
|
if($changing > 0){ /* Wenn Aenderung positiv */
|
||||||
$this->changing = "steigend (+ ".abs($changing * 0.1)."°C)"; /* dann steigende Tendenz ausgeben */
|
$this->changing = "steigend (+ ".abs(round($changing * 0.1,1))."°C)"; /* dann steigende Tendenz ausgeben */
|
||||||
} elseif($changing < 0) { /* wenn Negativ */
|
} elseif($changing < 0) { /* wenn Negativ */
|
||||||
$this->changing = "fallend (- ".abs($changing * 0.1)."°C)"; /* Fallende Tendenz ausgeben */
|
$this->changing = "fallend (- ".abs(round($changing * 0.1, 1))."°C)"; /* Fallende Tendenz ausgeben */
|
||||||
} else { /* an sonsten */
|
} else { /* an sonsten */
|
||||||
$this->changing = "gleichbleibend (± 0°C)"; /* sagen, das es gleich geblieben ist */
|
$this->changing = "gleichbleibend (± 0°C)"; /* sagen, das es gleich geblieben ist */
|
||||||
}
|
}
|
||||||
|
|
@ -105,14 +105,20 @@ class Temp{
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_value(){
|
function get_av_value(){
|
||||||
return $this->avVal * 0.1;
|
if($this->avVal == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
|
return round($this->avVal * 0.1,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_interval(){
|
function get_av_interval(){
|
||||||
|
if($this->avVal == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
return $this->avInter;
|
return $this->avInter;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_changing(){
|
function get_changing(){
|
||||||
|
if($this->changing == "nc")
|
||||||
|
$this->_fetchMoving();
|
||||||
return $this->changing;
|
return $this->changing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,18 @@
|
||||||
|
|
||||||
class Wind{
|
class Wind{
|
||||||
|
|
||||||
var $nowWind; /* Momentaner Wind */
|
var $nowWind; /* Momentaner Wind */
|
||||||
var $nowDir; /* Momentane Windrichtung */
|
var $nowDir; /* Momentane Windrichtung */
|
||||||
var $nowDate; /* datum des letzten Messvorgangs */
|
var $nowDate; /* datum des letzten Messvorgangs */
|
||||||
var $avVal; /* Durchschnittswert */
|
var $avVal = "nc"; /* Durchschnittswert */
|
||||||
var $avInter; /* Interval des Durchschnittswertes */
|
var $avInter = "nc"; /* Interval des Durchschnittswertes */
|
||||||
var $maxWind; /* Maximale Wind */
|
var $maxWind; /* Maximale Wind */
|
||||||
var $maxDir; /* Windrichtung bei max. Windgeschw. */
|
var $maxDir; /* Windrichtung bei max. Windgeschw. */
|
||||||
var $maxDate; /* Datum, wann der Max. Wind gemessen wurde */
|
var $maxDate; /* Datum, wann der Max. Wind gemessen wurde */
|
||||||
var $changing; /* Tendenz */
|
var $changing = "nc"; /* Tendenz */
|
||||||
|
var $connection;
|
||||||
|
var $sensId;
|
||||||
|
var $table;
|
||||||
|
|
||||||
/* Konstruktor */
|
/* Konstruktor */
|
||||||
function Wind($sensId, & $connection){
|
function Wind($sensId, & $connection){
|
||||||
|
|
@ -25,32 +28,29 @@ class Wind{
|
||||||
|
|
||||||
/* Funktion, die die Klasse mit den Weten initialisiert */
|
/* Funktion, die die Klasse mit den Weten initialisiert */
|
||||||
function _fetchWindData($sensId, &$connection){
|
function _fetchWindData($sensId, &$connection){
|
||||||
|
$this->connection = &$connection;
|
||||||
|
$this->sensId = $sensId;
|
||||||
|
|
||||||
/* Tabelle des Sensors bestimmen */
|
/* Tabelle des Sensors bestimmen */
|
||||||
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
|
||||||
$table = $connection->fetchQueryResultLine($tableQuery);
|
$table = $connection->fetchQueryResultLine($tableQuery);
|
||||||
|
$this->table = $table['tabelle'];
|
||||||
|
|
||||||
/* Aktuelle Wind bestimmen */
|
/* Aktuelle Wind bestimmen */
|
||||||
$nowQuery = "SELECT geschw as wind, richt as dir, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE timestamp=(select max(timestamp) from ".$table['tabelle']." where sens_id=".$sensId.")";
|
$nowQuery = "SELECT geschw as wind, richt as dir, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." ORDER BY timestamp DESC LIMIT 1";
|
||||||
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
$nowData = $connection->fetchQueryResultLine($nowQuery);
|
||||||
|
|
||||||
/* Max und Min-Werte bestimmen */
|
/* Max und Min-Werte bestimmen */
|
||||||
$maxQuery = "SELECT geschw as wind, richt as dir, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND geschw=(SELECT max(geschw) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.")";
|
$maxQuery = "SELECT geschw as wind, richt as dir, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$table['tabelle']." WHERE sens_id=".$sensId." AND geschw=(SELECT max(geschw) FROM ".$table['tabelle']." WHERE sens_id=".$sensId.") ORDER BY timestamp DESC LIMIT 1";
|
||||||
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
$maxData = $connection->fetchQueryResultLine($maxQuery);
|
||||||
|
|
||||||
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
/* Bestimmte Werte den Klassenvariablen zuordnen */
|
||||||
$this->nowWind = $nowData['wind'];
|
$this->nowWind = $nowData['wind'];
|
||||||
$this->nowDir = $this->_calcDirection($nowData['dir']);
|
$this->nowDir = $this->_calcDirection($nowData['dir']);
|
||||||
$this->nowDate = $nowData['timestamp'];
|
$this->nowDate = $nowData['text_timestamp'];
|
||||||
$this->maxWind = $maxData['wind'];
|
$this->maxWind = $maxData['wind'];
|
||||||
$this->maxDir = $this->_calcDirection($maxData['dir']);
|
$this->maxDir = $this->_calcDirection($maxData['dir']);
|
||||||
$this->maxDate = $maxData['timestamp'];
|
$this->maxDate = $maxData['text_timestamp'];
|
||||||
|
|
||||||
/* Durchschnittswert bestimmen lassen */
|
|
||||||
$this->_fetchAverage($sensId, $table['tabelle'], &$connection);
|
|
||||||
|
|
||||||
/* Tendenz bestimmen lassen */
|
|
||||||
$this->_fetchMoving($sensId, $table['tabelle'], &$connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _calcDirection($deg){
|
function _calcDirection($deg){
|
||||||
|
|
@ -129,39 +129,39 @@ class Wind{
|
||||||
}
|
}
|
||||||
|
|
||||||
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
/* liefert den Durchschnittswert in einem bestimmtem Interval */
|
||||||
function _getAverage($sensId, $table, &$connection, $interval){
|
function _getAverage($interval){
|
||||||
$avQuery = "SELECT (sum(geschw)/count(geschw)) as average, count(geschw) as count FROM ".$table." WHERE sens_id=".$sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
$avQuery = "SELECT avg(geschw) as average, count(geschw) as count FROM ".$this->table." WHERE sens_id=".$this->sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')";
|
||||||
$avData = $connection->fetchQueryResultLine($avQuery);
|
$avData = $this->connection->fetchQueryResultLine($avQuery);
|
||||||
return $avData;
|
return $avData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* momentanen Durchschnittswert bestimmen */
|
/* momentanen Durchschnittswert bestimmen */
|
||||||
function _fetchAverage($sensId, $table, &$connection){
|
function _fetchAverage(){
|
||||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||||
$i = 1; /* Laufvariable */
|
$i = 1; /* Laufvariable */
|
||||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||||
$i++; /* Laufvariable erhoehen */
|
$i++; /* Laufvariable erhoehen */
|
||||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
$avData = $this->_getAverage(($i*(Config::getAvInterval()))." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Werte den Klassenvariablen zuordnen */
|
/* Werte den Klassenvariablen zuordnen */
|
||||||
$this->avVal = $avData['average'];
|
$this->avVal = $avData['average'];
|
||||||
$this->avInter = $i*20;
|
$this->avInter = $i*(Config::getAvInterval());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bestimmt die Tendenz */
|
/* Bestimmt die Tendenz */
|
||||||
function _fetchMoving($sensId, $table, &$connection){
|
function _fetchMoving(){
|
||||||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
$shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
$longAvData = $this->_getAverage("120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||||
return; /* und aus der Funktion huepfen */
|
return; /* und aus der Funktion huepfen */
|
||||||
}
|
}
|
||||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||||
if($changing > 0){ /* Wenn Aenderung positiv */
|
if($changing > 0){ /* Wenn Aenderung positiv */
|
||||||
$this->changing = "steigend (+ ".abs($changing * 0.1)." <sup>km</sup>/<sub>h</sub>)"; /* dann steigende Tendenz ausgeben */
|
$this->changing = "steigend (+ ".abs(round($changing * 0.1, 1))." <sup>km</sup>/<sub>h</sub>)"; /* dann steigende Tendenz ausgeben */
|
||||||
} elseif($changing < 0) { /* wenn Negativ */
|
} elseif($changing < 0) { /* wenn Negativ */
|
||||||
$this->changing = "fallend (- ".abs($changing * 0.1)." <sup>km</sup>/<sub>h</sub>)"; /* Fallende Tendenz ausgeben */
|
$this->changing = "fallend (- ".abs(round($changing * 0.1, 1))." <sup>km</sup>/<sub>h</sub>)"; /* Fallende Tendenz ausgeben */
|
||||||
} else { /* an sonsten */
|
} else { /* an sonsten */
|
||||||
$this->changing = "gleichbleibend (± 0 <sup>km</sup>/<sub>h</sub>)"; /* sagen, das es gleich geblieben ist */
|
$this->changing = "gleichbleibend (± 0 <sup>km</sup>/<sub>h</sub>)"; /* sagen, das es gleich geblieben ist */
|
||||||
}
|
}
|
||||||
|
|
@ -186,14 +186,20 @@ class Wind{
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_value(){
|
function get_av_value(){
|
||||||
|
if($this->avVal == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
return round($this->avVal * 0.1, 1);
|
return round($this->avVal * 0.1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_av_interval(){
|
function get_av_interval(){
|
||||||
|
if($this->avInter == "nc")
|
||||||
|
$this->_fetchAverage();
|
||||||
return $this->avInter;
|
return $this->avInter;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_changing(){
|
function get_changing(){
|
||||||
|
if($this->changing == "nc")
|
||||||
|
$this->_fetchMoving();
|
||||||
return $this->changing;
|
return $this->changing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,14 +20,9 @@ class Parser{
|
||||||
/* Fuegt Inhalt in das Inhalts-Array ein */
|
/* Fuegt Inhalt in das Inhalts-Array ein */
|
||||||
function appendContent($newContent){
|
function appendContent($newContent){
|
||||||
if(is_array($newContent)){
|
if(is_array($newContent)){
|
||||||
$newContentCount = count($newContent);
|
$this->contentArray = &array_merge($this->contentArray, $newContent);//[$i]);
|
||||||
for($i = 0; $i < $newContentCount; $i++){
|
|
||||||
array_push($this->contentArray, $newContent[$i]);
|
|
||||||
//echo $newContent[$i]."\n";
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
array_push($this->contentArray, $newContent);
|
array_push($this->contentArray, $newContent);
|
||||||
//echo $newContent."\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -47,8 +42,9 @@ class Parser{
|
||||||
if($filePart != null){
|
if($filePart != null){
|
||||||
$fileArray = $this->_fetchFilePart(&$fileArray, $filePart); /* Wenn File aus mehreren Template-Teilen besteht, dann wird hir der relevante Zeil geholt */
|
$fileArray = $this->_fetchFilePart(&$fileArray, $filePart); /* Wenn File aus mehreren Template-Teilen besteht, dann wird hir der relevante Zeil geholt */
|
||||||
}
|
}
|
||||||
for($i = 0; $i < count($fileArray); $i++){ /* Das Array durchlaufen ... */
|
$fileArrayCount = count($fileArray);
|
||||||
if(0 != preg_match_all("/\{content:([a-z]+):([a-z0-9_]+)\}/i", $fileArray[$i], $results)){
|
for($i = 0; $i < $fileArrayCount; $i++){ /* Das Array durchlaufen ... */
|
||||||
|
if((strpos($fileArray[$i], "{content") !== FALSE) && 0 != preg_match_all("/\{content:([a-z]+):([a-z0-9_]+)\}/i", $fileArray[$i], $results)){
|
||||||
//print_r($results);
|
//print_r($results);
|
||||||
$resultsCount = count($results[1]);
|
$resultsCount = count($results[1]);
|
||||||
for($j = 0; $j < $resultsCount; $j++){
|
for($j = 0; $j < $resultsCount; $j++){
|
||||||
|
|
@ -72,16 +68,17 @@ class Parser{
|
||||||
$inPart = false; /* Flag ob innerhalb des gesuchten Templates Initialisieren */
|
$inPart = false; /* Flag ob innerhalb des gesuchten Templates Initialisieren */
|
||||||
$newArray = array(); /* Neues File-Array */
|
$newArray = array(); /* Neues File-Array */
|
||||||
$fileArrayCount = count($fileArray);
|
$fileArrayCount = count($fileArray);
|
||||||
|
$filePart = "{content:part:".$filePart."}";
|
||||||
for($i = 0; $i < $fileArrayCount; $i++){ /* Altes Array dtrchlaufen */
|
for($i = 0; $i < $fileArrayCount; $i++){ /* Altes Array dtrchlaufen */
|
||||||
if($inPart){
|
if($inPart){
|
||||||
if(preg_match("/\{content:part:end\}/i", $fileArray[$i])){ /* Wenn im gesuchtem Template, dann nach {content:part:end\} suchen */
|
if(strpos($fileArray[$i],"{content:part:end}") !== FALSE){ /* Wenn im gesuchtem Template, dann nach {content:part:end\} suchen */
|
||||||
$inPart = false; /* ...wenn gefunden Flag wieder False setzen */
|
$inPart = false; /* ...wenn gefunden Flag wieder False setzen */
|
||||||
break; /* ...und Schleife abbrechen */
|
break; /* ...und Schleife abbrechen */
|
||||||
} else {
|
} else {
|
||||||
array_push($newArray, $fileArray[$i]); /* An sonsten Zeile zum neuem Array hinzufuegen */
|
array_push($newArray, $fileArray[$i]); /* An sonsten Zeile zum neuem Array hinzufuegen */
|
||||||
}
|
}
|
||||||
} else { /* Wenn nich im gesuchtem Template */
|
} else { /* Wenn nich im gesuchtem Template */
|
||||||
if(preg_match("/\{content:part:".$filePart."\}/i", $fileArray[$i])){ /* Nach dem Anfang des Templates suchen */
|
if(strpos($fileArray[$i], $filePart) !== FALSE ){ /* Nach dem Anfang des Templates suchen */
|
||||||
$inPart = true; /* und wenn gefunden, dann Flaf true setzen */
|
$inPart = true; /* und wenn gefunden, dann Flaf true setzen */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue