AqualinkD/extras/pi_health.sh

82 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
#
# /*
# * Copyright (c) 2017 Shaun Feakes - All rights reserved
# *
# * You may use redistribute and/or modify this code under the terms of
# * the GNU General Public License version 2 as published by the
# * Free Software Foundation. For the terms of this license,
# * see <http://www.gnu.org/licenses/>.
# *
# * You are free to use this software under the terms of the GNU General
# * Public License, but WITHOUT ANY WARRANTY; without even the implied
# * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# * See the GNU General Public License for more details.
# *
# * https://github.com/sfeakes/aqualinkd
# */
MAX_TEMP=78
WARNING_TEMP=72
#Flag Bits
UNDERVOLTED=0x1
CAPPED=0x2
THROTTLED=0x4
HAS_UNDERVOLTED=0x10000
HAS_CAPPED=0x20000
HAS_THROTTLED=0x40000
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
echomsg() { if [ -t 1 ]; then echo "$@" 1>&2; fi; }
reportThermal() {
if ((($1)!=0)) ; then
echomsg "ERROR : $2"
else
echomsg "$2 : OK"
fi
}
TEMP=$(awk '{printf("%.1f\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp 2>/dev/null )
if [ $? -ne 0 ]; then
echomsg "Error: getting CPU temperature"
else
echomsg "CPU temperature: $TEMP"
if (( $(awk 'BEGIN {print ("'$TEMP'" >= "'$MAX_TEMP'")}') )); then
echomsg "Error: Over Temperature $TEMP"
elif (( $(awk 'BEGIN {print ("'$TEMP'" >= "'$WARNING_TEMP'")}') )); then
echomsg "Warning: Temperature $TEMP"
fi
fi
VOLTS=$(vcgencmd measure_volts | grep -Eo '[0-9]+([.][0-9]+)?')
echomsg "CPU Voltage: $VOLTS"
#Get Status, extract hex
STATUS=$(vcgencmd get_throttled)
if [[ "$STATUS" == *'Command not registered'* ]]; then
echomsg "Error: Update Pi to enable 'vcgencmd get_throttled' command"
exit;
fi
STATUS=${STATUS#*=}
if [ $? -ne 0 ]; then
echomsg "Error getting vcgencmd information"
exit 1;
fi
reportThermal "$STATUS&UNDERVOLTED" "Undervolt" undervolt
reportThermal "$STATUS&HAS_UNDERVOLTED" "Undervolt history" has_undervolt
reportThermal "$STATUS&THROTTLED" "Throttled" throttled
reportThermal "$STATUS&HAS_THROTTLED" "Throttled history" has_throttled
reportThermal "$STATUS&CAPPED" "Frequency Capped" freqcap
reportThermal "$STATUS&HAS_CAPPED" "Frequency Capped history" has_freqcap