[RPI]树莓派监控温度及报警关机保护「建议收藏」

最近把树莓派用作了Aria2下载机+无线路由,24小时不间断工作,生怕机子有时会过热烧坏,所以写了个脚本做温度记录,以及在温度过高时能自动关机保护。下面直接上Shell脚本(/data/temperature.sh):#!/bin/sh#高温阈值hot_temp=80.0#低温阈值cold_temp=-70.0#过热预警连续出现次数hot_cnt=0#过冷预警连…

大家好,又见面了,我是你们的朋友全栈君。

最近把树莓派用作了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,这样每次开机时就会自动启动温度监控脚本。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128631.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 知识图谱(二)——知识推理

    知识图谱(二)——知识推理知识推理是知识图谱中很重要的一部分,主要用于推理暗含的知识(丰富知识图谱),检查知识库的不一致(知识清洗)知识推理分类演绎推理从一般到特殊的过程.从一般性的前提出发,通过推导,得到具体描述或个别结论(三段论),结论已经蕴含一般性知识中,只是通过演绎推理揭示出来,不能得到新知识.归纳推理从特殊到一般的推理过程.从一类事物的大量特殊事例出发,去推出该类事物的一般性结论(数学归纳法)…

    2022年6月1日
    62
  • Git本地仓库push至GitHub远程仓库每次输入账户密码问题解决(亲测可行)

    Git本地仓库push至GitHub远程仓库每次输入账户密码问题解决(亲测可行)

    2021年11月8日
    40
  • Python3中打开文件的方式(With open)「建议收藏」

    Python3中打开文件的方式(With open)「建议收藏」python文件读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘。读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件…

    2022年4月19日
    38
  • checkbox选中和不选中 jqu_jquery checkbox 选中不选中

    checkbox选中和不选中 jqu_jquery checkbox 选中不选中展开全部$(function(){//动态绑定默认状态//$(“#ck”).attr(“checked”,true)//选中//$(“#ck”).attr(“checked”,false)//未选中//点击判断选中还是未选中$(“#ck”).click(function(){if($(this).is(“:checked”)){alert(“选中”);}else{alert…

    2022年6月30日
    22
  • c++中 append()函数用法

    c++中 append()函数用法append()函数常用的函数原型是:basic_string&append(constbasic_string&str);basic_string&append(constchar*str);basic_string&append(constbasic_string&str,size_typeindex,size_typelen);basic_string&append(constchar

    2022年6月22日
    30
  • 史上最新最全面的java大数据学习路线(新手小白必看版本)

    史上最新最全面的java大数据学习路线(新手小白必看版本)第一阶段:大数据基础Java语言基础阶段1.1:Java开发介绍1.1.1Java的发展历史1.1.2Java的应用领域1.1.3Java语言的特性1.1.4Java面向对象1.1.5Java性能分类1.1.6搭建Java环境1.1.7Java工作原理 1.2:熟悉Eclipse开发工具1.2.1Eclipse简介与下载1.2.2安…

    2022年5月28日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号