public function getInfoForAwsPanel($sensor_pairs, $sensorList, $sensorData, $for = 'panel')
 {
     $return = array();
     $sensor_ids = array();
     $sensor_measuring_time = array();
     $last_logs_ids = array();
     $last_logs_per_station = array();
     $first_logs_ids = array();
     foreach ($sensor_pairs as $value) {
         $sensor_ids[] = $value['sensor_id'];
         if (count($value['last_logs']) > 0) {
             $first_logs_ids[] = $value['last_logs'][0]->log_id;
             $last_logs_ids[] = $value['last_logs'][0]->log_id;
             $sensor_measuring_time[$value['sensor_id']] = $value['last_logs'][0]->measuring_timestamp;
             $last_logs_per_station[$value['station_id']][0] = $value['last_logs'][0]->log_id;
         }
         if (count($value['last_logs']) > 1) {
             $last_logs_ids[] = $value['last_logs'][1]->log_id;
             $last_logs_per_station[$value['station_id']][1] = $value['last_logs'][1]->log_id;
         }
     }
     $sensor_feature_ids = array();
     $sensor_feature_ids2 = array();
     if (isset($sensorList['wind_speed_1']) && is_array($sensorList['wind_speed_1'])) {
         foreach ($sensor_ids as $sensor_id) {
             if (!isset($sensorList['wind_speed_1'][$sensor_id])) {
                 continue;
             }
             $sensorFeature = $sensorList['wind_speed_1'][$sensor_id];
             $sensor_feature_ids[] = $sensorFeature->sensor_feature_id;
             $sensor_feature_ids2[$sensor_id] = $sensorFeature->sensor_feature_id;
             $return[$sensorFeature->sensor->station_id][$sensor_id] = array('sensor_display_name' => $sensorFeature->sensor->display_name, 'sensor_id_code' => $sensorFeature->sensor->sensor_id_code, 'metric_html_code' => is_null($sensorFeature->metric) ? '' : $sensorFeature->metric->html_code, 'group' => 'last_min24_max_24', 'last' => '-', '2minute_average' => '-', '10minute_average' => '-', 'max24' => '-', 'min24' => '-', 'average' => '-', 'change' => 'no', 'timezone_id' => $sensorFeature->sensor->station->timezone_id, 'filter_max' => $sensorFeature->default->filter_max, 'filter_min' => $sensorFeature->default->filter_min, 'filter_diff' => $sensorFeature->default->filter_diff);
         }
     }
     if (count($last_logs_ids) === 0) {
         return $return;
     }
     $windAverages = array('wind_speed_2' => '2minute_average', 'wind_speed_10' => '10minute_average');
     foreach ($return as $station_id => &$sensors) {
         foreach ($sensors as $sensor_id => &$sensorValues) {
             if (isset($sensorData['wind_speed_1'][$station_id][$sensor_id]) && count($sensorData['wind_speed_1'][$station_id][$sensor_id]) > 0 && $sensorData['wind_speed_1'][$station_id][$sensor_id][0]->listener_log_id == (isset($last_logs_per_station[$station_id][0]) ? $last_logs_per_station[$station_id][0] : -1)) {
                 $sensorValue = $sensorData['wind_speed_1'][$station_id][$sensor_id][0];
                 if ($sensorValue->is_m != 1) {
                     $sensorValues['last'] = $this->formatValue($sensorValue->sensor_feature_value, 'wind_speed_1');
                     if (isset($sensorValues['has_filter_max']) && $sensorValues['has_filter_max'] == 1) {
                         if ($sensorValue->sensor_feature_value > $sensorValues['filter_max']) {
                             $sensorValues['last_filter_errors'][] = "R > " . $sensorValues['filter_max'];
                         }
                     }
                     if (isset($sensorValues['has_filter_min']) && $sensorValues['has_filter_min'] == 1) {
                         if ($sensorValue->sensor_feature_value < $sensorValues['filter_min']) {
                             $sensorValues['last_filter_errors'][] = "R < " . $sensorValues['filter_min'];
                         }
                     }
                     if (count($sensorData['wind_speed_1'][$station_id][$sensor_id]) > 3) {
                         $previousSensorValue = array();
                         for ($i = 0; $i < 4; $i++) {
                             $previousSensorValue[] = $sensorData['wind_speed_1'][$station_id][$sensor_id][$i]->sensor_feature_value;
                         }
                         if (SensorHandler::checkTrend($previousSensorValue, 1)) {
                             $sensorValues['change'] = 'up';
                         } else {
                             if (SensorHandler::checkTrend($previousSensorValue, -1)) {
                                 $sensorValues['change'] = 'down';
                             }
                         }
                         if (isset($sensorValues['has_filter_diff']) && $sensorValues['has_filter_diff'] == 1) {
                             if (abs($sensorValue->sensor_feature_value - $previousSensorValue[1]) > $sensorValues['filter_diff']) {
                                 $sensorValues['last_filter_errors'][] = "|R1 - R0| > " . $sensorValues['filter_diff'];
                             }
                         }
                     }
                 }
                 if (isset($sensor_measuring_time[$sensor_id])) {
                     $maxmin = $this->getMaxMinInDay($sensor_feature_ids2[$sensor_id], strtotime($sensor_measuring_time[$sensor_id]), 1, 0, 'wind_speed_1');
                     $sensorValues['max24'] = $maxmin['max'];
                     $sensorValues['min24'] = $maxmin['min'];
                     $sensorValues['mami_title'] = $maxmin['mami_title'];
                     if ($maxmin['max'] != '-' && $maxmin['min'] != '-') {
                         $sensorValues['average'] = $this->formatValue(($maxmin['max'] + $maxmin['min']) / 2, 'wind_speed_1');
                     } else {
                         if ($maxmin['max'] != '-') {
                             $sensorValues['average'] = $this->formatValue($maxmin['max'], 'wind_speed_1');
                         } else {
                             if ($maxmin['min'] != '-') {
                                 $sensorValues['average'] = $this->formatValue($maxmin['min'], 'wind_speed_1');
                             }
                         }
                     }
                     $maxmin_y = $this->getMaxMinInDay($sensor_feature_ids2[$sensor_id], strtotime($sensor_measuring_time[$sensor_id]), 2, 0, 'wind_speed_1');
                     $sensorValues['max24_y'] = $maxmin_y['max'];
                     $sensorValues['min24_y'] = $maxmin_y['min'];
                     $sensorValues['mami_title_y'] = $maxmin_y['mami_title'];
                     if ($maxmin_y['max'] != '-' && $maxmin_y['min'] != '-') {
                         $sensorValues['average_y'] = $this->formatValue(($maxmin_y['max'] + $maxmin_y['min']) / 2, 'wind_speed_1');
                     } else {
                         if ($maxmin_y['max'] != '-') {
                             $sensorValues['average_y'] = $this->formatValue($maxmin_y['max'], 'wind_speed_1');
                         } else {
                             if ($maxmin_y['min'] != '-') {
                                 $sensorValues['average_y'] = $this->formatValue($maxmin_y['min'], 'wind_speed_1');
                             }
                         }
                     }
                 }
             }
             if ($for === 'single' && count($first_logs_ids) > 0) {
                 foreach ($windAverages as $key => $label) {
                     if (isset($sensorData[$key][$station_id][$sensor_id])) {
                         foreach ($sensorData[$key][$station_id][$sensor_id] as $sensorDataRecord) {
                             if (in_array($sensorDataRecord->listener_log_id, $first_logs_ids)) {
                                 $sensorValues[$label] = $sensorDataRecord->is_m == 1 ? '-' : $this->formatValue($sensorDataRecord->sensor_feature_value);
                             }
                         }
                     }
                 }
             }
             unset($sensorValues['filter_min']);
             unset($sensorValues['filter_max']);
             unset($sensorValues['filter_diff']);
         }
     }
     return $return;
 }
 public function getInfoForAwsPanel($sensor_pairs, $sensorList, $sensorData, $for = 'panel')
 {
     $return = array();
     $sensor_ids = array();
     $sensor_measuring_time = array();
     $last_logs_ids = array();
     $last_logs_per_station = array();
     foreach ($sensor_pairs as $value) {
         $sensor_ids[] = $value['sensor_id'];
         if (count($value['last_logs']) > 0) {
             $last_logs_ids[] = $value['last_logs'][0]->log_id;
             $sensor_measuring_time[$value['sensor_id']] = $value['last_logs'][0]->measuring_timestamp;
             $last_logs_per_station[$value['station_id']][0] = $value['last_logs'][0]->log_id;
         }
         if (count($value['last_logs']) > 1) {
             $last_logs_ids[] = $value['last_logs'][1]->log_id;
             $last_logs_per_station[$value['station_id']][1] = $value['last_logs'][1]->log_id;
         }
     }
     $sensor_feature_ids = array();
     $sensor_feature_ids2 = array();
     if (isset($sensorList['solar_radiation_in_period']) && is_array($sensorList['solar_radiation_in_period'])) {
         foreach ($sensor_ids as $sensor_id) {
             if (!isset($sensorList['solar_radiation_in_period'][$sensor_id])) {
                 continue;
             }
             $sensorFeature = $sensorList['solar_radiation_in_period'][$sensor_id];
             $sensor_feature_ids[] = $sensorFeature->sensor_feature_id;
             $sensor_feature_ids2[$sensor_id] = $sensorFeature->sensor_feature_id;
             $return[$sensorFeature->sensor->station_id][$sensor_id] = array('sensor_display_name' => $sensorFeature->sensor->display_name, 'sensor_id_code' => $sensorFeature->sensor->sensor_id_code, 'metric_html_code' => is_null($sensorFeature->metric) ? '' : $sensorFeature->metric->html_code, 'group' => 'last_period_today', 'last' => '-', 'period' => '-', 'max24' => '-', 'min24' => '-', 'change' => 'no', 'total_today_calculated' => '-', 'timezone_id' => $sensorFeature->sensor->station->timezone_id, 'filter_max' => $sensorFeature->default->filter_max, 'filter_min' => $sensorFeature->default->filter_min, 'filter_diff' => $sensorFeature->default->filter_diff, 'has_filter_max' => $sensorFeature->has_filter_max, 'has_filter_min' => $sensorFeature->has_filter_min, 'has_filter_diff' => $sensorFeature->has_filter_diff);
         }
     }
     if (count($last_logs_ids) === 0) {
         return $return;
     }
     foreach ($return as $station_id => &$sensors) {
         foreach ($sensors as $sensor_id => &$sensorValues) {
             if (isset($sensorData['solar_radiation_in_period'][$station_id][$sensor_id]) && count($sensorData['solar_radiation_in_period'][$station_id][$sensor_id]) > 0 && $sensorData['solar_radiation_in_period'][$station_id][$sensor_id][0]->listener_log_id == (isset($last_logs_per_station[$station_id][0]) ? $last_logs_per_station[$station_id][0] : -1)) {
                 $sensorValue = $sensorData['solar_radiation_in_period'][$station_id][$sensor_id][0];
                 if ($sensorValue->is_m != 1) {
                     $sensorValues['last'] = $this->formatValue($sensorValue->sensor_feature_value, 'solar_radiation_in_period');
                     $sensorValues['period'] = $sensorValue->period;
                     if (isset($sensorValues['has_filter_max']) && $sensorValues['has_filter_max'] == 1) {
                         if ($sensorValue->sensor_feature_value > $sensorValues['filter_max']) {
                             $sensorValues['last_filter_errors'][] = "R > " . $sensorValues['filter_max'];
                         }
                     }
                     if (isset($sensorValues['has_filter_min']) && $sensorValues['has_filter_min'] == 1) {
                         if ($sensorValue->sensor_feature_value < $sensorValues['filter_min']) {
                             $sensorValues['last_filter_errors'][] = "R < " . $sensorValues['filter_min'];
                         }
                     }
                     if (count($sensorData['solar_radiation_in_period'][$station_id][$sensor_id]) > 3) {
                         $previousSensorValue = array();
                         for ($i = 0; $i < 4; $i++) {
                             $previousSensorValue[] = $sensorData['solar_radiation_in_period'][$station_id][$sensor_id][$i]->sensor_feature_value;
                         }
                         if (SensorHandler::checkTrend($previousSensorValue, 1)) {
                             $sensorValues['change'] = 'up';
                         } else {
                             if (SensorHandler::checkTrend($previousSensorValue, -1)) {
                                 $sensorValues['change'] = 'down';
                             }
                         }
                         if (isset($sensorValues['has_filter_diff']) && $sensorValues['has_filter_diff'] == 1) {
                             if (abs($sensorValue->sensor_feature_value - $previousSensorValue[1]) > $sensorValues['filter_diff']) {
                                 $sensorValues['last_filter_errors'][] = "|R1 - R0| > " . $sensorValues['filter_diff'];
                             }
                         }
                     }
                 }
                 if (isset($sensor_measuring_time[$sensor_id])) {
                     //						$sensorValues['total_today_calculated'] = $this->getTotalFromHour($sensor_feature_ids2[$sensor_id], strtotime($sensor_measuring_time[$sensor_id]), 0, 'solar_radiation_in_day');
                     $total = $this->getTotalInDay($sensor_feature_ids2[$sensor_id], strtotime($sensor_measuring_time[$sensor_id]), 1, 'solar_radiation_in_day');
                     $sensorValues['total_today_calculated'] = $total['total'];
                     $sensorValues['total_today_title'] = $total['total_title'];
                     $total = $this->getTotalInDay($sensor_feature_ids2[$sensor_id], strtotime($sensor_measuring_time[$sensor_id]), 2, 'solar_radiation_in_day');
                     $sensorValues['total_today_calculated_y'] = $total['total'];
                     $sensorValues['total_today_title_y'] = $total['total_title'];
                 }
             }
             foreach (array('filter_min', 'filter_max', 'filter_diff', 'has_filter_min', 'has_filter_max', 'has_filter_diff') as $unsetfield) {
                 unset($return[$station_id][$sensor_id][$unsetfield]);
             }
         }
     }
     return $return;
 }
 public function getInfoForAwsPanel($sensor_pairs, $sensorList, $sensorData, $for = 'panel')
 {
     $return = array();
     $sensor_ids = array();
     $sensor_measuring_time = array();
     $last_logs_ids = array();
     $last_logs_per_station = array();
     foreach ($sensor_pairs as $value) {
         $sensor_ids[] = $value['sensor_id'];
         if (count($value['last_logs']) > 0) {
             $last_logs_ids[] = $value['last_logs'][0]->log_id;
             $sensor_measuring_time[$value['sensor_id']] = $value['last_logs'][0]->measuring_timestamp;
             $last_logs_per_station[$value['station_id']][0] = $value['last_logs'][0]->log_id;
         }
         if (count($value['last_logs']) > 1) {
             $last_logs_ids[] = $value['last_logs'][1]->log_id;
             $last_logs_per_station[$value['station_id']][1] = $value['last_logs'][1]->log_id;
         }
     }
     $features = array('cloud_height_depth_1', 'cloud_height_depth_2', 'cloud_height_depth_3', 'cloud_height_height_1', 'cloud_height_height_2', 'cloud_height_height_3', 'cloud_measuring_range', 'cloud_vertical_visibility');
     $sensor_feature_ids = array();
     foreach ($features as $feature) {
         if (isset($sensorList[$feature]) && is_array($sensorList[$feature])) {
             foreach ($sensor_ids as $sensor_id) {
                 if (!isset($sensorList[$feature][$sensor_id])) {
                     continue;
                 }
                 $sensorFeature = $sensorList[$feature][$sensor_id];
                 $sensor_feature_ids[] = $sensorFeature->sensor_feature_id;
                 if (!isset($return[$sensorFeature->sensor->station_id][$sensor_id])) {
                     $return[$sensorFeature->sensor->station_id][$sensor_id] = array('sensor_display_name' => $sensorFeature->sensor->display_name, 'sensor_id_code' => $sensorFeature->sensor->sensor_id_code, 'group' => 'clouds', 'timezone_id' => $sensorFeature->sensor->station->timezone_id);
                 }
                 $return[$sensorFeature->sensor->station_id][$sensor_id][$sensorFeature->feature_code] = array('metric_html_code' => is_null($sensorFeature->metric) ? '' : $sensorFeature->metric->html_code, 'last' => '-', 'change' => 'no', 'filter_max' => $sensorFeature->default->filter_max, 'filter_min' => $sensorFeature->default->filter_min, 'filter_diff' => $sensorFeature->default->filter_diff, 'has_filter_max' => $sensorFeature->has_filter_max, 'has_filter_min' => $sensorFeature->has_filter_min, 'has_filter_diff' => $sensorFeature->has_filter_diff);
             }
         }
     }
     if (count($last_logs_ids) === 0) {
         return $return;
     }
     foreach ($features as $feature_code) {
         foreach ($return as $station_id => &$sensors) {
             foreach ($sensors as $sensor_id => &$sensorValues) {
                 if (isset($sensorData[$feature_code][$station_id][$sensor_id]) && count($sensorData[$feature_code][$station_id][$sensor_id]) > 0 && $sensorData[$feature_code][$station_id][$sensor_id][0]->listener_log_id == (isset($last_logs_per_station[$station_id][0]) ? $last_logs_per_station[$station_id][0] : -1)) {
                     $sensorValue = $sensorData[$feature_code][$station_id][$sensor_id][0];
                     if ($sensorValue->is_m != 1) {
                         $sensorValues[$feature_code]['last'] = $this->formatValue($sensorValue->sensor_feature_value, $feature_code);
                         if (isset($sensorValues[$feature_code]['has_filter_max']) && $sensorValues[$feature_code]['has_filter_max'] == 1) {
                             if ($sensorValue->sensor_feature_value > $sensorValues[$feature_code]['filter_max']) {
                                 $sensorValues[$feature_code]['last_filter_errors'][] = "R > " . $sensorValues[$feature_code]['filter_max'];
                             }
                         }
                         if (isset($sensorValues[$feature_code]['has_filter_min']) && $sensorValues[$feature_code]['has_filter_min'] == 1) {
                             if ($sensorValue->sensor_feature_value < $sensorValues[$feature_code]['filter_min']) {
                                 $sensorValues[$feature_code]['last_filter_errors'][] = "R < " . $sensorValues[$feature_code]['filter_min'];
                             }
                         }
                         if (count($sensorData[$feature_code][$station_id][$sensor_id]) > 3) {
                             $previousSensorValue = array();
                             for ($i = 0; $i < 4; $i++) {
                                 $previousSensorValue[] = $sensorData[$feature_code][$station_id][$sensor_id][$i]->sensor_feature_value;
                             }
                             if (SensorHandler::checkTrend($previousSensorValue, 1)) {
                                 $sensorValues['change'] = 'up';
                             } else {
                                 if (SensorHandler::checkTrend($previousSensorValue, -1)) {
                                     $sensorValues['change'] = 'down';
                                 }
                             }
                             if (isset($sensorValues[$feature_code]['has_filter_diff']) && $sensorValues[$feature_code]['has_filter_diff'] == 1) {
                                 if (abs($sensorValue->sensor_feature_value - $previousSensorValue[1]) > $sensorValues[$feature_code]['filter_diff']) {
                                     $sensorValues[$feature_code]['last_filter_errors'][] = "|R1 - R0| > " . $sensorValues[$feature_code]['filter_diff'];
                                 }
                             }
                         }
                     }
                 }
                 foreach (array('filter_min', 'filter_max', 'filter_diff', 'has_filter_min', 'has_filter_max', 'has_filter_diff') as $unsetfield) {
                     unset($sensorValues[$feature_code][$unsetfield]);
                 }
             }
         }
     }
     return $return;
 }
Exemple #4
0
 public static function getTrendForAwsPanel($stationData)
 {
     $change = 'no';
     $arrForTrend = array();
     foreach ($stationData as $trendValue) {
         $arrForTrend[] = $trendValue->sensor_feature_value;
     }
     if (SensorHandler::checkTrend($arrForTrend, 1)) {
         $change = 'up';
     } else {
         if (SensorHandler::checkTrend($arrForTrend, -1)) {
             $change = 'down';
         }
     }
     return $change;
 }