From f6c64563c623962cac4881a39a4c1da100f6e0ed Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Thu, 2 Nov 2023 08:50:32 -0500 Subject: [PATCH] Update powerwall.sh --- powerwall.sh | 78 ++++++++-------------------------------------------- 1 file changed, 12 insertions(+), 66 deletions(-) diff --git a/powerwall.sh b/powerwall.sh index 3fb74798..d909560c 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -684,24 +684,15 @@ CHECKPOWER(){ CHECKPOWER_SERVICE(){ voltstatus=0 battstatus=0 - # rm -f ${PW_TMPFOLDER}/powerlogger.insert while true; do INVSTATSINFO=$(curl -s "https://inv1.scity.us/stats.json") if [ "${INVSTATSINFO}" != "" ]; then - # [ -f ${PW_TMPFOLDER}/powerlogger.insert ] && lastinsert=$(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/powerlogger.insert)) || lastinsert=100000 - # if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.dc.*")" != "" ]; then - # wait=60 - # else - # wait=300 - # fi - # if [ ${lastinsert} -ge ${wait} ]; then - # POWERLOGGER "${INVSTATSINFO}" & - # fi INPUTACV=$(echo ${INVSTATSINFO} | jq '.inputs .inV') BATTVOLT=$(echo ${INVSTATSINFO} | jq '.inputs .battV') datetime=`date +'%Y-%m-%d %H:%M:%S'` - if [ ${INPUTACV} -ge ${min_acvolt} ]; then + + if (( $(bc <<<"${INPUTACV} >= ${min_acvolt}") )); then if [ $voltstatus -eq 3 ]; then echo "($datetime) - ${INPUTACV}V - Back to Normal Voltage" >> ${PW_LOGPOWER} SENDNOTICE "POWER NOMINAL AGAIN" "($datetime) Normal voltage detected @@ -734,12 +725,12 @@ BATT VOLTAGE: ${BATTVOLT}V" 1 voltstatus=3 touch ${PW_TMPFOLDER}/power.ac.low fi - - if [ ${BATTVOLT%.*} -lt ${min_battvolt} ] && [ ${BATTVOLT%.*} -gt ${min_battvolt_sys} ]; then + + 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} touch ${PW_TMPFOLDER}/power.dc.low - if [ $battstatus -lt 2 ] && [ ${INPUTACV} -lt ${min_acvolt} ]; then + 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 Shutting down main servers" 1 @@ -747,11 +738,11 @@ Shutting down main servers" 1 battstatus=2 fi - elif [ ${BATTVOLT%.*} -le ${min_battvolt_sys} ]; then + 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} touch ${PW_TMPFOLDER}/power.dc.low - if [ $battstatus -lt 3 ] && [ ${INPUTACV} -lt ${min_acvolt} ]; then + 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 Shutting down all servers" 1 @@ -771,13 +762,13 @@ Shutting down all servers" 1 battstatus=1 fi - - volt_diff=$((${last_battvolt%.*} - ${BATTVOLT%.*})) - [ $volt_diff -lt 0 ] && temp_diff=$(($volt_diff * -1)) - if [ $volt_diff -gt 0 ]; then + + 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} - last_battvolt=$BATTVOLT + last_battvolt=${BATTVOLT} fi else sleep 20s @@ -796,50 +787,6 @@ Shutting down all servers" 1 done # & } -POWERLOGGER(){ - INVSTATSINFO=${1} - datetime=`date +'%Y-%m-%d %H:%M:%S'` - # INVSTATSINFO=$(curl -s "https://inv1.scity.us/stats.json") - inV=`echo ${INVSTATSINFO} | jq '.inputs .inV'` - inA=`echo ${INVSTATSINFO} | jq '.inputs .inA'` - outV=`echo ${INVSTATSINFO} | jq '.outputs .outV'` - outA=`echo ${INVSTATSINFO} | jq '.outputs .outA'` - battV=`echo ${INVSTATSINFO} | jq '.inputs .battV'` - xfA=`echo ${INVSTATSINFO} | jq '.inputs .xfA'` - - SVRRM_VOLT=$(snmpwalk -v 1 -c public 10.10.1.205 iso.3.6.1.2.1.33.1.4.4.1.2.1 | sed 's/.*: //') - SVRRM_WATT=$(snmpwalk -v 1 -c public 10.10.1.205 iso.3.6.1.2.1.33.1.4.4.1.4.1 | sed 's/.*: //') - SVRRM_AMP=$(snmpwalk -v 1 -c public 10.10.1.205 iso.3.6.1.2.1.33.1.4.4.1.3.1 | sed 's/.*: //') - SVRRM_AMP=`echo "scale=1; ${SVRRM_AMP}/10" | bc` - - APCPDU_AMP=$(snmpwalk -v 1 -c public 10.10.1.210 .1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1 | sed 's/.*: //') - APCPDU_AMP=`echo "scale=1; ${APCPDU_AMP}/10" | bc` - # APCPDU_WATT=$(snmpwalk -v 1 -c public 10.10.1.210 .1.3.6.1.4.1.318.1.1.12.1.16.0 | sed 's/.*: //') - APCPDU_WATT=`echo "scale=1; ${APCPDU_AMP}*${SVRRM_VOLT}" | bc` - - NETRK_AMP=`echo "scale=1; ${SVRRM_AMP}-${APCPDU_AMP}" | bc` - NETRK_WATT=`echo "scale=0; ${SVRRM_WATT}-${APCPDU_WATT}" | bc` - - QRY="INSERT INTO power_data (\`sensorid\`, \`date\`, \`volt\`, \`amp\`) VALUES ('3','${datetime}','${inV}','${inA}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - QRY="INSERT INTO power_data (\`sensorid\`, \`date\`, \`volt\`, \`amp\`) VALUES ('4','${datetime}','${outV}','${outA}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - QRY="INSERT INTO power_data (\`sensorid\`, \`date\`, \`volt\`, \`amp\`) VALUES ('5','${datetime}','${battV}','${xfA}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - - QRY="INSERT INTO power_data (\`sensorid\`, \`date\`, \`volt\`, \`amp\`, \`watt\`) VALUES ('11','${datetime}','${SVRRM_VOLT}','${SVRRM_AMP}','${SVRRM_WATT}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - QRY="INSERT INTO power_data (\`sensorid\`, \`date\`, \`volt\`, \`amp\`, \`watt\`) VALUES ('12','${datetime}','${SVRRM_VOLT}','${APCPDU_AMP}','${APCPDU_WATT}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - QRY="INSERT INTO power_data (\`sensorid\`, \`date\`, \`volt\`, \`amp\`, \`watt\`) VALUES ('13','${datetime}','${SVRRM_VOLT}','${NETRK_AMP}','${NETRK_WATT}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - - QRY="INSERT INTO inv_jsonstats (\`date\`, \`data\`) VALUES ('${datetime}','${INVSTATSINFO}')" - ${mysql_conn} -e "USE servermonitor; ${QRY}" - - touch ${PW_TMPFOLDER}/powerlogger.insert -} - POWERLOGGER_SERVICE(){ while true; do datetime=`date +'%Y-%m-%d %H:%M:%S'` @@ -857,7 +804,6 @@ POWERLOGGER_SERVICE(){ SVRRM_AMP=$(snmpwalk -v 1 -c public 10.10.1.205 iso.3.6.1.2.1.33.1.4.4.1.3.1 | sed 's/.*: //') SVRRM_AMP=`echo "scale=1; ${SVRRM_AMP}/10" | bc` - APCPDU_AMP=$(snmpwalk -v 1 -c public 10.10.1.210 .1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1 | sed 's/.*: //') APCPDU_AMP=`echo "scale=1; ${APCPDU_AMP}/10" | bc` # APCPDU_WATT=$(snmpwalk -v 1 -c public 10.10.1.210 .1.3.6.1.4.1.318.1.1.12.1.16.0 | sed 's/.*: //')