From 06b285a3a2b8a9e9a3af7bdda168b1a753099615 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sat, 10 Feb 2024 23:26:27 -0600 Subject: [PATCH] Update power.inc.sh --- inc/power.inc.sh | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/inc/power.inc.sh b/inc/power.inc.sh index b611162b..d4e8aeee 100644 --- a/inc/power.inc.sh +++ b/inc/power.inc.sh @@ -1,6 +1,17 @@ AVERAGEPOWER(){ sensorid=${1} daysback=${2} + + if [[ "${daysback^^}" = *"M"* ]]; then + interval="${avgdays::-1} MINUTE" + elif [[ "${daysback^^}" = *"H"* ]]; then + interval="${avgdays::-1} HOUR" + elif [[ "${daysback^^}" = *"D"* ]]; then + interval="${avgdays::-1} DAY" + elif [[ "${daysback}" =~ ^[0-9]+$ ]]; then + interval="${avgdays} DAY" + fi + if [ "${3}" = "both" ]; then logsfound_amp=0; logsfound_watt=0; @@ -15,7 +26,7 @@ AVERAGEPOWER(){ total_watt=$(bc <<< "scale=2; ${total_watt}+${watt}") ((logsfound_watt++)) fi - done < <(${mysql_conn} -se "USE servermonitor; SELECT date,amp,watt from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${daysback} DAY) AND NOW() ORDER BY id DESC;") + done < <(${mysql_conn} -se "USE servermonitor; SELECT date,amp,watt from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${interval}) AND NOW() ORDER BY id DESC;") if [ "${logsfound_watt}" != "0" ]; then average_amp=$(bc <<< "scale=2; ${total_amp}/${logsfound_amp}") average_watt=$(bc <<< "scale=2; ${total_watt}/${logsfound_watt}") @@ -33,7 +44,7 @@ AVERAGEPOWER(){ total=$(bc <<< "scale=2; ${total}+${!ptype}") ((logsfound++)) fi - done < <(${mysql_conn} -se "USE servermonitor; SELECT date,${ptype} from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${daysback} DAY) AND NOW() ORDER BY id DESC;") + done < <(${mysql_conn} -se "USE servermonitor; SELECT date,${ptype} from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${interval}) AND NOW() ORDER BY id DESC;") [ "${logsfound}" != "0" ] && average=$(bc <<< "scale=2; ${total}/${logsfound}") || average=0 echo ${average} fi @@ -60,13 +71,26 @@ CHECKPOWER(){ esac shift 1 done - [ "${avgdays}" = "0" ] && unset avgdays - [ "${avgdays}" != "" ] && avgdayshdr="${avgdays}-Day-Avg" || avgdayshdr="" + if [ "${avgdays}" != "" ]; then + if [ "${avgdays}" = "0" ]; then + unset avgdays + elif [[ "${avgdays^^}" = *"M"* ]]; then + avgdays_disp="${avgdays::-1}Min" + elif [[ "${avgdays^^}" = *"H"* ]]; then + avgdays_disp="${avgdays::-1}Hr" + elif [[ "${avgdays^^}" = *"D"* ]]; then + avgdays_disp="${avgdays::-1}Day" + elif [[ "${avgdays}" =~ ^[0-9]+$ ]]; then + avgdays_disp="${avgdays}Day" + fi + else + avgdays=noavg + fi if ([ "${STYPE}" = "" ] || [ "${STYPE}" = "mainsite" ]) && [ "${PTYPE}" != "esxi" ]; then [ ${REPORT} -eq 0 ] && echo [ ${REPORT} -eq 0 ] && DIVIDER . yellow ${PRI_WIDTH} - echo -e "${idsCL[Yellow]}Mainsite Power Information ${idsCL[LightYellow]}${avgdayshdr}" + echo -e "${idsCL[Yellow]}Mainsite Power Information ${idsCL[LightYellow]}${avgdays_disp}AVG" DIVIDER . yellow ${PRI_WIDTH} [ ${REPORT} -eq 0 ] && echo -en "${idsCL[Yellow]}Pulling data from 'Powerwall' ... "