Skip to content

Commit

Permalink
Merge pull request #141 from jekhokie/add-all-noaa-enhancements
Browse files Browse the repository at this point in the history
Add Configurable NOAA Enhancements
  • Loading branch information
jekhokie committed Feb 18, 2021
2 parents 1cb3271 + 34bed26 commit 97ff833
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 31 deletions.
2 changes: 2 additions & 0 deletions ansible/roles/common/templates/noaa-v2.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ IMAGE_ANNOTATION_LOCATION={{ image_annotation_location }}
GROUND_STATION_LOCATION='{{ ground_station_location }}'
SHOW_SUN_ELEVATION={{ show_sun_elevation|lower }}
SHOW_PASS_DIRECTION={{ show_pass_direction|lower }}
NOAA_DAY_ENHANCEMENTS='{{ noaa_daytime_enhancements }}'
NOAA_NIGHT_ENHANCEMENTS='{{ noaa_nighttime_enhancements }}'
ENABLE_EMAIL_PUSH={{ enable_email_push|lower }}
EMAIL_PUSH_ADDRESS={{ email_push_address }}
ENABLE_EMAIL_SCHEDULE_PUSH={{ enable_email_schedule_push|lower }}
Expand Down
4 changes: 4 additions & 0 deletions ansible/roles/webserver/templates/Config.php.j2
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ class Config {

# how many captures to list on admin page for management
const ADMIN_CAPTURES_PER_PAGE = 100;

# which enhancements to display for day/night
const NOAA_DAY_ENHANCEMENTS = '{{ noaa_daytime_enhancements }}';
const NOAA_NIGHT_ENHANCEMENTS = '{{ noaa_nighttime_enhancements }}';
}

?>
6 changes: 6 additions & 0 deletions config/settings.yml.sample
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ delete_audio: false
# annotation (leave blank if you wish to exclude the ground station annotation)
# show_sun_elevation - whether to show sun elevation in annotation
# show_pass_direction - show which direction the satellite is moving in the image annotation
# noaa_daytime_enhancements - list of enhancements to create images using during daytime captures
# (note: default value is total list of supported image processors)
# noaa_nighttime_enhancements - list of enhancements to create images using during nighttime captures
# (note: default value is total list of supported image processors)
flip_meteor_image: true
produce_spectrogram: true
noaa_crop_telemetry: false
Expand All @@ -54,6 +58,8 @@ produce_noaa_pristine_image: false
ground_station_location: ''
show_sun_elevation: false
show_pass_direction: false
noaa_daytime_enhancements: 'ZA MCIR MCIR-precip MSA MSA-precip HVC-precip HVCT-precip HVC HVCT therm'
noaa_nighttime_enhancements: 'ZA MCIR MCIR-precip therm'

# thresholds for scheduling captures - enables avoiding an attempt
# to capture imagery if objects are lower than these degree elevation thresholds
Expand Down
38 changes: 32 additions & 6 deletions scripts/receive_meteor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ fi
PASS_START=$(expr "$EPOCH_START" + 90)
SUN_ELEV=$(python3 "$SCRIPTS_DIR"/tools/sun.py "$PASS_START")

# determine if pass is in daylight
daylight=0
if [ "${SUN_ELEV}" -gt "${SUN_MIN_ELEV}" ]; then daylight=1; fi

# store annotation for images
annotation=""
if [ "${GROUND_STATION_LOCATION}" != "" ]; then
Expand Down Expand Up @@ -137,9 +141,20 @@ if [ "$METEOR_RECEIVER" == "rtl_fm" ]; then
fi

# insert or replace in case there was already an insert due to the spectrogram creation
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram) VALUES ($EPOCH_START,\"$FILENAME_BASE\", 1, 0, $spectrogram);"
pass_id=$(sqlite3 $DB_FILE "SELECT id FROM decoded_passes ORDER BY id DESC LIMIT 1;")
$SQLITE3 $DB_FILE "UPDATE predict_passes SET is_active = 0 WHERE (predict_passes.pass_start) in (select predict_passes.pass_start from predict_passes inner join decoded_passes on predict_passes.pass_start = decoded_passes.pass_start where decoded_passes.id = $pass_id);"
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram) \
VALUES ($EPOCH_START, \"$FILENAME_BASE\", $daylight, 0, $spectrogram);"

pass_id=$($SQLITE3 $DB_FILE "SELECT id FROM decoded_passes ORDER BY id DESC LIMIT 1;")
$SQLITE3 $DB_FILE "UPDATE predict_passes \
SET is_active = 0 \
WHERE (predict_passes.pass_start) \
IN ( \
SELECT predict_passes.pass_start \
FROM predict_passes \
INNER JOIN decoded_passes \
ON predict_passes.pass_start = decoded_passes.pass_start \
WHERE decoded_passes.id = $pass_id \
);"
else
log "Decoding failed, either a bad pass/low SNR or a software problem" "ERROR"
fi
Expand Down Expand Up @@ -190,9 +205,20 @@ elif [ "$METEOR_RECEIVER" == "gnuradio" ]; then
convert -thumbnail 300 "${IMAGE_FILE_BASE}-col-122-rectified.jpg" "${IMAGE_THUMB_BASE}-col-122-rectified.jpg"

# insert or replace in case there was already an insert due to the spectrogram creation
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram) VALUES ($EPOCH_START,\"$FILENAME_BASE\", 1, 0, $spectrogram);"
pass_id=$(sqlite3 $DB_FILE "SELECT id FROM decoded_passes ORDER BY id DESC LIMIT 1;")
$SQLITE3 $DB_FILE "UPDATE predict_passes SET is_active = 0 WHERE (predict_passes.pass_start) in (select predict_passes.pass_start from predict_passes inner join decoded_passes on predict_passes.pass_start = decoded_passes.pass_start where decoded_passes.id = $pass_id);"
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram) \
VALUES ($EPOCH_START, \"$FILENAME_BASE\", $daylight, 0, $spectrogram);"

pass_id=$($SQLITE3 $DB_FILE "SELECT id FROM decoded_passes ORDER BY id DESC LIMIT 1;")
$SQLITE3 $DB_FILE "UPDATE predict_passes \
SET is_active = 0 \
WHERE (predict_passes.pass_start) \
IN ( \
SELECT predict_passes.pass_start \
FROM predict_passes \
INNER JOIN decoded_passes \
ON predict_passes.pass_start = decoded_passes.pass_start \
WHERE decoded_passes.id = $pass_id \
);"

if [ "$ENABLE_EMAIL_PUSH" == "true" ]; then
log "Emailing image" "INFO"
Expand Down
52 changes: 29 additions & 23 deletions scripts/receive_noaa.sh
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,14 @@ fi
map_overlay="${NOAA_HOME}/tmp/map/${FILENAME_BASE}-map.png"
$WXMAP -T "${SAT_NAME}" -H "${TLE_FILE}" -p 0 ${extra_map_opts} -o "${epoch_adjusted}" $map_overlay >> $NOAA_LOG 2>&1

# determine which enhancements to create based on sunlight/dark
# run all enhancements all the time - any that cannot be produced will
# simply be left out/not included, so there is no harm in running all of them
if [ "${SUN_ELEV}" -gt "${SUN_MIN_ELEV}" ]; then
ENHANCEMENTS="ZA MCIR MCIR-precip MSA MSA-precip HVC-precip HVCT-precip HVC HVCT therm"
daylight="true"
ENHANCEMENTS="${NOAA_DAY_ENHANCEMENTS}"
daylight=1
else
ENHANCEMENTS="ZA MCIR MCIR-precip therm"
daylight="false"
ENHANCEMENTS="${NOAA_NIGHT_ENHANCEMENTS}"
daylight=0
fi

# build images based on enhancements defined
Expand Down Expand Up @@ -163,33 +164,38 @@ for enhancement in $ENHANCEMENTS; do
log "No image processor found for $enhancement - skipping." "ERROR"
else
${IMAGE_PROC_DIR}/${proc_script} $map_overlay "${AUDIO_FILE_BASE}.wav" "${IMAGE_FILE_BASE}-$enhancement.jpg" >> $NOAA_LOG 2>&1
fi

${IMAGE_PROC_DIR}/noaa_normalize_annotate.sh "${IMAGE_FILE_BASE}-$enhancement.jpg" "${annotation}" 90 >> $NOAA_LOG 2>&1
${IMAGE_PROC_DIR}/thumbnail.sh 300 "${IMAGE_FILE_BASE}-$enhancement.jpg" "${IMAGE_THUMB_BASE}-$enhancement.jpg" >> $NOAA_LOG 2>&1
${IMAGE_PROC_DIR}/noaa_normalize_annotate.sh "${IMAGE_FILE_BASE}-$enhancement.jpg" "${annotation}" 90 >> $NOAA_LOG 2>&1
${IMAGE_PROC_DIR}/thumbnail.sh 300 "${IMAGE_FILE_BASE}-$enhancement.jpg" "${IMAGE_THUMB_BASE}-$enhancement.jpg" >> $NOAA_LOG 2>&1

if [ "${ENABLE_EMAIL_PUSH}" == "true" ]; then
log "Emailing image" "INFO"
${PUSH_PROC_DIR}/push_email.sh "${EMAIL_PUSH_ADDRESS}" "${IMAGE_FILE_BASE}-$enhancement.jpg" "${annotation}" >> $NOAA_LOG 2>&1
fi
if [ "${ENABLE_EMAIL_PUSH}" == "true" ]; then
log "Emailing image" "INFO"
${PUSH_PROC_DIR}/push_email.sh "${EMAIL_PUSH_ADDRESS}" "${IMAGE_FILE_BASE}-$enhancement.jpg" "${annotation}" >> $NOAA_LOG 2>&1
fi

if [ "${ENABLE_DISCORD_PUSH}" == "true" ]; then
${PUSH_PROC_DIR}/push_discord.sh "${IMAGE_FILE_BASE}-$enhancement.jpg" "${annotation}" >> $NOAA_LOG 2>&1
if [ "${ENABLE_DISCORD_PUSH}" == "true" ]; then
${PUSH_PROC_DIR}/push_discord.sh "${IMAGE_FILE_BASE}-$enhancement.jpg" "${annotation}" >> $NOAA_LOG 2>&1
fi
fi
done

rm "${NOAA_HOME}/tmp/map/${FILENAME_BASE}-map.png"

# store enhancements
if [ "${SUN_ELEV}" -gt "${SUN_MIN_ELEV}" ]; then
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram, has_pristine) VALUES ($EPOCH_START, \"$FILENAME_BASE\", 1, 1, $spectrogram, $pristine);"
else
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram, has_pristine) VALUES ($EPOCH_START, \"$FILENAME_BASE\", 0, 1, $spectrogram, $pristine);"
fi

pass_id=$($SQLITE3 $DB_FILE "select id from decoded_passes order by id desc limit 1;")

$SQLITE3 $DB_FILE "update predict_passes set is_active = 0 where (predict_passes.pass_start) in (select predict_passes.pass_start from predict_passes inner join decoded_passes on predict_passes.pass_start = decoded_passes.pass_start where decoded_passes.id = $pass_id);"
$SQLITE3 $DB_FILE "INSERT OR REPLACE INTO decoded_passes (pass_start, file_path, daylight_pass, sat_type, has_spectrogram, has_pristine) \
VALUES ($EPOCH_START, \"$FILENAME_BASE\", $daylight, 1, $spectrogram, $pristine);"

pass_id=$($SQLITE3 $DB_FILE "SELECT id FROM decoded_passes ORDER BY id DESC LIMIT 1;")
$SQLITE3 $DB_FILE "UPDATE predict_passes \
SET is_active = 0 \
WHERE (predict_passes.pass_start) \
IN ( \
SELECT predict_passes.pass_start \
FROM predict_passes \
INNER JOIN decoded_passes \
ON predict_passes.pass_start = decoded_passes.pass_start \
WHERE decoded_passes.id = $pass_id \
);"

if [ "$DELETE_AUDIO" = true ]; then
log "Deleting audio files" "INFO"
Expand Down
4 changes: 2 additions & 2 deletions webpanel/App/Models/Capture.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ public function getEnhancements($id) {
break;
case 1: // NOAA
if ($pass['daylight_pass'] == 1) {
$enhancements = ['-ZA.jpg','-MCIR.jpg','-MCIR-precip.jpg','-MSA.jpg','-MSA-precip.jpg','-HVC.jpg','-HVC-precip.jpg','-HVCT.jpg','-HVCT-precip.jpg','-therm.jpg'];
$enhancements = array_map(function($x) { return "-" . $x . ".jpg"; }, explode(' ', Config::NOAA_DAY_ENHANCEMENTS));
} else {
$enhancements = ['-ZA.jpg','-MCIR.jpg','-MCIR-precip.jpg','-therm.jpg'];
$enhancements = array_map(function($x) { return "-" . $x . ".jpg"; }, explode(' ', Config::NOAA_NIGHT_ENHANCEMENTS));
}
break;
}
Expand Down

0 comments on commit 97ff833

Please sign in to comment.