diff --git a/defaults.inc b/defaults.inc index 6a536a23..b0db6d5f 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,6 +1,6 @@ #!/usr/bin/env bash -VERS='2.3.143-11032023' +VERS='2.3.145-11032023' noheader=' update service dailytemp ' diff --git a/powerwall.sh b/powerwall.sh index eabcfa03..a0422db0 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -705,57 +705,57 @@ CHECKPOWER_SERVICE(){ if (( $(bc <<<"${INPUTACV} >= ${min_acvolt}") )); then if [ ${voltstatus} -eq 3 ]; then - echo "(${datetime}) - ${INPUTACV}V - Back to Normal Voltage" >> ${PW_LOGPOWER} + echo "(${datetime}) - ${INPUTACV}'V - Back to Normal Voltage" >> ${PW_LOGPOWER} SENDNOTICE "POWER NOMINAL AGAIN" "(${datetime}) Normal voltage detected -VOLTAGE: ${INPUTACV}V" - echo -e "(${datetime}) - ${INPUTACV}V - POWER NOMINAL AGAIN" >> ${PW_LOGFILE} +VOLTAGE: ${INPUTACV}'V" + echo -e "(${datetime}) - ${INPUTACV}'V - POWER NOMINAL AGAIN" >> ${PW_LOGFILE} battstatus=0 else errtime=$(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) - [ ${errtime} -ge 3600 ] && echo "(${datetime}) - ${INPUTACV}V - Normal Voltage" >> ${PW_LOGPOWER} + [ ${errtime} -ge 3600 ] && echo "(${datetime}) - ${INPUTACV}'V - Normal Voltage" >> ${PW_LOGPOWER} 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" >> ${PW_LOGPOWER} - echo -e "(${datetime}) - ${INPUTACV}V / ${BATTVOLT}V - Service Startup - Normal Voltage" >> ${PW_LOGFILE} +VOLTAGE: ${INPUTACV}'V +BATT VOLTAGE: ${BATTVOLT}'V" + echo "(${datetime}) - Input: ${INPUTACV}'V - Service Startup - Normal voltage detected" >> ${PW_LOGPOWER} + echo -e "(${datetime}) - ${INPUTACV}'V / ${BATTVOLT}'V - Service Startup - Normal Voltage" >> ${PW_LOGFILE} fi fi voltstatus=1 rm -f ${PW_TMPFOLDER}/power.ac.* else - echo "(${datetime}) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${PW_LOGPOWER} - echo -e "(${datetime}) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${PW_LOGFILE} + echo "(${datetime}) - ${INPUTACV}'V - POWER OFF/LOW POWER" >> ${PW_LOGPOWER} + echo -e "(${datetime}) - ${INPUTACV}'V - POWER OFF/LOW POWER" >> ${PW_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 - last_battvolt=$BATTVOLT +VOLTAGE: ${INPUTACV}'V +BATT VOLTAGE: ${BATTVOLT}'V" 1 + last_battvolt=${BATTVOLT} fi voltstatus=3 touch ${PW_TMPFOLDER}/power.ac.low fi if (( $(bc <<<"${BATTVOLT} < ${min_battvolt} && ${BATTVOLT} > ${min_battvolt_sys}") )); then - echo "(${datetime}) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${PW_LOGPOWER} - echo -e "(${datetime}) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${PW_LOGFILE} + echo "(${datetime}) - ${BATTVOLT}'V - LOW BATTERY Voltage" >> ${PW_LOGPOWER} + echo -e "(${datetime}) - ${BATTVOLT}'V - LOW BATTERY VOLTAGE" >> ${PW_LOGFILE} touch ${PW_TMPFOLDER}/power.dc.low if (( $(bc <<<"${battstatus} < 2 && ${INPUTACV} < ${min_acvolt}") )); then - echo "(${datetime}) - ${BATTVOLT}V - Shutting down main servers..." >> ${PW_LOGPOWER} - SENDNOTICE "BATT-VOLT LOW: SHUTDOWN MAIN SERVERS" "(${datetime}) Battery Voltage LOW: ${BATTVOLT}V + echo "(${datetime}) - ${BATTVOLT}'V - Shutting down main servers..." >> ${PW_LOGPOWER} + SENDNOTICE "BATT-VOLT LOW: SHUTDOWN MAIN SERVERS" "(${datetime}) Battery Voltage LOW: ${BATTVOLT}'V Shutting down main servers" 1 SHUTDOWN_MAIN POWER & battstatus=2 fi elif (( $(bc <<<"${BATTVOLT} <= ${min_battvolt_sys}") )); then - echo "(${datetime}) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${PW_LOGPOWER} - echo -e "(${datetime}) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${PW_LOGFILE} + echo "(${datetime}) - ${BATTVOLT}'V - LOW BATTERY Voltage" >> ${PW_LOGPOWER} + echo "(${datetime}) - ${BATTVOLT}'V - LOW BATTERY VOLTAGE" >> ${PW_LOGFILE} touch ${PW_TMPFOLDER}/power.dc.low if (( $(bc <<<"${battstatus} < 3 && ${INPUTACV} < ${min_acvolt}") )); then - echo "(${datetime}) - ${BATTVOLT}V - Shutting down all remaining servers..." >> ${PW_LOGPOWER} - SENDNOTICE "BATT-VOLT REALLY LOW: SHUTDOWN SYS SERVERS" "(${datetime}) Battery Voltage REALLY LOW: ${BATTVOLT}V + echo "(${datetime}) - ${BATTVOLT}'V - Shutting down all remaining servers..." >> ${PW_LOGPOWER} + SENDNOTICE "BATT-VOLT REALLY LOW: SHUTDOWN SYS SERVERS" "(${datetime}) Battery Voltage REALLY LOW: ${BATTVOLT}'V Shutting down all servers" 1 SHUTDOWN_SYS POWER & @@ -765,9 +765,9 @@ Shutting down all servers" 1 else errtime=$(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) - [ ${errtime} -ge 3600 ] && echo "(${datetime}) - ${BATTVOLT}V - Battery Voltage" >> ${PW_LOGPOWER} + [ ${errtime} -ge 3600 ] && echo "(${datetime}) - ${BATTVOLT}'V - Battery Voltage" >> ${PW_LOGPOWER} if [ ${battstatus} -eq 0 ]; then - echo "(${datetime}) - Battery: ${BATTVOLT}V - Service Startup - Normal voltage detected" >> ${PW_LOGPOWER} + echo "(${datetime}) - Battery: ${BATTVOLT}'V - Service Startup - Normal voltage detected" >> ${PW_LOGPOWER} fi rm -f ${PW_TMPFOLDER}/power.dc.* battstatus=1 @@ -777,14 +777,47 @@ Shutting down all servers" 1 volt_diff=`echo "scale=1; ${last_battvolt}-${BATTVOLT}" | bc` (( $(bc <<<"${volt_diff} < 0") )) && temp_diff=`echo "scale=1; ${volt_diff} * -1" | bc` if (( $(bc <<<"${volt_diff} > 0") )); then - SENDNOTICE "BATTERY VOLTAGE CHANGE" "(${datetime}) Battery Voltage: ${BATTVOLT}V" - echo -e "(${datetime}) - ${BATTVOLT}V - Battery Voltage Change" >> ${PW_LOGPOWER} + SENDNOTICE "BATTERY VOLTAGE CHANGE" "(${datetime}) Battery Voltage: ${BATTVOLT}'V" + echo -e "(${datetime}) - ${BATTVOLT}'V - Battery Voltage Change" >> ${PW_LOGPOWER} last_battvolt=${BATTVOLT} fi else sleep 20s fi + ######offsite check + + if [ "$(CHECK_HOST 10.2.1.100)" != "false" ]; then + OFFSITE_VOLTIN=$(snmpwalk -v 1 -c public 10.2.1.100 iso.3.6.1.4.1.3808.1.1.1.3.2.1.0 | sed 's/.*: //') + OFFSITE_VOLTIN=`echo "scale=2; ${OFFSITE_VOLTIN}/10" | bc` + OFFSITE_LOAD=$(snmpwalk -v 1 -c public 10.2.1.100 iso.3.6.1.4.1.3808.1.1.1.4.2.3.0 | sed 's/.*: //') + + if (( $(bc <<<"${OFFSITE_VOLTIN} >= ${min_acvolt}") )); then + if [ -f ${PW_TMPFOLDER}/power.ac.offsite.low ]; then + echo "(${datetime}) - ${OFFSITE_VOLTIN}'V - Offsite Back to Normal Voltage" >> ${PW_LOGPOWER} + echo "(${datetime}) - ${OFFSITE_VOLTIN}'V - OFFSITE POWER NOMINAL AGAIN" >> ${PW_LOGFILE} + SENDNOTICE "OFFSITE POWER NOMINAL AGAIN" "(${datetime}) Normal voltage detected +VOLTAGE: ${OFFSITE_VOLTIN}'V" + rm -f ${PW_TMPFOLDER}/power.ac.offsite.low + else + errtime=$(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER})) + [ ${errtime} -le 300 ] && echo "(${datetime}) - ${OFFSITE_VOLTIN}'V - Offsite Normal Voltage" >> ${PW_LOGPOWER} + fi + else + echo "(${datetime}) - ${OFFSITE_VOLTIN}'V - OFFSITE POWER OFF/LOW POWER" >> ${PW_LOGPOWER} + echo "(${datetime}) - ${OFFSITE_VOLTIN}'V - OFFSITE POWER OFF/LOW POWER" >> ${PW_LOGFILE} + + errtime=$(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/power.ac.offsite.low)) + if [ ! -f ${PW_TMPFOLDER}/power.ac.offsite.low ] || [ ${errtime} -ge 300 ]; then + SENDNOTICE "OFFSITE POWER ALERT - POWER OFF/LOW!!" "(${datetime}) Power off or low voltage detected +VOLTAGE: ${OFFSITE_VOLTIN}'V" 1 + touch ${PW_TMPFOLDER}/power.ac.offsite.low + fi + fi + + + fi + if [ "${archivedone}" != "complete" ] && [ $(date +%d) -eq 1 ] && [ $(date +%H)$(date +%M) -ge 0000 ] && [ $(date +%H)$(date +%M) -le 0005 ]; then LOGROTATE & archivedone=complete