Exemplo n.º 1
0
 public function checkPeriod($measuring_timestamp, $sensor_feature_id, $station_id, $key)
 {
     // todo
     $station = new Station();
     $stationData = $station->findbypk($station_id);
     if ($stationData['timezone_id']) {
         TimezoneWork::set($stationData['timezone_id']);
     }
     $last = $this->prepared_pairs[$this->checkPeriodArray[$key]];
     $criteria = new CDbCriteria();
     $criteria->select = 'measuring_timestamp, sensor_feature_value, sensor_feature_normalized_value, period, measuring_timestamp, sensor_feature_id, station_id';
     $criteria->addCondition('measuring_timestamp < "' . $measuring_timestamp . '"');
     $criteria->addCondition('sensor_feature_id = "' . $sensor_feature_id . '"');
     $criteria->addCondition('station_id = "' . $station_id . '"');
     $criteria->order = 'measuring_timestamp DESC';
     $criteria->limit = 1;
     $data = SensorData::model()->find($criteria);
     if (!is_null($data) and $data != false) {
         $value_norm = $last['normilized_value'] - $data['sensor_feature_normalized_value'];
         $getDate = getdate(strtotime($measuring_timestamp));
         $getDatePrev = getdate(strtotime($data['measuring_timestamp']));
         if ($getDate['yday'] != $getDatePrev['yday'] && ($getDate['hours'] != 0 || $getDate['minutes'] != 0 || $getDate['seconds'] != 0) || $getDate['yday'] == $getDatePrev['yday'] && $getDatePrev['hours'] == 0 && $getDatePrev['minutes'] == 0 && $getDatePrev['seconds'] == 0) {
             $this->prepared_pairs[$key]['period'] = $getDate['hours'] * 60 + $getDate['minutes'];
             $this->prepared_pairs[$key]['value'] = $last['value'];
             $this->prepared_pairs[$key]['normilized_value'] = $last['normilized_value'];
         } else {
             $this->prepared_pairs[$key]['period'] = round((strtotime($measuring_timestamp) - strtotime($data['measuring_timestamp'])) / 60);
             $this->prepared_pairs[$key]['value'] = $last['value'] - $data['sensor_feature_value'];
             $this->prepared_pairs[$key]['normilized_value'] = $value_norm;
             if ($this->prepared_pairs[$key]['value'] < 0) {
                 $this->prepared_pairs[$key]['period'] = $getDate['hours'] * 60 + $getDate['minutes'];
                 $this->prepared_pairs[$key]['value'] = $last['value'];
                 $this->prepared_pairs[$key]['normilized_value'] = $last['normilized_value'];
             }
             if ($last['value'] == 0 && $this->prepared_pairs[$key]['value'] < 0) {
                 $this->prepared_pairs[$key]['value'] = 0;
                 $this->prepared_pairs[$key]['normilized_value'] = 0.0;
             }
         }
         $this->_logger->log(__METHOD__ . ' getDate: ' . $measuring_timestamp);
         $this->_logger->log(__METHOD__ . ' sensor_feature_id: ' . $sensor_feature_id);
         $this->_logger->log(__METHOD__ . ' station_id: ' . $station_id);
         $this->_logger->log(__METHOD__ . ' getDatePrev: ' . $data['measuring_timestamp']);
     }
     return $this->prepared_pairs[$key];
 }