This commit is contained in:
2023-12-11 20:22:29 -06:00
parent 06563c336d
commit ec9ef7319b
3 changed files with 28 additions and 36 deletions

View File

@@ -1,7 +1,7 @@
VERS='2.5.1-12112023'
noheader=' update service dailytemp '
noheader=' update service dailytemp confsync '
hc_cw=60
# mqtt_conn='/usr/bin/mosquitto_sub -h 127.0.0.1 -u emonpi -P emonpimqtt'

View File

@@ -12,38 +12,25 @@ PW_LOGPOWER=${PW_LOGFOLDER}/log-power
[ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE}
[ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER}
. /opt/idssys/powerwall/settings.conf
SHUTDOWNSERVERS_AT_LOAD=80 #percent
SHUTDOWNSERVERS_AFTER=5 #minutes
WAIT_TO_POWER_SERVERS=5 #minutes
LOG_INTERVAL_NORMAL=15 #minutes
LOG_INTERVAL_ABNORMAL=30 #seconds
LOG_INTERVAL_CHARGING=300 #seconds
RENOTIFY_LOWPOWER=10 #minutes
PW_OFFSITEHOSTS="10.2.1.11"
# PW_OFFSITEHOSTS="10.2.1.11 10.2.1.12"
PW_OFFSITEHOSTS_IDRAC="10.2.1.21"
# PW_OFFSITEHOSTS_IDRAC="10.2.1.21 10.2.1.22"
PW_VCENTERHOST="10.10.1.30"
# TEST=true
# TEST=full
if [ "${TEST}" != "" ]; then
SHUTDOWNSERVERS_AT_LOAD=95 #percent
SHUTDOWNSERVERS_AFTER=1 #minutes
WAIT_TO_POWER_SERVERS=1 #minutes
TESTMODE="### TEST MODE ACTIVE ###
"
else
TESTMODE=""
fi
PWO_START(){
startup=true
while true; do
. /opt/idssys/powerwall/settings.conf
PW_OFFSITEHOSTS=${PW_OFFSITE_HOSTS//,/ }
# TEST=true
# TEST=full
if [ "${TEST}" != "" ]; then
PW_OFFSITE_SHUTDOWNSERVERS_AT_LOAD=95 #percent
PW_OFFSITE_SHUTDOWNSERVERS_AFTER=1 #minutes
PW_OFFSITE_WAIT_TO_POWER_SERVERS=1 #minutes
TESTMODE="### TEST MODE ACTIVE ###
"
else
TESTMODE=""
fi
upsinfo=$(upsc CP1500PFCLCD)
if [ "$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')" != "" ]; then
OFFSITE_VOLTIN=$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')
@@ -82,7 +69,7 @@ $(date)"
if [ -f ${PW_TMPFOLDER}/power.offsite.ac.low ]; then
if [ -f ${PW_TMPFOLDER}/power.offsite.off ]; then
echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_BATT_CAP}'% Battery - Offsite Power Restored" >> ${PW_LOGFILE}
SENDNOTICE "OFFSITE POWER" "Power restored! Will wait ${WAIT_TO_POWER_SERVERS}'mins before turning host(s) back on"
SENDNOTICE "OFFSITE POWER" "Power restored! Will wait ${PW_OFFSITE_WAIT_TO_POWER_SERVERS}'mins before turning host(s) back on"
fi
rm -f ${PW_TMPFOLDER}/power.offsite.ac.*
@@ -91,7 +78,7 @@ $(date)"
if [ ! -f ${PW_TMPFOLDER}/power.offsite.restored ]; then
touch ${PW_TMPFOLDER}/power.offsite.restored
elif [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.restored)) -gt $(echo "scale=2; ${WAIT_TO_POWER_SERVERS}*60" | bc) ]; then
elif [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.restored)) -gt $(echo "scale=2; ${PW_OFFSITE_WAIT_TO_POWER_SERVERS}*60" | bc) ]; then
echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_BATT_CAP}'% Battery - Powering Hosts ON After Power Outage" >> ${PW_LOGFILE}
SENDNOTICE "OFFSITE HOST POWER" "Powering offsite host(s) back ONLINE after power outage"
for host in ${PW_OFFSITEHOSTS_IDRAC}; do
@@ -108,19 +95,19 @@ $(date)"
fi
fi
logtime=$(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER}))
if [ ${logtime} -ge $(echo "scale=2; ${LOG_INTERVAL_NORMAL}*60" | bc) ] || ([ ${OFFSITE_BATT_CAP%.*} -lt 100 ] && [ ${logtime} -gt ${LOG_INTERVAL_CHARGING} ]); then
if [ ${logtime} -ge $(echo "scale=2; ${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
[ ! -f ${PW_TMPFOLDER}/power.offsite.ac.low ] && touch ${PW_TMPFOLDER}/power.offsite.ac.low
if [ ! -f ${PW_TMPFOLDER}/power.offsite.ac.low.notice ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low.notice)) -gt $(echo "scale=2; ${RENOTIFY_LOWPOWER}*60" | bc) ]; then
if [ ! -f ${PW_TMPFOLDER}/power.offsite.ac.low.notice ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low.notice)) -gt $(echo "scale=2; ${PW_RENOTIFY_LOWPOWER}*60" | bc) ]; then
# echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_BATT_CAP}'% Battery - Powering LOW/OFF!" >> ${PW_LOGFILE}
SENDNOTICE "OFFSITE POWER - POWER OFF/LOW!!" "Power off or low voltage detected" 1
touch ${PW_TMPFOLDER}/power.offsite.ac.low.notice
fi
if ([ ${OFFSITE_BATT_CAP%.*} -le ${SHUTDOWNSERVERS_AT_LOAD} ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low)) -ge $(echo "scale=2; ${SHUTDOWNSERVERS_AFTER}*60" | bc) ]) && [ ! -f ${PW_TMPFOLDER}/power.offsite.off ]; then
if ([ ${OFFSITE_BATT_CAP%.*} -le ${PW_OFFSITE_SHUTDOWNSERVERS_AT_LOAD} ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low)) -ge $(echo "scale=2; ${PW_OFFSITE_SHUTDOWNSERVERS_AFTER}*60" | bc) ]) && [ ! -f ${PW_TMPFOLDER}/power.offsite.off ]; then
echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_BATT_CAP}'% Battery - Powering Down Hosts!" >> ${PW_LOGFILE}
SENDNOTICE "OFFSITE HOST POWER" "Powering DOWN offsite host(s) due to power outage" 1
touch ${PW_TMPFOLDER}/power.offsite.off
@@ -133,7 +120,7 @@ $(date)"
fi
done
fi
if [ $(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) -gt ${LOG_INTERVAL_ABNORMAL} ]; then
if [ $(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) -gt ${PW_LOG_INTERVAL_ABNORMAL} ]; then
echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_WATTS}'watts - ${OFFSITE_BATT_CAP}'% Battery - ${OFFSITE_BATT_RUNTIME}'mins - OFF/LOW POWER!!" >> ${PW_LOGPOWER}
fi
fi

View File

@@ -2236,6 +2236,10 @@ GET_SNAPSHOTS(){
done
}
CONFSYNC(){
rsync -az --timeout=3 ${PW_FOLDER}/settings.conf root@10.2.1.1:${PW_FOLDER}/ & >/dev/null 2>&1
}
TEST(){
start=`date +%s`
temptotal=0
@@ -2370,6 +2374,7 @@ fi
;;
logrotate) LOGROTATE;;
confsync) CONFSYNC;;
status)
CHECKPOWER
CHECKTEMP