diff options
Diffstat (limited to 'noise/modules/temp')
-rwxr-xr-x | noise/modules/temp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/noise/modules/temp b/noise/modules/temp new file mode 100755 index 00000000..a11c3720 --- /dev/null +++ b/noise/modules/temp @@ -0,0 +1,50 @@ +#! /bin/bash + +temper=/krebs/temper/temper + +main() { + case "${1--K}" in + (--help) + echo "report temperature in K, °C, °R, or °F." + exit + ;; + (-C|--celsius) unit='Grad Zelsius' ; formula='x - 273.15' ;; + (-F|--fahrenheit) unit='Grad Fahrenheit'; formula='x * 9/5 - 459.67' ;; + (-R|--rankine) unit='Grad Renkin' ; formula='x * 9/5' ;; + (-K|--kelvin) unit='Kelvin' ; formula='x' ;; + (*) + echo 'Error 1: you are made of stupid!' + exit 23 + ;; + esac + if test -f $temper -a -x $temper; then + espeak_inside `inside_temp "$formula"` $unit + fi + espeak_outside `outside_temp "$formula"` $unit +} + +## temp [<formula with temperature as x>] +## Echo temperature in K. If formula is given then return that result instead. +inside_temp() { + echo "scale=2; x=`$temper` + 273.15; ${1-x}" | bc +} + +outside_temp() { + echo "scale=2; x=`dig +short txt outside.elwood.temp.citecs.de | + sed 's/^"DEG \([0-9]\+\.[0-9]\+\)"$/\1/' + ` + 273.15; ${1-x}" | bc +} + +espeak_inside() { echo Die Krebs-tempera-tur beträgt $@ | to_espeak; } +espeak_outside() { echo Die Außen-tempera-tur beträgt $@ | to_espeak; } + +to_espeak() { + sed ' + s/\(\.[0-9]\)0\+/\1/g + s/\(\.[0-9]\)\([0-9]\)[0-9]*/ \1 \2 /; + s/^-/minus /; + s/\./ komma /; + ' | tee $NOISE_linefeed +} + +main "$@" |