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; }
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; }