#!/usr/bin/env bash VERS='2.8.9-11292024' noheader=' update service dailytemp confsync -r -report test ' HC_CW=60 PRI_WIDTH=75 ESXI_DEFAULT_EXHAUST_MIN=85 PW_FOLDER='/opt/idssys/powerwall' PW_INCFOLDER=${PW_FOLDER}/inc PW_LOGFOLDER=${PW_FOLDER}/logs PW_LOGARCHIVE=${PW_FOLDER}/logs/archive PW_TMPFOLDER=${PW_FOLDER}/.tmp [ ! -d ${PW_INCFOLDER} ] && mkdir ${PW_INCFOLDER} [ ! -d ${PW_LOGFOLDER} ] && mkdir ${PW_LOGFOLDER} [ ! -d ${PW_LOGARCHIVE} ] && mkdir ${PW_LOGARCHIVE} [ ! -d ${PW_TMPFOLDER} ] && mkdir ${PW_TMPFOLDER} PW_SCRIPT=${PW_FOLDER}/powerwall.sh PW_LOGFILE=${PW_LOGFOLDER}/logfile PW_LOGPOWER=${PW_LOGFOLDER}/log-power [ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE} [ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER} M_SRVCOPT=(start stop restart reload enable disable) source ${PW_FOLDER}/conf/settings.conf IP=$(ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | head -n 1 | awk '/inet/ {print $2}' | cut -d'/' -f1) # if [[ "${IP}" = "10.2.1."* ]]; then mqtt_conn="/usr/bin/mosquitto_sub -h ${PW_IP} -u ${PW_MQTT_USER} -P ${PW_MQTT_PASS}" mysql_conn="/usr/bin/mariadb -h ${PW_MYSQL_HOST} --user=${PW_MYSQL_USER} --password=${PW_MYSQL_PASS}" # else # mqtt_conn="/usr/bin/mosquitto_sub -h 127.0.0.1 -u ${PW_MQTT_USER} -P ${PW_MQTT_PASS}" # mysql_conn='/usr/bin/mariadb' # fi EMAIL_NOTICE=${PW_EMAIL_NOTICE} PUSHOVER_APP_TOKEN=${PW_PUSHOVER_APP_TOKEN} PUSHOVER_USER_TOKEN=${PW_PUSHOVER_USER_TOKEN} if [ "${PW_FANINPUT}" == "" ]; then if [ -f /sys/class/hwmon/hwmon2/fan1_input ]; then PW_FANINPUT=/sys/class/hwmon/hwmon2/fan1_input elif [ -f /sys/class/hwmon/hwmon3/fan1_input ]; then PW_FANINPUT=/sys/class/hwmon/hwmon3/fan1_input fi fi [ "${PW_ENABLE_RENOTIFY}" == "" ] && PW_ENABLE_RENOTIFY=1 IFS=, PW_MAINSITEHOSTS=(${PW_MAINSITE_HOSTS}) PW_MAIN_NOISCSIHOSTS=(${PW_MAIN_NOISCSI_HOSTS}) PW_MAINHOSTS=(${PW_MAIN_HOSTS}) PW_SYSHOSTS=(${PW_SYS_HOSTS}) PW_OFFSITEHOSTS=(${PW_OFFSITE_HOSTS}) PW_ALLHOSTS=(${PW_ALL_HOSTS}) PW_CONSERVEHOSTS=(${PW_CONSERVE_HOSTS}) PW_ESXI_FANSPEEDCONTROLHOSTS=(${PW_ESXI_FANSPEEDCONTROL_HOSTS}) [ "${PW_TEMPIND_RANGE}" != "" ] && PW_TEMPIND_RANGE=(${PW_TEMPIND_RANGE}) unset IFS [ "${PW_ISCSI_PRI_HOST}" = "" ] && PW_ISCSI_PRI_HOST="10.10.2.10" [ "${PW_ISCSI_SYS_HOST}" = "" ] && PW_ISCSI_SYS_HOST="10.10.2.16" if [ -f ${PW_FOLDER}/conf/settings.local.conf ]; then declare -A PW_POWERWALL_SERVICES declare -A PW_THRESHOLDS declare -A PW_SENSOR_TYPE declare -A PW_REMOTE_SENSORS declare -A PW_SENSOR_ID declare -A PW_POWERSENSOR_ID declare -A PW_HOST_IDRACS declare -A PW_HOST_ADDRESSES declare -A PW_ESXI_HOST_NAMES declare -A PW_VCENTER_HOST_NAMES declare -A PW_iDRACHOST_SHORTNAMES declare -A PW_INVERTER_ALARMS declare -A PW_INVERTER_STATES declare -A PW_INVERTER_MODES declare -A PW_INVERTER_ERRORS declare -A PW_SENSOR_DEVICEID declare -A PW_OFFSITE_UPS_CODES declare -A PW_MISCSENSOR_DESC declare -A PW_DESC_TEMP source ${PW_FOLDER}/conf/settings.local.conf [ "${PW_TEMPIND_DIFF}" == "" ] && PW_TEMPIND_DIFF=1 else echo "NO settings.local.conf FILE FOUND" [ "${1}" ] && [ "${1}" != "update" ] && exit 1 fi # RNIP=$(ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | head -n 1 | awk '/inet/ {print $2}' | cut -d'/' -f1) SENDNOTICE(){ if [ "${PUSHOVER_APP_TOKEN}" != "" ]; then SN_TIT="$(echo -e "${1}" | sed "s/\%/\%25 /g")" SN_MSG="$(echo -e "${2}" | sed "s/\%/\%25 /g")" if [ "${TEST_INPUTACV}" != "" ] || [ "${TEST_BATTVOLT}" != "" ]; then PUSH_TO_MOBILE "***TEST MODE*** ${SN_MSG} $(date)" "${SN_TIT}" ${3} ${4} & else PUSH_TO_MOBILE "${SN_MSG} $(date)" "${SN_TIT}" ${3} ${4} & fi fi [ "${PW_EMAIL_NOTICE}" != "" ] && echo -e "${2}\n\n$(date +%Y-%m-%d-%H-%M-%S)" | mail -s "${1}" ${PW_EMAIL_NOTICE} }