[RPI]树莓派监控温度及报警关机保护

最近把树莓派用作了Aria2下载机+无线路由,24小时不间断工作,生怕机子有时会过热烧坏,所以写了个脚本做温度记录,以及在温度过高时能自动关机保护。下面直接上Shell脚本(/data/temperature.sh):

#!/bin/sh

# 高温阈值
hot_temp=80.0

# 低温阈值
cold_temp=-70.0

# 过热预警连续出现次数
hot_cnt=0

# 过冷预警连续出现次数
cold_cnt=0

while (true) do
	temp=`/opt/vc/bin/vcgencmd measure_temp|awk -F= '{print $2}'|awk -F\' '{print $1}'`
	echo $temp
	# 网上有实验表明,树莓派温度达到 -78°C 的低温下会停止工作
	# http://shumeipai.nxez.com/2019/04/02/what-is-the-ideal-raspberry-pi-cpu-temperature-range.html
	if [ `expr "$temp < $cold_temp"` ]; then
		if [ $cold_cnt > 3 ]; then
			echo "太冷了,我不会是在太空中吧!" >&2
			halt -p
			break
		else
			let cold_cnt+=1
		fi
	elif [ `expr "$temp > $hot_temp"` ]; then
		if [ $hot_cnt > 3 ]; then
			echo "太热了,需要关机休息一下!" >&2
			halt -p
			break
		else
			let hot_cnt+=1
		fi
	else
		# 需要连续出现温度预警才会关机
		hot_cnt=0
		cold_cnt=0

		if [ `expr "$temp < 0.0"` ]; then # 有点冷
			echo "警告:当前温度有点冷,小心受凉!" >&2
		elif [ `expr "$temp < 40.0"` ]; then # 待机温度
			sleep 0.1
		elif [ `expr "$temp < 70.0"` ]; then # 正常工作温度
			sleep 0.1
		elif [ `expr "$temp < $hot_temp"` ]; then # 挖矿温度?
			echo "警告:我有点热,注意控制温度!" >&2
		fi
	fi

	sleep 10
done

另外,还可以写个服务配置文件(/etc/systemd/system/temperature.service):

[Unit]
Description=Temperature Monitor
After=network.target

[Service]
ExecStart=/data/temperature.sh > /data/temperature.log &
Restart=on-abort

[Install]
WantedBy=multi-user.target

最后执行一下systemctl enable temperature,这样每次开机时就会自动启动温度监控脚本。

你可能感兴趣的:([RPI]树莓派监控温度及报警关机保护)