From 844bf24901ae2f0c146df28d36fe075736ce1699 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sat, 31 May 2025 12:05:36 -0500 Subject: [PATCH] Update power.inc.sh --- inc/power.inc.sh | 106 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/inc/power.inc.sh b/inc/power.inc.sh index f23b85a3..94ea49aa 100644 --- a/inc/power.inc.sh +++ b/inc/power.inc.sh @@ -301,9 +301,109 @@ CHECKPOWER(){ DIVIDER . lightCyan ${PRI_WIDTH} fi +######################################################################################################### + else ############### KYLE ######################################################################################################### - else - tmp=tmp + DIVIDER . yellow ${PRI_WIDTH} + echo -en "${idsCL[Yellow]}Mainsite Power Information" + [ "${avgdays}" != "" ] && echo -e " ${idsCL[LightYellow]}--${avgdays_disp}-Averages---" || echo + DIVIDER . yellow ${PRI_WIDTH} + + [ ${REPORT} -eq 0 ] && echo -en "${idsCL[Yellow]}Pulling data from 'UPS' ... " + + + if [ "$(CHECK_HOST ${PW_UPS_IP})" != "false" ]; then + UPS_STATUS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.4.1.476.1.42.3.5.3.9 | sed 's/.*: //') + UPS_VOLTIN=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.2.1.33.1.3.3.1.3.1 | sed 's/.*: //') + UPS_VOLTOUT=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.2.1.33.1.4.4.1.2.1 | sed 's/.*: //') + UPS_LOAD=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.4.1.476.1.42.3.5.3.9 | sed 's/.*: //') + UPS_AMPS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.2.1.33.1.4.4.1.3.1 | sed 's/.*: //') + UPS_AMPS=`echo "scale=2; ${UPS_AMPS}/10" | bc` + UPS_WATTS=`echo "scale=2; ${UPS_AMPS}/10" | bc` + UPS_BATT_RUNTIME=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.4.1.476.1.42.3.5.1.18.0 | sed 's/.*: //') + UPS_BATT_VOLT=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.4.1.476.1.42.3.5.1.10.0 | sed 's/.*: //') + UPS_BATT_CAP=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} .1.3.6.1.4.1.476.1.42.3.5.1.19.0 | sed 's/.*: //') + + declare -A UPS_MISC + for mSENSOR in "${PW_POWERSENSOR_MISC[@]}"; do + UPS_MISC[${mSENSOR}]=$(GET_TUYA_POWER ${mSENSOR}) + done + + fi + + [ ${REPORT} -eq 0 ] && echo -en "\r\033[K" + + echo -e "${idsCL[White]}UPS Status ${idsCL[Default]}: ${idsCL[LightCyan]}${OFFSITE_STATUS}${idsCL[Default]}" + if [ ${REPORT} -eq 0 ]; then + echo + echo -e "${idsCL[White]}UPS Voltage In ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${UPS_VOLTIN}`'V${idsCL[Default]}" + echo -e "${idsCL[White]}UPS Voltage Out ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${UPS_VOLTOUT}`'V${idsCL[Default]}" + fi + echo -e "${idsCL[White]}UPS Load Usage ${idsCL[Default]}: ${idsCL[Green]}${UPS_LOAD}'%${idsCL[Default]}" + [ ${REPORT} -eq 0 ] && echo + echo -e "${idsCL[White]}UPS Battery Capacity ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${UPS_BATT_CAP}`'%${idsCL[Default]}" + echo -e "${idsCL[White]}UPS Battery Runtime ${idsCL[Default]}: ${idsCL[Green]}${UPS_BATT_RUNTIME}'mins${idsCL[Default]}" + if [ ${REPORT} -eq 0 ]; then + echo -e "${idsCL[White]}UPS Battery Voltage ${idsCL[Default]}: ${idsCL[Green]}${UPS_BATT_VOLT}'V${idsCL[Default]}" + echo + fi + + TOTAL_MISC_WATTS=0; TOTAL_MISC_AMPS=0 + if [ ${REPORT} -eq 0 ]; then + echo -en "${idsCL[LightCyan]}Misc Sensors Amps Watts" + [ "${avgdays}" != "" ] && echo -e " Amps Watts" || echo -e " Volts" + fi + for mSENSOR in "${!UPS_MISC[@]}"; do + IFS=: read -r AMP WATT VOLT <<< ${UPS_MISC[${mSENSOR}]}; unset IFS + TOTAL_MISC_WATTS=`echo "scale=2; ${TOTAL_MISC_WATTS}+${WATT}" | bc` + TOTAL_MISC_AMPS=`echo "scale=2; ${TOTAL_MISC_AMPS}+${AMP}" | bc` + AD1="${PW_MISCSENSOR_DESC[${mSENSOR}]}"; c=0; spc1=''; spca=`expr 25 - ${#AD1}`; until [ ${c} = ${spca} ]; do spc1="${spc1} "; ((c++)); done + AD2=$(IDS_NUMBER_FORMAT ${AMP} 2 yes); c=0; spc2=''; spca=`expr ${wspc} - ${#AD2}`; until [ ${c} = ${spca} ]; do spc2="${spc2} "; ((c++)); done + AD3=$(IDS_NUMBER_FORMAT ${WATT} 1 yes) + + [ ${REPORT} -eq 0 ] && echo -en "${idsCL[Default]}${AD1}${spc1}: ${idsCL[Green]}${AD2}'A${spc2}${AD3}'W" + if [ "${avgdays}" == "" ]; then + c=0; spc3=''; spca=`expr ${wspc} - ${#AD3}`; until [ ${c} = ${spca} ]; do spc3="${spc3} "; ((c++)); done + [ ${REPORT} -eq 0 ] && echo -e "${spc3}${VOLT}'V${idsCL[Default]}" + else + echo -en "${idsCL[Yellow]} Calculating ${avgdays_disp} Average ... " + avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID[${mSENSOR}]} ${avgdays} both) + AMP_avg=$(echo ${avg} | cut -d'~' -f 1) + WATT_avg=$(echo ${avg} | cut -d'~' -f 2) + [ ${REPORT} -eq 0 ] && echo -en "\r\033[K" + echo -en "${idsCL[Default]}${AD1}${spc1}: ${idsCL[Green]}${AD2}'A${spc2}${AD3}'W" + + AD=$(IDS_NUMBER_FORMAT ${AMP_avg} 2 yes); c=0; spc=''; spc1=`expr ${wspc} - ${#AD}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; ((c++)); done + echo -e "${idsCL[LightYellow]} ${AD}'A${spc}`IDS_NUMBER_FORMAT ${WATT_avg} 1 yes`'W" + fi + done + + DIVIDER . lightCyan ${PRI_WIDTH} + [ "${avgdays}" != "" ] && echo -e " --${idsCL[LightYellow]}${avgdays_disp}-Averages---" + echo -en "${idsCL[LightCyan]}Totals Amps Watts" + [ "${avgdays}" != "" ] && echo -e " Amps Watts" || echo + if (( $(bc <<<"${OFFSITE_WATTS} < ${TOTAL_MISC_WATTS}") )); then + AW=${TOTAL_MISC_WATTS} + AD=${TOTAL_MISC_AMPS} + else + AW=${OFFSITE_WATTS} + AD=${OFFSITE_AMPS} + fi + AD=$(IDS_NUMBER_FORMAT ${AD} 2 yes); c=0; spc=''; spc1=`expr ${wspc} - ${#AD}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; ((c++)); done + echo -en "${idsCL[White]}Mainsite Equipment ${idsCL[Default]}: ${idsCL[Green]}${AD}'A${spc}`IDS_NUMBER_FORMAT ${AW} 1 yes`'W" + if [ "${avgdays}" != "" ]; then + echo -en "${idsCL[Yellow]} Calculating Mainsite Equipment Total Averages ... " + UPS_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['mainsite-ups']} ${avgdays} both) + UPS_AMP_avg=$(echo ${UPS_avg} | cut -d'~' -f 1) + UPS_WATT_avg=$(echo ${UPS_avg} | cut -d'~' -f 2) + echo -en "\r\033[K" + echo -en "${idsCL[White]}Mainsite Equipment ${idsCL[Default]}: ${idsCL[Green]}${AD}'A${spc}`IDS_NUMBER_FORMAT ${AW} 1 yes`'W" + + AD=$(IDS_NUMBER_FORMAT ${OFFSITE_AMP_avg} 2 yes); c=0; spc=''; spc1=`expr ${wspc} - ${#AD}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; ((c++)); done + echo -e "${idsCL[LightYellow]} ${AD}'A${spc}`IDS_NUMBER_FORMAT ${OFFSITE_WATT_avg} 1 yes`'W" + else + echo + fi fi @@ -419,7 +519,7 @@ CHECKPOWER(){ echo -e "${idsCL[LightYellow]} ${AD}'A${spc}`IDS_NUMBER_FORMAT ${OFFSITE_WATT_avg} 1 yes`'W" else echo - fi + fi # echo -en "${idsCL[White]}Total Amps ${idsCL[Default]}: ${idsCL[Green]}${AD}'A ${idsCL[Default]}~ est${idsCL[Green]}${idsCL[Default]}" # [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${OFFSITE_AMP_avg}`'A" || echo -e "${idsCL[Default]}"