Update powerwall.sh

This commit is contained in:
2023-05-15 21:20:18 -05:00
parent c4a2885b08
commit 2a25abecb9

View File

@@ -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
}