#!/bin/sh message() { STATE="$1" echo -e "Subject: 41hpa piano alarm: ${STATE} \n\nPiano alarm at 41hpa says ${STATE}.\n" | /usr/sbin/sendmail -f "Piano Alarm " monitoring@madingley.org } TL=17000 TH=22000 HL=400 HH=700 T=`sensor.pl -t -i` H=`sensor.pl -h -i` TANK="$(mosquitto_sub -h 10.32.136.1 -p 1883 -t stat/music_room_humidifier/var3 -W 1 -C 1 )" BAD=0 M="" if [ -z "$T" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}failed to read temperature" BAD=1 fi if [ -z "$H" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}failed to read humidity" BAD=1 fi if [ "$T" -lt "$TL" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}temperature too low $T<$TL" BAD=1 fi if [ "$T" -gt "$TH" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}temperature too high $T>$TH" BAD=1 fi if [ "$H" -lt "$HL" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}air too dry $H<$HL" BAD=1 fi if [ "$H" -gt "$HH" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}air too wet $H>$HH" BAD=1 fi if [ "$1" == "test" ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}test" BAD=1 fi if [ $TANK -eq 0 ]; then if [ ! -z "$M" ]; then M="${M}, " fi M="${M}humidifier tank is empty" BAD=1 fi if [ "$BAD" -eq 1 ]; then message "$M" fi echo "piano_alarm T=$T H=$H TANK=$TANK M=$M" logger "piano_alarm T=$T H=$H TANK=$TANK M=$M"