Files

49 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
alertLevel="$1"
# load in defaults from config
scriptRoot=$(dirname "$0")
configFile="$scriptRoot/config.sh"
if [[ -f "$configFile" ]]; then
source "$configFile"
if [[ -z "$alertLevel" ]]; then
alertLevel="$THERMAL_ALERT"
fi
fi
# loop over all thermal zones
while read -r mcFile; do
# we need something to work with
if [[ -z "$mcFile" ]]; then
continue;
fi
# each zone has two files we use:
# "./temp" <int> zone temp (milli-celsius)
# "./type" <string> zone title
titleFile=$(echo "$mcFile" | sed 's/temp/type/')
title=$( < "$titleFile")
mc=$( < "$mcFile")
# calculate Celcius and Fahrenheit
c=$(echo "scale=1 ; $mc / 1000.0" | bc -l)
f=$(echo "scale=1 ; $c * 9 / 5 + 32" | bc -l)
hot=$(echo "$c >= $alertLevel" | bc -l)
echo "$title: $c C ($f F)"
# if we have reached our alert threshold, mark it as active
if [[ -n "$alertLevel" ]] && [[ "$hot" -gt 0 ]]; then
alertActive=1
fi
done <<< $(find /sys/class/thermal/*/* -path '*/thermal_*' -name 'temp')
# we exit with a status code of 1 to indicate alert level has been reached
if [[ "$alertActive" -eq 1 ]]; then
exit 1
fi