connection = &$connection; $this->sensId = $sensId; $this->table = $table; $this->_fetchPressData(); } /* Funktion, die die Klasse mit den Weten initialisiert */ function _fetchPressData(){ /* Aktuelle Luftdruck bestimmen */ $nowQuery = "SELECT press, to_char(timestamp, 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$this->table." WHERE sens_id=".$this->sensId." ORDER BY timestamp DESC LIMIT 1"; $nowData = $this->connection->fetchQueryResultLine($nowQuery); /* Bestimmte Werte den Klassenvariablen zuordnen */ $this->nowPress = $nowData['press']; $this->nowDate = $nowData['text_timestamp']; } function _fetchMinMax(){ $Data = Sensor::get_sensor_extrema($this->sensId, &$this->connection, "press"); $this->minPress = $Data['min']; $this->maxPress = $Data['max']; } function _fetchMinMaxDate(){ if($this->maxHum == "nc" || $this->minHum == "nc"){ $this->_fetchMinMax(); } $Query = "SELECT to_char(max(timestamp), 'DD.MM.YYYY HH24:MI') as text_timestamp FROM ".$this->table." WHERE sens_id=".$this->sensId." AND press=".$this->maxPress." OR press=".$this->minPress." GROUP BY press ORDER BY press ASC LIMIT 2"; $Data = $this->connection->fetchQueryResultSet($Query); $this->minDate = $Data[0]['text_timestamp']; $this->maxDate = $Data[1]['text_timestamp']; } /* momentanen Durchschnittswert bestimmen */ function _fetchAverage(){ $Data = Sensor::get_sensor_average($this->sensId, &$this->connection, "press"); /* Werte den Klassenvariablen zuordnen */ $this->avVal = $Data['average']; $this->avInter = $Data['interval']; } /* Bestimmt die Tendenz */ function _fetchMoving(){ $shortAvData = Sensor::get_sensor_extrema($this->sensId, &$this->connection, "press", 15); /* Durchschnitt der letzten 15 minuten */ $longAvData = Sensor::get_sensor_extrema($this->sensId, &$this->connection, "press", 120); /* 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(round($changing * 0.1, 1))." hPa)"; /* dann steigende Tendenz ausgeben */ } elseif($changing < 0) { /* wenn Negativ */ $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 */ } return; } /* --- Funktionen, die aufgerufen werden um die geholeten Werte auszugeben --- */ function get_now_val(){ return $this->nowPress; } function get_now_date(){ return $this->nowDate; } function get_av_value(){ 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; } function get_max_val(){ if($this->maxPress == "nc"){ $this->_fetchMinMax(); } return $this->maxPress; } function get_max_date(){ if($this->minDate == "nc"){ $this->_fetchMinMaxDate(); } return $this->maxDate; } function get_min_val(){ if($this->minPress == "nc"){ $this->_fetchMinMax(); } return $this->minPress; } function get_min_date(){ if($this->maxDate == "nc"){ $this->_fetchMinMaxDate(); } return $this->minDate; } } ?>