diff --git a/powerwall.sh b/powerwall.sh index 7d2e7a7a..734de971 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -116,10 +116,9 @@ CHECKTEMP_SERVICE(){ if [ $(bc -l <<< "$temp_f >= $temp_warn") -eq 1 ] && [ $(bc -l <<< "$temp_f < $temp_crit") -eq 1 ]; then if [ $temp_diff -gt 1 ] || [ "${last_temp[${SENSOR}]}" = "1" ]; then SENDNOTICE "${SENSOR} TEMP WARNING" "($datetime) WARNING TEMP: ${temp_f}'F - (Difference of ${temp_diff}')" 1 - echo "($datetime) - ${SENSOR} - ${temp_f}F - alert sent" >> ${logtemp} + echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp} last_temp[${SENSOR}]=$temp_f - echo "($datetime) - ${temp_f}F - WARNING TEMP - (Difference of ${temp_diff}')" >> ${logtemp} - echo -e "($datetime) - ${SENSOR} - WARNING TEMP: ${temp_f}'F - (Difference of ${temp_diff}')" >> ${logfile} + echo "($datetime) - ${temp_f}'F - WARNING TEMP - (Difference of ${temp_diff}')" >> ${logtemp} fi elif [ $(bc -l <<< "$temp_f >= $temp_crit") -eq 1 ] && [ $(bc -l <<< "$temp_f < $temp_crit_sys") -eq 1 ]; then @@ -127,45 +126,45 @@ CHECKTEMP_SERVICE(){ SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) CRITICAL TEMP: ${temp_f}'F - (Difference of ${temp_diff}') Shutting down servers!!" 1 echo "($datetime) - ${temp_f}'F - CRITICAL - (Difference of ${temp_diff}'F)" >> ${logtemp} - echo "($datetime) - ${SENSOR} - ${temp_f}F - alert sent" >> ${logtemp} - echo -e "($datetime) - ${SENSOR} - CRITICAL TEMP: ${temp_f}'F - (Difference of ${temp_diff}')" >> ${logfile} + echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp} + echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - CRITICAL TEMP - (Difference of ${temp_diff}')" >> ${logfile} last_temp[${SENSOR}]=$temp_f SHUTDOWN_MAIN ${SENSOR} SENDNOTICE "SERVERS SHUTDOWN" "($datetime) Main servers have been shutdown" 1 - echo -e "($datetime) - ${SENSOR} - ${temp_f}F - Main servers have been shutdown" >> ${logtemp} + echo -e "($datetime) - ${temp_f}'F - Main servers have been shutdown" >> ${logtemp} fi elif [ $(bc -l <<< "$temp_f >= $temp_crit_sys") -eq 1 ]; then if [ $temp_diff -gt 1 ] || [ "${last_temp[${SENSOR}]}" = "1" ]; then SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) SYSTEM CRITICAL TEMP: ${temp_f}'F - (Difference of ${temp_diff}') Shutting down system servers!!" 1 - echo "($datetime) - ${temp_f}F - SYSTEM CRITICAL - (Difference of ${temp_diff})" >> ${logtemp} - echo "($datetime) - ${SENSOR} - ${temp_f}F - alert sent" >> ${logtemp} - echo -e "($datetime) - ${SENSOR} - CRITICAL TEMP SYSTEM: ${temp_f}'F - (Difference of ${temp_diff}')" >> ${logfile} + echo "($datetime) - ${temp_f}'F - SYSTEM CRITICAL - (Difference of ${temp_diff})" >> ${logtemp} + echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp} + echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - CRITICAL TEMP SYSTEM - (Difference of ${temp_diff}')" >> ${logfile} last_temp[${SENSOR}]=$temp_f SHUTDOWN_SYS ${SENSOR} TEMP SHUTDOWN_CRIT ${SENSOR} SENDNOTICE "SERVERS SHUTDOWN" "($datetime) System servers have been shutdown" 1 - echo -e "($datetime) - ${SENSOR} - ${temp_f}F - System servers have been shutdown" >> ${logtemp} + echo -e "($datetime) - ${temp_f}'F - System servers have been shutdown" >> ${logtemp} fi else if [ ${last_temp[${SENSOR}]} -gt 1 ]; then SENDNOTICE "${SENSOR} BACK TO NORMAL" "($datetime) NORMAL TEMP: ${temp_f}'F Previous Temp: ${last_temp[${SENSOR}]}'F" - echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - Back to NORMAL TEMP - Previous Temp: ${last_temp[${SENSOR}]}'F" >> ${logtemp} - echo "($datetime) - ${SENSOR} - ${temp_f}F - alert sent" >> ${logtemp} - echo -e "($datetime) - ${SENSOR} - Back to NORMAL TEMP: ${temp_f}'F" >> ${logfile} + echo -e "($datetime) - ${temp_f}'F - Back to NORMAL TEMP - Previous Temp: ${last_temp[${SENSOR}]}'F" >> ${logtemp} + echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp} + echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - Back to NORMAL TEMP" >> ${logfile} [ "$(compgen -G "${FOLDER}/shutdown.*")" != "" ] && rm -f ${FOLDER}/shutdown.* elif [ ${last_temp[${SENSOR}]} -eq 0 ]; then SENDNOTICE "${SENSOR} TEMP NORMAL" "($datetime) Service Startup NORMAL TEMP: ${temp_f}'F" - echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - Service Startup - NORMAL TEMP" >> ${logtemp} - echo -e "($datetime) - ${SENSOR} - Service Startup: ${temp_f}'F" >> ${logfile} + echo -e "($datetime) - ${temp_f}'F - Service Startup - NORMAL TEMP" >> ${logtemp} + echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - Service Startup" >> ${logfile} [ "$(compgen -G "${FOLDER}/shutdown.*")" != "" ] && rm -f ${FOLDER}/shutdown.* elif [ $relog -eq 1 ]; then - echo "($datetime) - ${SENSOR} - ${temp_f}F - Normal Temp" >> ${logtemp} + echo "($datetime) - ${temp_f}'F - Normal Temp" >> ${logtemp} fi last_temp[${SENSOR}]=1 @@ -178,7 +177,7 @@ NORMAL TEMP: ${temp_f}'F" ${mysql_conn} -e "${QRY}" else SENDNOTICE "${SENSOR} ERROR" "($datetime) ERROR reading temperature" 1 - echo "($datetime) - ${SENSOR} - alert sent" >> ${logtemp} + echo "($datetime) - alert sent" >> ${logtemp} fi done @@ -214,72 +213,79 @@ CHECKACV_SERVICE(){ voltstatus=0 battstatus=0 while true; do - INPUTACV=$(curl -s "http://10.10.0.61/stats.json" | jq '.inputs .inV') - BATTVOLT=$(curl -s "http://10.10.0.61/stats.json" | jq '.inputs .battV') - datetime=`date +'%Y-%m-%d %H:%M:%S'` - if [ ${INPUTACV} -ge ${min_acvolt} ]; then - if [ $voltstatus -eq 3 ]; then - echo "($datetime) - ${INPUTACV}V - Back to Normal Voltage" >> ${logacv} - SENDNOTICE "POWER NOMINAL AGAIN" "($datetime) Normal voltage detected -VOLTAGE: ${INPUTACV}V" - echo "($datetime) alert sent" >> ${logacv} - echo -e "($datetime) - ${INPUTACV}V - POWER NOMINAL AGAIN" >> ${logfile} - battstatus=0 - else - errtime=$(expr `date +%s` - $(stat -c %Y ${logacv})) - [ $errtime -ge 3600 ] && echo "($datetime) - ${INPUTACV}V - Normal Voltage" >> ${logacv} - if [ $voltstatus -eq 0 ]; then - SENDNOTICE "Power Nominal" "($datetime) Service Startup -Normal voltage detected -VOLTAGE: ${INPUTACV}V -BATT VOLTAGE: ${BATTVOLT}V" - echo "($datetime) - Input: ${INPUTACV}V - Service Startup - Normal voltage detected" >> ${logacv} - echo "($datetime) - Battery: ${BATTVOLT}V - Service Startup - Normal voltage detected" >> ${logacv} - echo -e "($datetime) - ${INPUTACV}V / ${BATTVOLT}V - Service Startup - Normal Voltage" >> ${logfile} + INVSTATSINFO=$(curl -s "http://10.10.0.61/stats.json") + if [ "${INVSTATSINFO}" != "" ]; then + INPUTACV=$(echo ${INVSTATSINFO} | jq '.inputs .inV') + BATTVOLT=$(echo ${INVSTATSINFO} | jq '.inputs .battV') + datetime=`date +'%Y-%m-%d %H:%M:%S'` + if [ ${INPUTACV} -ge ${min_acvolt} ]; then + if [ $voltstatus -eq 3 ]; then + echo "($datetime) - ${INPUTACV}V - Back to Normal Voltage" >> ${logacv} + SENDNOTICE "POWER NOMINAL AGAIN" "($datetime) Normal voltage detected + VOLTAGE: ${INPUTACV}V" + echo "($datetime) alert sent" >> ${logacv} + echo -e "($datetime) - ${INPUTACV}V - POWER NOMINAL AGAIN" >> ${logfile} + battstatus=0 + else + errtime=$(expr `date +%s` - $(stat -c %Y ${logacv})) + [ $errtime -ge 3600 ] && echo "($datetime) - ${INPUTACV}V - Normal Voltage" >> ${logacv} + if [ $voltstatus -eq 0 ]; then + SENDNOTICE "Power Nominal" "($datetime) Service Startup + Normal voltage detected + VOLTAGE: ${INPUTACV}V + BATT VOLTAGE: ${BATTVOLT}V" + echo "($datetime) - Input: ${INPUTACV}V - Service Startup - Normal voltage detected" >> ${logacv} + echo -e "($datetime) - ${INPUTACV}V / ${BATTVOLT}V - Service Startup - Normal Voltage" >> ${logfile} + fi fi + voltstatus=1 + else + echo "($datetime) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${logacv} + echo -e "($datetime) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${logfile} + if [ $voltstatus -lt 3 ]; then + SENDNOTICE "POWER ALERT - POWER OFF/LOW POWER!!" "($datetime) Power off or low voltage detected + VOLTAGE: ${INPUTACV}V + BATT VOLTAGE: ${BATTVOLT}V" 1 + echo "($datetime) alert sent" >> ${logacv} + last_battvolt=$BATTVOLT + fi + voltstatus=3 fi - voltstatus=1 - else - echo "($datetime) - ${INPUTACV}V - LOW Voltage" >> ${logacv} - echo -e "($datetime) - ${INPUTACV}V - LOW VOLTAGE" >> ${logfile} - if [ $voltstatus -lt 3 ]; then - SENDNOTICE "POWER ALERT - LOW POWER!!" "($datetime) Power off or low voltage detected -VOLTAGE: ${INPUTACV}V -BATT VOLTAGE: ${BATTVOLT}V" 1 - echo "($datetime) alert sent" >> ${logacv} - last_battvolt=$BATTVOLT - fi - voltstatus=3 + if [ ${BATTVOLT%.*} -lt ${min_battvolt} ] && [ ${BATTVOLT%.*} -gt ${min_battvolt_sys} ]; then echo "($datetime) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${logacv} echo -e "($datetime) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${logfile} - if [ $battstatus -lt 2 ]; then + if [ $battstatus -lt 2 ] && [ ${INPUTACV} -lt ${min_acvolt} ]; then echo "($datetime) - ${BATTVOLT}V - Shutting down main servers..." >> ${logacv} SENDNOTICE "BATT-VOLT LOW: SHUTDOWN SERVERS" "($datetime) Battery Voltage LOW: ${BATTVOLT}V -Shutting down main servers" 1 + Shutting down main servers" 1 SHUTDOWN_MAIN server battstatus=2 fi - + elif [ ${BATTVOLT%.*} -le ${min_battvolt_sys} ]; then echo "($datetime) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${logacv} echo -e "($datetime) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${logfile} - if [ $battstatus -lt 3 ]; then + if [ $battstatus -lt 3 ] && [ ${INPUTACV} -lt ${min_acvolt} ]; then echo "($datetime) - ${BATTVOLT}V - Shutting down all remaining servers..." >> ${logacv} SENDNOTICE "BATT-VOLT REALLY LOW: SHUTDOWN SERVERS" "($datetime) Battery Voltage REALLY LOW: ${BATTVOLT}V -Shutting down all servers" 1 + Shutting down all servers" 1 SHUTDOWN_SYS server - + battstatus=3 fi - + else errtime=$(expr `date +%s` - $(stat -c %Y ${logacv})) [ $errtime -ge 3600 ] && echo "($datetime) - ${BATTVOLT}V - Battery Voltage" >> ${logacv} - + if [ $battstatus -eq 0 ]; then + echo "($datetime) - Battery: ${BATTVOLT}V - Service Startup - Normal voltage detected" >> ${logacv} + fi + battstatus=1 - + fi + volt_diff=$((${last_battvolt%.*} - ${BATTVOLT%.*})) [ $volt_diff -lt 0 ] && temp_diff=$(($volt_diff * -1)) if [ $volt_diff -gt 0 ]; then @@ -287,9 +293,10 @@ Shutting down all servers" 1 echo -e "($datetime) - ${BATTVOLT}V - Battery Voltage Change" >> ${logacv} last_battvolt=$BATTVOLT fi + else + sleep 20s fi - - sleep 10 + sleep 10s done # & } @@ -355,7 +362,8 @@ SHUTDOWN_SYS(){ SHUTDOWN_CRIT(){ if [ "${1}" == "RaspberryPI-CPU" ]; then SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) Powerwall System shutting down" 1 - echo -e "($datetime) - ${SENSOR} - CRITICAL - Powerwall System shutting down" >> ${logtemp} + echo -e "($datetime) - CRITICAL TEMP - Powerwall System shutting down" >> ${LOGFOLDER}/log-temp-${1} + echo -e "($datetime) - ${SENSOR} TEMP CRITICAL - Powerwall System shutting down" >> ${logfile} /sbin/poweroff fi }