From 6b5ee4ae0bf74d9ad28ef657de0421fa8d6e4698 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Mon, 11 Dec 2023 23:38:52 -0600 Subject: [PATCH] update --- defaults.inc | 3 ++- offsite-power-check.sh | 2 +- powerwall.sh | 39 ++++++++++++++++++++++++++------------- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/defaults.inc b/defaults.inc index 8394d901..183c56f3 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,5 +1,5 @@ -VERS='2.5.4-12112023' +VERS='2.5.5-12112023' noheader=' update service dailytemp confsync ' hc_cw=60 @@ -18,6 +18,7 @@ PW_TMPFOLDER=${PW_FOLDER}/.tmp [ ! -d ${PW_LOGARCHIVE} ] && mkdir ${PW_LOGARCHIVE} [ ! -d ${PW_TMPFOLDER} ] && mkdir ${PW_TMPFOLDER} +PW_SCRIPT=${PW_FOLDER}/powerwall.sh PW_LOGFILE=${PW_LOGFOLDER}/logfile PW_LOGPOWER=${PW_LOGFOLDER}/log-power [ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE} diff --git a/offsite-power-check.sh b/offsite-power-check.sh index de749e0a..2ae44758 100755 --- a/offsite-power-check.sh +++ b/offsite-power-check.sh @@ -95,7 +95,7 @@ $(date)" fi fi logtime=$(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) - if [ ${logtime} -ge $(echo "scale=2; ${PW_LOG_INTERVAL_NORMAL}*60" | bc) ] || ([ ${OFFSITE_BATT_CAP%.*} -lt 100 ] && [ ${logtime} -gt ${PW_LOG_INTERVAL_CHARGING} ]); then + if [ ${logtime} -ge $(echo "scale=0; ${PW_LOG_INTERVAL_NORMAL}*60" | bc) ] || ([ ${OFFSITE_BATT_CAP%.*} -lt 100 ] && [ ${logtime} -gt ${PW_LOG_INTERVAL_CHARGING} ]); then echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_WATTS}'watts - ${OFFSITE_BATT_CAP}'% Battery - ${OFFSITE_BATT_RUNTIME}'mins - Normal" >> ${PW_LOGPOWER} fi else diff --git a/powerwall.sh b/powerwall.sh index db704fb9..e06188be 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -226,7 +226,7 @@ CHECKTEMP_SERVICE(){ for SENSORa in ${PW_SENSOR_ORD[@]}; do logtemp=${PW_LOGFOLDER}/log-temp-${SENSORa} [ ! -f ${logtemp} ] && touch ${logtemp} - [ $(expr `date +%s` - $(stat -c %Y ${logtemp})) -ge 3600 ] && relog=1 || relog=0 + [ $(expr `date +%s` - $(stat -c %Y ${logtemp})) -ge $(echo "scale=0; ${PW_LOG_INTERVAL_NORMAL}*60" | bc) ] && relog=1 || relog=0 if ([ "${PW_REMOTE_SENSORS[${SENSORa}]}" != "" ] && [ "$(CHECK_HOST ${PW_REMOTE_SENSORS[${SENSORa}]})" != "false" ]) || ([ "${PW_HOST_ADDRESSES[${SENSORa}]}" != "" ] && [ "$(CHECK_HOST ${PW_HOST_ADDRESSES[${SENSORa}]})" != "false" ]); then # if ([ "${PW_REMOTE_SENSORS[${SENSORa}]}" != "" ] && [ "$(CHECK_HOST ${PW_REMOTE_SENSORS[${SENSORa}]})" != "false" ]); then @@ -413,9 +413,9 @@ Previous Temp: ${last_temp[${SENSOR//-/}]}${GAUGESH}" [ -f ${PW_TMPFOLDER}/${SENSOR}.insert ] && lastinsert=$(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.insert)) || lastinsert=100000 if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.dc.*")" != "" ]; then - wait=60 + wait=$(echo "scale=0; ${PW_MYSQL_LOG_INTERVAL_ABNORMAL}*60" | bc) else - wait=300 + wait=$(echo "scale=0; ${PW_MYSQL_LOG_INTERVAL_NORMAL}*60" | bc) fi if [ "${PW_SENSOR_ID[${SENSORa}]}" != "" ] && [ ${lastinsert} -ge ${wait} ]; then if [ "${PW_SENSOR_TYPE[${SENSORa}]}" == "esxi" ]; then @@ -576,7 +576,7 @@ CHECKPOWER(){ INV_ALARM=`echo ${INVSTATSINFO} | jq '.errors .Alms'` [ "${INV_ALARM}" == "0" ] && INV_ALARM_disp="${idsCL[Green]}No Alarms (${INV_ALARM})" || INV_ALARM_disp="${idsCL[LightRed]}${PW_INVERTER_ALARMS[${INV_ALARM}]}" INV_ERROR=`echo ${INVSTATSINFO} | jq '.errors .Err'` - [ "${INV_ERROR}" == "0" ] && INV_ERROR_disp="${idsCL[Green]}No Errors" || INV_ERROR_disp="${idsCL[LightRed]}${PW_INVERTER_ERRORS[${INV_ERROR}]}" + [ "${INV_ERROR}" == "0" ] && INV_ERROR_disp="${idsCL[Green]}No Errors (${INV_ERROR})" || INV_ERROR_disp="${idsCL[LightRed]}${PW_INVERTER_ERRORS[${INV_ERROR}]}" INV_STATE=`echo ${INVSTATSINFO} | jq '.stats .invSTATES'` [ "${INV_STATE}" != "0" ] && INV_STATE_disp="${idsCL[Green]}${PW_INVERTER_STATES[${INV_STATE}]}" || INV_STATE_disp="${idsCL[LightRed]}${PW_INVERTER_STATES[${INV_STATE}]}" INV_MODE=`echo ${INVSTATSINFO} | jq '.stats .power'` @@ -881,7 +881,7 @@ CHECKPOWER_SERVICE(){ SENDNOTICE "POWER NOMINAL AGAIN" "Normal voltage detected VOLTAGE: ${INPUTACV}'volts" else - [ $(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) -ge 3600 ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${INPUTACV}'volts - Normal Voltage" >> ${PW_LOGPOWER} + [ $(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) -ge $(echo "scale=0; ${PW_LOG_INTERVAL_NORMAL}*60" | bc) ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${INPUTACV}'volts - Normal Voltage" >> ${PW_LOGPOWER} if [ -f ${PW_TMPFOLDER}/power.ac.start ]; then SENDNOTICE "Power Nominal" "Service Startup Normal voltage detected @@ -895,14 +895,14 @@ BATT VOLTAGE: ${BATTVOLT}'volts" if [ ! -f ${PW_TMPFOLDER}/power.ac.good ]; then if [ -f ${PW_TMPFOLDER}/power.sys.off ] || [ -f ${PW_TMPFOLDER}/power.main.off ] || [ -f ${PW_TMPFOLDER}/power.ac.conserve ]; then - SENDNOTICE "HOSTS POWER" "Power restored! Will wait 3'mins before turning host(s) back on" + SENDNOTICE "HOSTS POWER" "Power restored! Will wait ${PW_WAIT_TO_POWER_SERVERS}'mins before turning host(s) back on" touch ${PW_TMPFOLDER}/.power.restored fi rm -f ${PW_TMPFOLDER}/power.ac.* touch ${PW_TMPFOLDER}/power.ac.good - elif [ -f ${PW_TMPFOLDER}/.power.restored ] && [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/.power.restored)) -ge 300 ]; then + elif [ -f ${PW_TMPFOLDER}/.power.restored ] && [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/.power.restored)) -ge $(echo "scale=0; ${PW_WAIT_TO_POWER_SERVERS}*60" | bc) ]; then HOSTMGMT mainsite -p on >/dev/null 2>&1 rm -f ${PW_TMPFOLDER}/.power.restored fi @@ -921,8 +921,13 @@ VOLTAGE: ${INPUTACV}'volts BATT VOLTAGE: ${BATTVOLT}'volts" 1 rm -f ${PW_TMPFOLDER}/power.ac.good touch ${PW_TMPFOLDER}/power.ac.low + + ##### SHUTDOWN OFFSITE SERVER WHILE ITS AT MAINSITE + ${PW_SCRIPT} host 10.2.1.11 -e off 2>/dev/null & + + fi - if [ ! -f ${PW_TMPFOLDER}/power.ac.conserve ] && [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/power.ac.low)) -ge 120 ]; then + if [ ! -f ${PW_TMPFOLDER}/power.ac.conserve ] && [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/power.ac.low)) -ge $(echo "scale=0; ${PW_CONSERVE_AFTER}*60" | bc) ]; then echo -e "($(date +'%Y-%m-%d %H:%M:%S')) - ${INPUTACV}'volts / ${BATTVOLT}'volts - Shutting down iSCSI VM's and Host to conserve power" >> ${PW_LOGPOWER} SENDNOTICE "POWER ALERT - Conserving Power" "Shutting down iSCSI VM's and Host to conserve power" 1 SHUTDOWN_SERVER ${PW_HOST_IDRACS['iDS-vMS-Host0']} & @@ -931,7 +936,7 @@ BATT VOLTAGE: ${BATTVOLT}'volts" 1 fi if (( $(bc <<<"${BATTVOLT} >= ${min_battvolt}") )); then - [ $(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) -ge 3600 ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${BATTVOLT}'volts - Battery Voltage" >> ${PW_LOGPOWER} + [ $(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) -ge $(echo "scale=0; ${PW_LOG_INTERVAL_NORMAL}*60" | bc) ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${BATTVOLT}'volts - Battery Voltage" >> ${PW_LOGPOWER} if [ -f ${PW_TMPFOLDER}/power.dc.start ]; then echo "($(date +'%Y-%m-%d %H:%M:%S')) - Battery: ${BATTVOLT}'volts - Service Startup - Normal voltage detected" >> ${PW_LOGPOWER} rm -f ${PW_TMPFOLDER}/power.dc.start @@ -943,7 +948,7 @@ BATT VOLTAGE: ${BATTVOLT}'volts" 1 else [ -f ${PW_TMPFOLDER}/power.dc.good ] && rm -f ${PW_TMPFOLDER}/power.dc.good - [ $(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) -ge 300 ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${BATTVOLT}'volts - LOW BATTERY Voltage" >> ${PW_LOGPOWER} + [ $(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) -ge $(echo "scale=0; ${PW_LOG_INTERVAL_ABNORMAL}*60" | bc) ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${BATTVOLT}'volts - LOW BATTERY Voltage" >> ${PW_LOGPOWER} if (( $(bc <<<"${BATTVOLT} <= ${min_battvolt_sys}") )); then [ ! -f ${PW_TMPFOLDER}/power.dc.critlow ] && touch ${PW_TMPFOLDER}/power.dc.critlow @@ -967,7 +972,14 @@ Shutting down all remaining servers" 1 Shutting down main servers" 1 SHUTDOWN_MAIN POWER & - fi + fi + + elif [ ! -f ${PW_TMPFOLDER}/power.main.off ] && [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/power.dc.low)) -ge $(echo "scale=0; ${PW_SHUTDOWN_MAINSERVERS_AFTER}*60" | bc) ]; then + echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${BATTVOLT}'volts - Shutting down main servers..." >> ${PW_LOGFILE} + echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${BATTVOLT}'volts - Shutting down main servers..." >> ${PW_LOGPOWER} + SENDNOTICE "BATT-VOLT LOW: SHUTDOWN MAIN SERVERS" "Battery Voltage LOW: ${BATTVOLT}'volts +Shutting down main servers" 1 + SHUTDOWN_MAIN POWER & fi volt_diff=`echo "scale=1; ${last_battvolt}-${BATTVOLT}" | bc` @@ -1132,9 +1144,10 @@ POWERLOGGER_SERVICE(){ done if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.*")" != "" ]; then - sleep 1m + sleep ${PW_MYSQL_LOG_INTERVAL_ABNORMAL}m + else - sleep 5m + sleep ${PW_MYSQL_LOG_INTERVAL_NORMAL}m fi done