This commit is contained in:
2023-12-11 23:38:52 -06:00
parent 84396ad108
commit 6b5ee4ae0b
3 changed files with 29 additions and 15 deletions

View File

@@ -1,5 +1,5 @@
VERS='2.5.4-12112023' VERS='2.5.5-12112023'
noheader=' update service dailytemp confsync ' noheader=' update service dailytemp confsync '
hc_cw=60 hc_cw=60
@@ -18,6 +18,7 @@ PW_TMPFOLDER=${PW_FOLDER}/.tmp
[ ! -d ${PW_LOGARCHIVE} ] && mkdir ${PW_LOGARCHIVE} [ ! -d ${PW_LOGARCHIVE} ] && mkdir ${PW_LOGARCHIVE}
[ ! -d ${PW_TMPFOLDER} ] && mkdir ${PW_TMPFOLDER} [ ! -d ${PW_TMPFOLDER} ] && mkdir ${PW_TMPFOLDER}
PW_SCRIPT=${PW_FOLDER}/powerwall.sh
PW_LOGFILE=${PW_LOGFOLDER}/logfile PW_LOGFILE=${PW_LOGFOLDER}/logfile
PW_LOGPOWER=${PW_LOGFOLDER}/log-power PW_LOGPOWER=${PW_LOGFOLDER}/log-power
[ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE} [ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE}

View File

@@ -95,7 +95,7 @@ $(date)"
fi fi
fi fi
logtime=$(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) 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} 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 fi
else else

View File

@@ -226,7 +226,7 @@ CHECKTEMP_SERVICE(){
for SENSORa in ${PW_SENSOR_ORD[@]}; do for SENSORa in ${PW_SENSOR_ORD[@]}; do
logtemp=${PW_LOGFOLDER}/log-temp-${SENSORa} logtemp=${PW_LOGFOLDER}/log-temp-${SENSORa}
[ ! -f ${logtemp} ] && touch ${logtemp} [ ! -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" ]) || ([ "${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 # 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 [ -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 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 else
wait=300 wait=$(echo "scale=0; ${PW_MYSQL_LOG_INTERVAL_NORMAL}*60" | bc)
fi fi
if [ "${PW_SENSOR_ID[${SENSORa}]}" != "" ] && [ ${lastinsert} -ge ${wait} ]; then if [ "${PW_SENSOR_ID[${SENSORa}]}" != "" ] && [ ${lastinsert} -ge ${wait} ]; then
if [ "${PW_SENSOR_TYPE[${SENSORa}]}" == "esxi" ]; then if [ "${PW_SENSOR_TYPE[${SENSORa}]}" == "esxi" ]; then
@@ -576,7 +576,7 @@ CHECKPOWER(){
INV_ALARM=`echo ${INVSTATSINFO} | jq '.errors .Alms'` 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_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=`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=`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_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'` INV_MODE=`echo ${INVSTATSINFO} | jq '.stats .power'`
@@ -881,7 +881,7 @@ CHECKPOWER_SERVICE(){
SENDNOTICE "POWER NOMINAL AGAIN" "Normal voltage detected SENDNOTICE "POWER NOMINAL AGAIN" "Normal voltage detected
VOLTAGE: ${INPUTACV}'volts" VOLTAGE: ${INPUTACV}'volts"
else 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 if [ -f ${PW_TMPFOLDER}/power.ac.start ]; then
SENDNOTICE "Power Nominal" "Service Startup SENDNOTICE "Power Nominal" "Service Startup
Normal voltage detected Normal voltage detected
@@ -895,14 +895,14 @@ BATT VOLTAGE: ${BATTVOLT}'volts"
if [ ! -f ${PW_TMPFOLDER}/power.ac.good ]; then 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 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 touch ${PW_TMPFOLDER}/.power.restored
fi fi
rm -f ${PW_TMPFOLDER}/power.ac.* rm -f ${PW_TMPFOLDER}/power.ac.*
touch ${PW_TMPFOLDER}/power.ac.good 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 HOSTMGMT mainsite -p on >/dev/null 2>&1
rm -f ${PW_TMPFOLDER}/.power.restored rm -f ${PW_TMPFOLDER}/.power.restored
fi fi
@@ -921,8 +921,13 @@ VOLTAGE: ${INPUTACV}'volts
BATT VOLTAGE: ${BATTVOLT}'volts" 1 BATT VOLTAGE: ${BATTVOLT}'volts" 1
rm -f ${PW_TMPFOLDER}/power.ac.good rm -f ${PW_TMPFOLDER}/power.ac.good
touch ${PW_TMPFOLDER}/power.ac.low 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 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} 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 SENDNOTICE "POWER ALERT - Conserving Power" "Shutting down iSCSI VM's and Host to conserve power" 1
SHUTDOWN_SERVER ${PW_HOST_IDRACS['iDS-vMS-Host0']} & SHUTDOWN_SERVER ${PW_HOST_IDRACS['iDS-vMS-Host0']} &
@@ -931,7 +936,7 @@ BATT VOLTAGE: ${BATTVOLT}'volts" 1
fi fi
if (( $(bc <<<"${BATTVOLT} >= ${min_battvolt}") )); then 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 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} 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 rm -f ${PW_TMPFOLDER}/power.dc.start
@@ -943,7 +948,7 @@ BATT VOLTAGE: ${BATTVOLT}'volts" 1
else else
[ -f ${PW_TMPFOLDER}/power.dc.good ] && rm -f ${PW_TMPFOLDER}/power.dc.good [ -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 if (( $(bc <<<"${BATTVOLT} <= ${min_battvolt_sys}") )); then
[ ! -f ${PW_TMPFOLDER}/power.dc.critlow ] && touch ${PW_TMPFOLDER}/power.dc.critlow [ ! -f ${PW_TMPFOLDER}/power.dc.critlow ] && touch ${PW_TMPFOLDER}/power.dc.critlow
@@ -968,6 +973,13 @@ Shutting down main servers" 1
SHUTDOWN_MAIN POWER & 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 fi
volt_diff=`echo "scale=1; ${last_battvolt}-${BATTVOLT}" | bc` volt_diff=`echo "scale=1; ${last_battvolt}-${BATTVOLT}" | bc`
@@ -1132,9 +1144,10 @@ POWERLOGGER_SERVICE(){
done done
if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.*")" != "" ]; then if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.*")" != "" ]; then
sleep 1m sleep ${PW_MYSQL_LOG_INTERVAL_ABNORMAL}m
else else
sleep 5m sleep ${PW_MYSQL_LOG_INTERVAL_NORMAL}m
fi fi
done done