diff --git a/webstuff/frontend/php_inc/config.inc.php b/webstuff/frontend/php_inc/config.inc.php
index c00342d..d1b97ca 100644
--- a/webstuff/frontend/php_inc/config.inc.php
+++ b/webstuff/frontend/php_inc/config.inc.php
@@ -48,5 +48,10 @@ class Config{
global $allTitle;
return $allTitle;
}
+
+ function getAvInterval(){
+ global $average_interval;
+ return $average_interval;
+ }
}
?>
diff --git a/webstuff/frontend/php_inc/connection.inc.php b/webstuff/frontend/php_inc/connection.inc.php
index fa7913e..bc51f5a 100644
--- a/webstuff/frontend/php_inc/connection.inc.php
+++ b/webstuff/frontend/php_inc/connection.inc.php
@@ -22,7 +22,7 @@ class Connection{
function _createConn(){
//print $this->conn."
";
if($this->conn === NULL){
- $this->conn = pg_connect(Config::getPgConnString())
+ $this->conn = pg_pconnect(Config::getPgConnString())
or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
}
}
@@ -39,7 +39,7 @@ class Connection{
function fetchQueryResultLine($query){
$this->_createConn();
$result = pg_query($this->conn, $query)
- or die('Abfrage fehlgeschlagen: ' . pg_last_error());
+ or die('Abfrage fehlgeschlagen: ' . pg_last_error(). "\n
\nquery: '".$query."'");
$array = pg_fetch_assoc($result);
//print_r($array);
return $array;
@@ -50,7 +50,7 @@ class Connection{
$returnArray = array();
$this->_createConn();
$result = pg_query($this->conn, $query)
- or die('Abfrage fehlgeschlagen: ' . pg_last_error());
+ or die('Abfrage fehlgeschlagen: ' . pg_last_error(). "\n
\nquery: '".$query."'");
while($array = pg_fetch_assoc($result))
array_push($returnArray, $array);
return $returnArray;
@@ -60,7 +60,7 @@ class Connection{
function &getRawResult($query){
$this->_createConn();
$result = pg_query($this->conn, $query)
- or die('Abfrage fehlgeschlagen: ' . pg_last_error());
+ or die('Abfrage fehlgeschlagen: ' . pg_last_error(). "\n
\nquery: '".$query."'");
return $result;
}
diff --git a/webstuff/frontend/php_inc/modules/hum.inc.php b/webstuff/frontend/php_inc/modules/hum.inc.php
index 7fd0964..8dbe7a4 100644
--- a/webstuff/frontend/php_inc/modules/hum.inc.php
+++ b/webstuff/frontend/php_inc/modules/hum.inc.php
@@ -11,13 +11,16 @@ class Hum{
var $nowHum; /* Momentane Luftfeuchtigkeit */
var $nowDate; /* datum des letzten Messvorgangs */
- var $avVal; /* Durchschnittswert */
- var $avInter; /* Interval des Durchschnittswertes */
+ var $avVal = "nc"; /* Durchschnittswert */
+ var $avInter = "nc"; /* Interval des Durchschnittswertes */
var $minHum; /* Minimale Luftfeuchtigkeit */
var $minDate; /* Datum, wann die Minimale Luftfeuchtigkeit gemessen wurde */
var $maxHum; /* Maximale Luftfeuchtigkeit */
var $maxDate; /* Datum, wann die Max. Luftfeuchtigkeit. gemessen wurde */
- var $changing; /* Tendenz */
+ var $changing = "nc"; /* Tendenz */
+ var $connection;
+ var $sensId;
+ var $table;
/* Konstruktor */
function Hum($sensId, & $connection){
@@ -26,70 +29,67 @@ class Hum{
/* Funktion, die die Klasse mit den Weten initialisiert */
function _fetchHumData($sensId, &$connection){
+ $this->connection = &$connection;
+ $this->sensId = $sensId;
/* Tabelle des Sensors bestimmen */
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
$table = $connection->fetchQueryResultLine($tableQuery);
+ $this->table = $table['tabelle'];
/* 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);
/* 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);
- $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);
/* Bestimmte Werte den Klassenvariablen zuordnen */
$this->nowHum = $nowData['hum'];
- $this->nowDate = $nowData['timestamp'];
+ $this->nowDate = $nowData['text_timestamp'];
$this->maxHum = $maxData['hum'];
- $this->maxDate = $maxData['timestamp'];
+ $this->maxDate = $maxData['text_timestamp'];
$this->minHum = $minData['hum'];
- $this->minDate = $minData['timestamp'];
-
- /* Durchschnittswert bestimmen lassen */
- $this->_fetchAverage($sensId, $table['tabelle'], &$connection);
-
- /* Tendenz bestimmen lassen */
- $this->_fetchMoving($sensId, $table['tabelle'], &$connection);
+ $this->minDate = $minData['text_timestamp'];
}
/* liefert den Durchschnittswert in einem bestimmtem Interval */
- function _getAverage($sensId, $table, &$connection, $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."')";
- $avData = $connection->fetchQueryResultLine($avQuery);
+ function _getAverage($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 = $this->connection->fetchQueryResultLine($avQuery);
return $avData;
}
/* momentanen Durchschnittswert bestimmen */
- function _fetchAverage($sensId, $table, &$connection){
+ function _fetchAverage(){
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
$i = 1; /* Laufvariable */
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
$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 */
$this->avVal = $avData['average'];
- $this->avInter = $i*20;
+ $this->avInter = $i*(Config::getAvInterval());
}
/* Bestimmt die Tendenz */
- function _fetchMoving($sensId, $table, &$connection){
- $shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
- $longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
+ function _fetchMoving(){
+ $shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 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 */
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
return; /* und aus der Funktion huepfen */
}
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
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 */
- $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 */
$this->changing = "gleichbleibend (± 0%)"; /* sagen, das es gleich geblieben ist */
}
@@ -106,14 +106,20 @@ class Hum{
}
function get_av_value(){
- return $this->avVal;
+ if($this->avVal == "nc")
+ $this->_fetchAverage();
+ return round($this->avVal, 1);
}
function get_av_interval(){
+ if($this->avInter == "nc")
+ $this->_fetchAverage();
return $this->avInter;
}
function get_changing(){
+ if($this->changing == "nc")
+ $this->_fetchMoving();
return $this->changing;
}
diff --git a/webstuff/frontend/php_inc/modules/press.inc.php b/webstuff/frontend/php_inc/modules/press.inc.php
index 5a3fe01..403cb98 100644
--- a/webstuff/frontend/php_inc/modules/press.inc.php
+++ b/webstuff/frontend/php_inc/modules/press.inc.php
@@ -9,14 +9,17 @@
class Press{
var $nowPress; /* Momentaner Luftdruck */
- var $nowDate; /* datum des letzten Messvorgangs */
- var $avVal; /* Durchschnittswert */
- var $avInter; /* Interval des Durchschnittswertes */
+ var $nowDate; /* datum des letzten Messvorgangs */
+ var $avVal = "nc"; /* Durchschnittswert */
+ var $avInter = "nc"; /* Interval des Durchschnittswertes */
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 $maxDate; /* Datum, wann der Max. Luftdruck gemessen wurde */
- var $changing; /* Tendenz */
+ var $maxDate; /* Datum, wann der Max. Luftdruck gemessen wurde */
+ var $changing = "nc"; /* Tendenz */
+ var $connection;
+ var $sensId;
+ var $table;
/* Konstruktor */
function Press($sensId, & $connection){
@@ -25,70 +28,67 @@ class Press{
/* Funktion, die die Klasse mit den Weten initialisiert */
function _fetchPressData($sensId, &$connection){
+ $this->connection = &$connection;
+ $this->sensId = $sensId;
/* Tabelle des Sensors bestimmen */
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
$table = $connection->fetchQueryResultLine($tableQuery);
+ $this->table = $table['tabelle'];
/* 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);
/* 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);
- $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);
/* Bestimmte Werte den Klassenvariablen zuordnen */
$this->nowPress = $nowData['press'];
- $this->nowDate = $nowData['timestamp'];
+ $this->nowDate = $nowData['text_timestamp'];
$this->maxPress = $maxData['press'];
- $this->maxDate = $maxData['timestamp'];
+ $this->maxDate = $maxData['text_timestamp'];
$this->minPress = $minData['press'];
- $this->minDate = $minData['timestamp'];
-
- /* Durchschnittswert bestimmen lassen */
- $this->_fetchAverage($sensId, $table['tabelle'], &$connection);
-
- /* Tendenz bestimmen lassen */
- $this->_fetchMoving($sensId, $table['tabelle'], &$connection);
+ $this->minDate = $minData['text_timestamp'];
}
/* liefert den Durchschnittswert in einem bestimmtem Interval */
- function _getAverage($sensId, $table, &$connection, $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."')";
- $avData = $connection->fetchQueryResultLine($avQuery);
+ function _getAverage($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 = $this->connection->fetchQueryResultLine($avQuery);
return $avData;
}
/* momentanen Durchschnittswert bestimmen */
- function _fetchAverage($sensId, $table, &$connection){
+ function _fetchAverage(){
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
$i = 1; /* Laufvariable */
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
$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 */
$this->avVal = $avData['average'];
- $this->avInter = $i*20;
+ $this->avInter = $i*(Config::getAvInterval());
}
/* Bestimmt die Tendenz */
- function _fetchMoving($sensId, $table, &$connection){
- $shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
- $longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
+ function _fetchMoving(){
+ $shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 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 */
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
return; /* und aus der Funktion huepfen */
}
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
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 */
- $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 */
$this->changing = "gleichbleibend (± 0 hPa)"; /* sagen, das es gleich geblieben ist */
}
@@ -105,14 +105,20 @@ class Press{
}
function get_av_value(){
- return $this->avVal;
+ if($this->avVal == "nc")
+ $this->_fetchAverage();
+ return round($this->avVal,1);
}
function get_av_interval(){
+ if($this->avInter == "nc")
+ $this->_fetchAverage();
return $this->avInter;
}
function get_changing(){
+ if($this->changing == "nc")
+ $this->_fetchMoving();
return $this->changing;
}
diff --git a/webstuff/frontend/php_inc/modules/rain.inc.php b/webstuff/frontend/php_inc/modules/rain.inc.php
index 6a8e787..2090266 100644
--- a/webstuff/frontend/php_inc/modules/rain.inc.php
+++ b/webstuff/frontend/php_inc/modules/rain.inc.php
@@ -12,100 +12,120 @@ include_once($path."php_inc/connection.inc.php");
/* Rain-Klasse fuer das Rain-Modul */
class Rain{
- var $nowHour; /* Regen in der momentanen Stunde */
- var $nowDay; /* Regen in heute */
- var $nowMonth; /* Regen diesen Monat */
- var $nowYear; /* Regen dies Jahr */
- var $nowAll; /* Regen seit Messbeginn */
- var $maxHourData; /* Stunde mit dem meistem Regen */
- var $maxDayData; /* Tag mit dem meistem Regen */
- var $maxMonthData; /* Monat mit dem meistem Regen */
- var $maxYearData; /* Jahr mit dem meistem Regen */
+ var $nowHour = "nc"; /* Regen in der momentanen Stunde */
+ var $nowDay = "nc"; /* Regen in heute */
+ var $nowMonth = "nc"; /* Regen diesen Monat */
+ var $nowYear = "nc"; /* Regen dies Jahr */
+ var $nowAll = "nc"; /* Regen seit Messbeginn */
+ var $maxHourData = "nc"; /* Stunde mit dem meistem Regen */
+ var $maxDayData = "nc"; /* Tag mit dem meistem Regen */
+ var $maxMonthData = "nc"; /* Monat 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 */
function Rain($sensId, & $connection){
+ $this->connection = &$connection;
+ $this->sensId = $sensId;
/* Tabelle des Sensors bestimmen */
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
$table = $connection->fetchQueryResultLine($tableQuery);
$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 */
- function _getNowValues($sensId, & $connection, $table, $interval){
- $result = $connection->fetchQueryResultLine("SELECT sum(count) as rain FROM ".$table." WHERE sens_id=".$sensId." AND timestamp>(current_timestamp - INTERVAL '".$interval."')");
+ function _getNowValues($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'];
}
/* Maximal gemessene Werte aus der Datenbank holen */
- function _getMaxValues($sensId, & $connection, $table, $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.")");
+ function _getMaxValues($unit, $dateFormat){ // unit = hour, minute, ...
+ 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 --- */
function get_now_hour(){
+ if($this->nowHour == "nc");
+ $this->nowHour = $this->_getNowValues( "1 hours");
return round($this->nowHour * 0.001,3);
}
function get_now_day(){
+ if($this->nowDay == "nc");
+ $this->nowDay = $this->_getNowValues( "1 days");
return round($this->nowDay * 0.001,3);
}
function get_now_month(){
+ if($this->nowMonth == "nc");
+ $this->nowMonth = $this->_getNowValues( "1 months");
return round($this->nowMonth * 0.001,3);
}
function get_now_year(){
+ if($this->nowYear == "nc");
+ $this->nowYear = $this->_getNowValues( "1 years");
return round($this->nowYear * 0.001,3);
}
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);
}
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);
}
function get_max_hour_date(){
+ if($this->maxHourData == "nc")
+ $this->maxHourData = $this->_getMaxValues("hour", "DD.MM.YYYY HH24:MI");
return $this->maxHourData['date'];
}
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);
}
function get_max_day_date(){
+ if($this->maxDayData == "nc")
+ $this->maxDayData = $this->_getMaxValues("day", "DD.MM.YYYY");
return $this->maxDayData['date'];
}
function get_max_month_val(){
+ if($this->maxMonthData == "nc")
+ $this->maxMonthData = $this->_getMaxValues("month", "MM.YYYY");
return round($this->maxMonthData['val'] * 0.001, 3);
}
function get_max_month_date(){
+ if($this->maxMonthData == "nc")
+ $this->maxMonthData = $this->_getMaxValues("month", "MM.YYYY");
return $this->maxMonthData['date'];
}
function get_max_year_val(){
+ if($this->maxYearData)
+ $this->maxYearData = $this->_getMaxValues("year", "YYYY");
return round($this->maxYearData['val'] * 0.001, 3);
}
function get_max_year_date(){
+ if($this->maxYearData)
+ $this->maxYearData = $this->_getMaxValues("year", "YYYY");
return $this->maxYearData['date'];
}
diff --git a/webstuff/frontend/php_inc/modules/temp.inc.php b/webstuff/frontend/php_inc/modules/temp.inc.php
index e255063..fb32fb1 100644
--- a/webstuff/frontend/php_inc/modules/temp.inc.php
+++ b/webstuff/frontend/php_inc/modules/temp.inc.php
@@ -8,15 +8,18 @@
class Temp{
- var $nowTemp; /* Momentane Temparatur */
- var $nowDate; /* datum des letzten Messvorgangs */
- var $avVal; /* Durchschnittswert */
- var $avInter; /* Interval des Durchschnittswertes */
- var $minTemp; /* Minimale Temparatur */
- var $minDate; /* Datum, wann die Minimale Temparatur gemessen wurde */
- var $maxTemp; /* Maximale Temparatur */
- var $maxDate; /* Datum, wann die Max. Temp. gemessen wurde */
- var $changing; /* Tendenz */
+ var $nowTemp; /* Momentane Temparatur */
+ var $nowDate; /* datum des letzten Messvorgangs */
+ var $avVal = "nc"; /* Durchschnittswert */
+ var $avInter = "nc"; /* Interval des Durchschnittswertes */
+ var $minTemp; /* Minimale Temparatur */
+ var $minDate; /* Datum, wann die Minimale Temparatur gemessen wurde */
+ var $maxTemp; /* Maximale Temparatur */
+ var $maxDate; /* Datum, wann die Max. Temp. gemessen wurde */
+ var $changing = "nc"; /* Tendenz */
+ var $connection;
+ var $sensId;
+ var $table;
/* Konstruktor */
function Temp($sensId, & $connection){
@@ -25,70 +28,67 @@ class Temp{
/* Funktion, die die Klasse mit den Weten initialisiert */
function _fetchTempData($sensId, &$connection){
+ $this->connection = &$connection;
+ $this->sensId = $sensId;
/* Tabelle des Sensors bestimmen */
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
$table = $connection->fetchQueryResultLine($tableQuery);
-
+ $this->table = $table['tabelle'];
+
/* 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);
/* 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);
- $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);
/* Bestimmte Werte den Klassenvariablen zuordnen */
$this->nowTemp = $nowData['temp'];
- $this->nowDate = $nowData['timestamp'];
+ $this->nowDate = $nowData['text_timestamp'];
$this->maxTemp = $maxData['temp'];
- $this->maxDate = $maxData['timestamp'];
+ $this->maxDate = $maxData['text_timestamp'];
$this->minTemp = $minData['temp'];
- $this->minDate = $minData['timestamp'];
-
- /* Durchschnittswert bestimmen lassen */
- $this->_fetchAverage($sensId, $table['tabelle'], &$connection);
-
- /* Tendenz bestimmen lassen */
- $this->_fetchMoving($sensId, $table['tabelle'], &$connection);
+ $this->minDate = $minData['text_timestamp'];
}
/* liefert den Durchschnittswert in einem bestimmtem Interval */
- function _getAverage($sensId, $table, &$connection, $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."')";
- $avData = $connection->fetchQueryResultLine($avQuery);
+ function _getAverage($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 = $this->connection->fetchQueryResultLine($avQuery);
return $avData;
}
/* momentanen Durchschnittswert bestimmen */
- function _fetchAverage($sensId, $table, &$connection){
+ function _fetchAverage(){
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
$i = 1; /* Laufvariable */
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
$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 */
$this->avVal = $avData['average'];
- $this->avInter = $i*20;
+ $this->avInter = $i*(Config::getAvInterval());
}
/* Bestimmt die Tendenz */
- function _fetchMoving($sensId, $table, &$connection){
- $shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
- $longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
+ function _fetchMoving(){
+ $shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 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 */
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
return; /* und aus der Funktion huepfen */
}
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
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 */
- $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 */
$this->changing = "gleichbleibend (± 0°C)"; /* sagen, das es gleich geblieben ist */
}
@@ -105,14 +105,20 @@ class Temp{
}
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(){
+ if($this->avVal == "nc")
+ $this->_fetchAverage();
return $this->avInter;
}
function get_changing(){
+ if($this->changing == "nc")
+ $this->_fetchMoving();
return $this->changing;
}
diff --git a/webstuff/frontend/php_inc/modules/wind.inc.php b/webstuff/frontend/php_inc/modules/wind.inc.php
index 4256af2..6543f48 100644
--- a/webstuff/frontend/php_inc/modules/wind.inc.php
+++ b/webstuff/frontend/php_inc/modules/wind.inc.php
@@ -8,15 +8,18 @@
class Wind{
- var $nowWind; /* Momentaner Wind */
- var $nowDir; /* Momentane Windrichtung */
- var $nowDate; /* datum des letzten Messvorgangs */
- var $avVal; /* Durchschnittswert */
- var $avInter; /* Interval des Durchschnittswertes */
- var $maxWind; /* Maximale Wind */
- var $maxDir; /* Windrichtung bei max. Windgeschw. */
- var $maxDate; /* Datum, wann der Max. Wind gemessen wurde */
- var $changing; /* Tendenz */
+ var $nowWind; /* Momentaner Wind */
+ var $nowDir; /* Momentane Windrichtung */
+ var $nowDate; /* datum des letzten Messvorgangs */
+ var $avVal = "nc"; /* Durchschnittswert */
+ var $avInter = "nc"; /* Interval des Durchschnittswertes */
+ var $maxWind; /* Maximale Wind */
+ var $maxDir; /* Windrichtung bei max. Windgeschw. */
+ var $maxDate; /* Datum, wann der Max. Wind gemessen wurde */
+ var $changing = "nc"; /* Tendenz */
+ var $connection;
+ var $sensId;
+ var $table;
/* Konstruktor */
function Wind($sensId, & $connection){
@@ -25,32 +28,29 @@ class Wind{
/* Funktion, die die Klasse mit den Weten initialisiert */
function _fetchWindData($sensId, &$connection){
+ $this->connection = &$connection;
+ $this->sensId = $sensId;
/* Tabelle des Sensors bestimmen */
$tableQuery = "SELECT tabelle FROM sensoren, typen WHERE sensoren.id=".$sensId." AND typen.typ = sensoren.typ";
$table = $connection->fetchQueryResultLine($tableQuery);
+ $this->table = $table['tabelle'];
/* 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);
/* 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);
/* Bestimmte Werte den Klassenvariablen zuordnen */
$this->nowWind = $nowData['wind'];
$this->nowDir = $this->_calcDirection($nowData['dir']);
- $this->nowDate = $nowData['timestamp'];
+ $this->nowDate = $nowData['text_timestamp'];
$this->maxWind = $maxData['wind'];
$this->maxDir = $this->_calcDirection($maxData['dir']);
- $this->maxDate = $maxData['timestamp'];
-
- /* Durchschnittswert bestimmen lassen */
- $this->_fetchAverage($sensId, $table['tabelle'], &$connection);
-
- /* Tendenz bestimmen lassen */
- $this->_fetchMoving($sensId, $table['tabelle'], &$connection);
+ $this->maxDate = $maxData['text_timestamp'];
}
function _calcDirection($deg){
@@ -129,39 +129,39 @@ class Wind{
}
/* liefert den Durchschnittswert in einem bestimmtem Interval */
- function _getAverage($sensId, $table, &$connection, $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."')";
- $avData = $connection->fetchQueryResultLine($avQuery);
+ function _getAverage($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 = $this->connection->fetchQueryResultLine($avQuery);
return $avData;
}
/* momentanen Durchschnittswert bestimmen */
- function _fetchAverage($sensId, $table, &$connection){
+ function _fetchAverage(){
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
$i = 1; /* Laufvariable */
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
$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 */
$this->avVal = $avData['average'];
- $this->avInter = $i*20;
+ $this->avInter = $i*(Config::getAvInterval());
}
/* Bestimmt die Tendenz */
- function _fetchMoving($sensId, $table, &$connection){
- $shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
- $longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
+ function _fetchMoving(){
+ $shortAvData = $this->_getAverage("15 minutes"); /* Durchschnitt der letzten 15 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 */
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
return; /* und aus der Funktion huepfen */
}
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
if($changing > 0){ /* Wenn Aenderung positiv */
- $this->changing = "steigend (+ ".abs($changing * 0.1)." km/h)"; /* dann steigende Tendenz ausgeben */
+ $this->changing = "steigend (+ ".abs(round($changing * 0.1, 1))." km/h)"; /* dann steigende Tendenz ausgeben */
} elseif($changing < 0) { /* wenn Negativ */
- $this->changing = "fallend (- ".abs($changing * 0.1)." km/h)"; /* Fallende Tendenz ausgeben */
+ $this->changing = "fallend (- ".abs(round($changing * 0.1, 1))." km/h)"; /* Fallende Tendenz ausgeben */
} else { /* an sonsten */
$this->changing = "gleichbleibend (± 0 km/h)"; /* sagen, das es gleich geblieben ist */
}
@@ -186,14 +186,20 @@ class Wind{
}
function get_av_value(){
+ if($this->avVal == "nc")
+ $this->_fetchAverage();
return round($this->avVal * 0.1, 1);
}
function get_av_interval(){
+ if($this->avInter == "nc")
+ $this->_fetchAverage();
return $this->avInter;
}
function get_changing(){
+ if($this->changing == "nc")
+ $this->_fetchMoving();
return $this->changing;
}
diff --git a/webstuff/frontend/php_inc/parser.inc.php b/webstuff/frontend/php_inc/parser.inc.php
index c525f75..2aa7c8b 100644
--- a/webstuff/frontend/php_inc/parser.inc.php
+++ b/webstuff/frontend/php_inc/parser.inc.php
@@ -20,14 +20,9 @@ class Parser{
/* Fuegt Inhalt in das Inhalts-Array ein */
function appendContent($newContent){
if(is_array($newContent)){
- $newContentCount = count($newContent);
- for($i = 0; $i < $newContentCount; $i++){
- array_push($this->contentArray, $newContent[$i]);
- //echo $newContent[$i]."\n";
- }
+ $this->contentArray = &array_merge($this->contentArray, $newContent);//[$i]);
} else {
array_push($this->contentArray, $newContent);
- //echo $newContent."\n";
}
}
@@ -47,8 +42,9 @@ class Parser{
if($filePart != null){
$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 ... */
- if(0 != preg_match_all("/\{content:([a-z]+):([a-z0-9_]+)\}/i", $fileArray[$i], $results)){
+ $fileArrayCount = count($fileArray);
+ 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);
$resultsCount = count($results[1]);
for($j = 0; $j < $resultsCount; $j++){
@@ -72,16 +68,17 @@ class Parser{
$inPart = false; /* Flag ob innerhalb des gesuchten Templates Initialisieren */
$newArray = array(); /* Neues File-Array */
$fileArrayCount = count($fileArray);
+ $filePart = "{content:part:".$filePart."}";
for($i = 0; $i < $fileArrayCount; $i++){ /* Altes Array dtrchlaufen */
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 */
break; /* ...und Schleife abbrechen */
} else {
array_push($newArray, $fileArray[$i]); /* An sonsten Zeile zum neuem Array hinzufuegen */
}
} 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 */
}
}