The problem is the if statement with a lot of reverse logic in it; if one of the statements evaluates to 'true', it will stop evaluating the rest of the statements; Question could also be: which statement to evaluate.
if [ "$hour" != "$ch" ]
So, if $hour equals $ch, the next test has to be evaluated, otherwise it is already true and doesn't become more or less true; So be careful linking all those tests together.
Then again, for the original question posted, bc has a good thing for you:
if [ $(echo "$cur_temp > $tst_temp" | bc -l) ]
echo "It's more than 20."
echo "It's less than 20."