[arm-allstar] saytime.pl modification for exactly 100 degree temperature
Lawrence Roney
roney at chiarappa.com
Sun Jul 16 13:59:03 EST 2017
Hi,
Out here in the Nevada desert, we are using new temperature function that is built into the /usr/local/sbin/saytime.pl script.
We found a little glitch. If the temperature is exactly 100 degrees, it will only say "10 degrees"
I added a few lines as a work around. There is likely much cleaner and structured way to do this with an ELSE statement vs. a GOTO tag, but I will let the more accomplished perl programmers figure that out.
Thanks Doug for everything you do to support the hobby and Allstar!
Lawrence - N6YFN
Henderson Amateur Radio Club
www.W7HEN.com
--- Previous lines snipped ---
if ($localwxtemp ne "" ) {
$FNAME = $FNAME . $base . "/wx/temperature.gsm ";
if ($localwxtemp < -1 ) {
$FNAME = $FNAME . $base . "/digits/minus.gsm ";
$localwxtemp=int(abs($localwxtemp));
} else {
$localwxtemp=int($localwxtemp);
}
#
# Next 6 lines added if temperature is exactly 100 degrees.
# Also added a goto CONCATENATE tag to skip the rest of the temperature parsing
#
if ($localwxtemp == 100) {
$FNAME = $FNAME . $base . "/digits/" . "1" . ".gsm ";
$FNAME = $FNAME . $base . "/digits/" . "hundred" . ".gsm ";
$FNAME = $FNAME . $base . "/degrees.gsm ";
goto CONCATENATE;
}
if ($localwxtemp > 100) {
$FNAME = $FNAME . $base . "/digits/" . "1" . ".gsm ";
$FNAME = $FNAME . $base . "/digits/" . "hundred" . ".gsm ";
$localwxtemp=($localwxtemp-100);
}
if ($localwxtemp < 20) {
$FNAME = $FNAME . $base . "/digits/" . $localwxtemp . ".gsm ";
} else {
$localwxtemp10 = substr ($localwxtemp,0,1) . "0";
$FNAME = $FNAME . $base . "/digits/" . $localwxtemp10 . ".gsm ";
$localwxtemp1 = substr ($localwxtemp,1,1);
if ($localwxtemp1 > 0) {
$FNAME = $FNAME . $base . "/digits/" . $localwxtemp1 . ".gsm ";
}
}
$FNAME = $FNAME . $base . "/degrees.gsm ";
}
}
CONCATENATE:
#
# Following lines concatenate all of the files to one output file
#
@proglist = ("cat " . $FNAME . " > " . $outdir . "/current-time.gsm");
system(@proglist);
#
# Following lines process the output file with sox to lower the volume
# negative numbers lower than -1 reduce the volume - see Sox man page
# Other processing could be done if necessary
#
# REMOVED V1.5 - use telemetry levels
#
#@proglist = ("nice -19 sox --temp /tmp " . $outdir . "/temp.gsm " . $outdir . "/current-time.gsm vol -0.35");
#system(@proglist);
#
# Say the time on the local node
#
@proglist = ("/usr/sbin/asterisk -rx \"rpt localplay " . $mynode . " " . $outdir . "/current-time\"");
system(@proglist);
# end of saytime.pl
More information about the arm-allstar
mailing list