FANの制御
- 2015/06/12 21:42
- カテゴリー:PC, Cubieboard
しばらく気温が下がっていたので何もしないでいた
気温が上がってきたので急遽作成
簡単に仕様を検討
- HDD温度が○○℃を超えたら設定温度を下回るまでFANを動作させる → 外温度によって下げる温度を変更するようにしたい
- CPU温度は問題なさそうなので無視 → 90℃とかになったら冷やさないといけないかな
制御プログラム(設定温度などは未調整)
# cat /usr/local/sbin/tempctrl
#!/bin/sh
#
DANGERTEMP=42 # 超えたらFANを動作する温度
BETTERTEMP=38 # 下まったらFANを停止する温度
LOCKFILE=/tmp/hddtemp.lock # 本プログラムの起動状態
FANFILE=/tmp/fanmode.tmp # FAN動作状態(旧:低速・高速状態)
DEVICE=/sys/class/gpio/gpio7_pg1/value
if [ -f $LOCKFILE ]
then
/usr/bin/logger -t hddtemp $0 already running
exit 0
fi
TEMP=`/usr/sbin/hddtemp -n /dev/sda`
if [ 4 -le ${#TEMP} ]
then
exit 0
fi
if [ "$TEMP" -le $DANGERTEMP ]
then
echo 0 > $DEVICE # FANを停止
exit 0
fi
echo 1 > $DEVICE # FANを動作
/usr/bin/logger -t hddtemp "Operating the cooling fan for HDD is in the high temperature "`echo $TEMP C`
trap 'rm -rf $LOCKFILE $FANFILE' INT QUIT TERM EXIT
touch $LOCKFILE $FANFILE; chmod 400 $LOCKFILE $FANFILE
while [ -f $FANFILE ]
do
sleep 60
TEMP=`/usr/sbin/hddtemp -n /dev/sda`
if [ "$TEMP" -le $BETTERTEMP ]
then
break
fi
done
echo 0 > $DEVICE # FANを停止
/usr/bin/logger -t hddtemp "Stop the cooling fan for the HDD is better temperature "`echo $TEMP C`
rm -rf $LOCKFILE $FANFILE
exit 0
これをcronで動作させるためcrontab編集
# EDITOR=vi crontab -e
編集したcrontabは以下
# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
*/6 * * * * /usr/local/sbin/tempctrl
先になるが、いろいろ制御方法を変えていこうと考えてる
尚、温度が上がって危険なのはHDDであり60℃を超えないようにする
またHDDは温度変化が無い様に動作させることにより耐久性があがることが知られている