You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

186 lines
6.1 KiB

#/bin/bash
#
# load up configuration variables
if [ -f ${CUSTOM}/wx_scripts.conf ] ; then
source /wx_scripts.conf
else
echo "Missing ${CUSTOM}/wx_scripts.conf file, aborting..."
exit 1
fi
# if Weather Underground _STN not an argument, then use what is defined in confi gure file.
if [ "$1" = "" ] ; then
WX_UNDERGRND_STN=${WX_UNDERGRND_STN}
else
WX_UNDERGRND_STN=$1
fi
# Various files and directories
# report/working dirs
UG_WX_DIR=/custom/wx/report_ug/${WX_UNDERGRND_STN}
UG_WX_PAR_DIR=/custom/WxRpt_ug
UG_WX_WRKING_DIR=/custom/WxRpt_ug/${WX_UNDERGRND_STN}
# make sure custom audio wx directory is created
if [ ! -d $UG_WX_DIR ] ; then
mkdir -p $UG_WX_DIR
fi
# make sure custom working wx directory is created
if [ ! -d $UG_WX_WRKING_DIR ] ; then
mkdir -p $UG_WX_WRKING_DIR
fi
# parsing_list.txt file lists weather items to capture
P_LIST=$UG_WX_PAR_DIR/parsing_list.txt
# weather underground web information. ID value is important
# ID set from wx_scripts.conf
URL="http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=${WX_UNDERGRND_STN}"
# get date info for last update information
DATE=`date +%Y.%m.%d.\%H\%M`
#----------------------------- Main program -----------------------------
# clean up first
rm -f $UG_WX_WRKING_DIR/var.src $UG_WX_DIR/pre_current_wx.txt $UG_WX_DIR/conv_current_wx.txt $UG_WX_DIR/working_current_wx.ul
# Get weather information
$WGET -q $URL -O - > ${UG_WX_DIR}/${WX_UNDERGRND_STN}.xml
# parse the list and extract the variables
for ITEM in `cat "$P_LIST" | awk '{ print $1 }'`
do
VARIABLE=`grep -m 1 $ITEM ${UG_WX_DIR}/${WX_UNDERGRND_STN}.xml | awk 'BEGIN { FS = "<" } { print $2 } ' | sed 's/>/ /g' | awk '{ print $1}'`
VALUE=`grep -m 1 $ITEM ${UG_WX_DIR}/${WX_UNDERGRND_STN}.xml | awk ' BEGIN { FS = "/" } { print $1 }'| awk 'BEGIN { FS = ">" } { print $2 } ' | awk ' BEGIN { FS = "<" } { print $1 }'`
echo "${VARIABLE}=\"${VALUE}\"" >> $UG_WX_WRKING_DIR/var.src
done
# initialize the variables (import them)
source $UG_WX_WRKING_DIR/var.src
# Save current pressure and get current pressure trend for pressure info
cur_pressure_in=$pressure_in
if [ -f $UG_WX_WRKING_DIR/old_pressure.var ] ; then
# get old "saved pressure_in" value, for pressure trends
# this is created by crontab every 4 hours.
source $UG_WX_WRKING_DIR/old_pressure.var
# convert to integer (may change to *100)
cur_pressure=`echo "${cur_pressure_in}*100" | bc`
pressure=`echo "${pressure_in}*100" | bc`
# convert to integer
cur_pressure=${cur_pressure/\.*}
pressure=${pressure/\.*}
# see if pressure is rising or falling...
if [ $cur_pressure -gt $pressure ]; then
pressure_trend="rising"
fi
if [ $cur_pressure -lt $pressure ]; then
pressure_trend="falling"
fi
if [ $cur_pressure -eq $pressure ]; then
pressure_trend="steady"
fi
fi
# Build the wx report...
# Intro info and time recorded
echo ". . This is the ${CALL_SPACED} node weather report for $neighborhood , $city . " >> $UG_WX_DIR/pre_current_wx.txt
echo "$observation_time," >> $UG_WX_DIR/pre_current_wx.txt
# Wind Info
if [ "$wind_string" = "Calm" ] ; then
echo "the wind was calm." >> $UG_WX_DIR/pre_current_wx.txt
##echo "wind_string=$wind_string, wind_mph=$wind_mph, wind_gust_mph=$wind_gust_mph"
else
case $wind_dir in
NNE) wind_dir="north north east" ;;
NE) wind_dir="north east" ;;
ENE) wind_dir="east north east" ;;
ESE) wind_dir="east south east" ;;
SE) wind_dir="south east" ;;
SSE) wind_dir="south south east" ;;
SSW) wind_dir="south south west" ;;
SW) wind_dir="south west" ;;
WSW) wind_dir="west south west" ;;
WNW) wind_dir="west north west" ;;
NW) wind_dir="north west" ;;
NNW) wind_dir="north north west" ;;
esac
echo "the wind was blowing at a speed of ${wind_mph} miles per hour from ${wind_dir} with wind gusts up to ${wind_gust_mph} miles per hour. " >> $UG_WX_DIR/pre_current_wx.txt
fi
# Temp and Dewpoint Info
echo "The temperature was ${temp_f} degrees with a dewpoint of ${dewpoint_f} degrees." >> $UG_WX_DIR/pre_current_wx.txt
# Windchill
if [ ${windchill_f} ] ; then
echo "the wind chill was at ${windchill_f} degrees." >> $UG_WX_DIR/pre_current_wx.txt
fi
# Pressure and pressure trend
echo "The pressure was ${pressure_trend} at ${cur_pressure_in} inches of mercury. " >> $UG_WX_DIR/pre_current_wx.txt
# Humidity info
echo "The relative humidity was $relative_humidity percent." >> $UG_WX_DIR/pre_current_wx.txt
# Finally, Precipatation Data
if [ "$precip_today_in" != "0.00" ] ; then
echo "Total precipatation today was ${precip_today_in} inches, precipatation in the last hour was ${precip_1hr_in} inches." >> $UG_WX_DIR/pre_current_wx.txt
fi
# store current pressure
echo "# Last Updated: $DATE" > $UG_WX_WRKING_DIR/saved_pressure.var
echo "pressure_in=$cur_pressure_in" >> $UG_WX_WRKING_DIR/saved_pressure.var
# end of message
echo "end of message. ." >> $UG_WX_DIR/pre_current_wx.txt
#############################
# Post Conversions
# You must edit wxtext_conv.sed file to perform the post conversion.
##############################
# alert txt file to conv_alert.txt
sed -f ${CUSTOM}/wxtext_conv.sed $UG_WX_DIR/pre_current_wx.txt > $UG_WX_DIR/conv_current_wx.txt
##############################
# create the audio file
if [ $TEXT2SPEECH = "festival" ] ; then
$TEXT2WAVE -F 8000 -scale 0.5 -otype ulaw $UG_WX_DIR/conv_current_wx.txt -o $UG_WX_DIR/working_current_wx.ul -eval "(voice_ked_diphone)"
else
$TEXT2WAVE -m text -f $UG_WX_DIR/conv_current_wx.txt -p audio/encoding=ulaw,audio/sampling-rate=8000,audio/volume=$SWIFT_VOL -o $UG_WX_DIR/working_current_wx.ul
fi
# Since it takes time to create the working_current_wx.ul, copy it over when finished.
cp $UG_WX_DIR/working_current_wx.ul $UG_WX_DIR/current_wx.ul
rm $UG_WX_DIR/working_current_wx.ul
# Notes:
# create a file that has the items that you want to capture and used
# for example:
## value equivalent in speech
# temp_f "temperature is"
#
# create a text file based upon the above file and store. Use a for/loop
# to run through the text file.

Powered by TurnKey Linux.