mirror of
https://github.com/JDM170/orangepi_coolfan
synced 2025-12-10 05:57:21 +07:00
Fully reworked scripts
Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
@@ -1,43 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Physical | V | Mode | Name | wPi | GPIO
|
|
||||||
# 8 | 0 | OUT | TXD.3 | 3 | 13
|
|
||||||
readonly FAN_PIN="13"
|
|
||||||
readonly FAN_PATH=/sys/class/gpio/gpio${FAN_PIN}
|
|
||||||
|
|
||||||
readonly MSG_ON="Fan ON!"
|
|
||||||
readonly MSG_OFF="Fan OFF!"
|
|
||||||
old_state=$(cat $FAN_PATH/value)
|
|
||||||
|
|
||||||
setup()
|
|
||||||
{
|
|
||||||
echo $FAN_PIN > /sys/class/gpio/export
|
|
||||||
echo "out" > $FAN_PATH/direction
|
|
||||||
echo 0 > $FAN_PATH/value
|
|
||||||
}
|
|
||||||
cleanup()
|
|
||||||
{
|
|
||||||
echo 0 > $FAN_PATH/value
|
|
||||||
echo $FAN_PIN > /sys/class/gpio/unexport
|
|
||||||
}
|
|
||||||
|
|
||||||
on()
|
|
||||||
{
|
|
||||||
echo 1 > $FAN_PATH/value
|
|
||||||
}
|
|
||||||
off()
|
|
||||||
{
|
|
||||||
echo 0 > $FAN_PATH/value
|
|
||||||
}
|
|
||||||
case $1 in
|
|
||||||
on|off ) "$1";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cur_state=$(cat $FAN_PATH/value)
|
|
||||||
if [ "$old_state" != "$cur_state" ] && [ -z "$2" ]; then
|
|
||||||
if [ "$cur_state" = 0 ]; then
|
|
||||||
echo $MSG_OFF
|
|
||||||
else
|
|
||||||
echo $MSG_ON
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
60
coolfan-control
Normal file
60
coolfan-control
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Physical | V | Mode | Name | wPi | GPIO
|
||||||
|
# 8 | 0 | OUT | TXD.3 | 3 | 13
|
||||||
|
# readonly FAN_PIN=13
|
||||||
|
readonly FAN_PIN=3
|
||||||
|
readonly FAN_START=44000
|
||||||
|
readonly FAN_STOP=35000
|
||||||
|
readonly SLEEP_TIME=10
|
||||||
|
FAN_STATE=0
|
||||||
|
|
||||||
|
setup()
|
||||||
|
{
|
||||||
|
# echo $FAN_PIN > /sys/class/gpio/export
|
||||||
|
# echo "out" > $FAN_PATH/direction
|
||||||
|
# echo 0 > $FAN_PATH/value
|
||||||
|
gpio export $FAN_PIN out
|
||||||
|
gpio write $FAN_PIN 0
|
||||||
|
}
|
||||||
|
cleanup()
|
||||||
|
{
|
||||||
|
# echo $FAN_STATE > $FAN_PATH/value
|
||||||
|
# echo $FAN_PIN > /sys/class/gpio/unexport
|
||||||
|
gpio write $FAN_PIN 0
|
||||||
|
gpio unexport $FAN_PIN
|
||||||
|
rm /var/run/coolfan.pid
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
setFanState()
|
||||||
|
{
|
||||||
|
if [ $(gpio read $FAN_PIN) != $1 ]; then
|
||||||
|
# echo $1 > $FAN_PATH/value
|
||||||
|
gpio write $FAN_PIN $1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
setup
|
||||||
|
trap cleanup 15
|
||||||
|
echo $$ > /var/run/coolfan.pid
|
||||||
|
|
||||||
|
while :; do
|
||||||
|
#echo $$ > /var/run/coolfan.pid
|
||||||
|
|
||||||
|
TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
|
||||||
|
|
||||||
|
if [ "$TEMP" -ge "$FAN_START" ] && [ $FAN_STATE != 1 ] ; then
|
||||||
|
FAN_STATE=1
|
||||||
|
setFanState $FAN_STATE
|
||||||
|
echo "FAN ON; TEMP: $TEMP"
|
||||||
|
else
|
||||||
|
if [ "$TEMP" -le "$FAN_STOP" ] && [ $FAN_STATE != 0 ] ; then
|
||||||
|
FAN_STATE=0
|
||||||
|
setFanState $FAN_STATE
|
||||||
|
echo "FAN OFF; TEMP: $TEMP"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep $SLEEP_TIME
|
||||||
|
done
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
FAN_START=45000
|
|
||||||
FAN_STOP=36000
|
|
||||||
|
|
||||||
cleanup()
|
|
||||||
{
|
|
||||||
/usr/bin/coolfan-control cleanup
|
|
||||||
rm /var/run/coolfan.pid
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup 15
|
|
||||||
|
|
||||||
/usr/bin/coolfan-control setup
|
|
||||||
|
|
||||||
while :; do
|
|
||||||
echo $$ > /var/run/coolfan.pid
|
|
||||||
|
|
||||||
TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
|
|
||||||
|
|
||||||
if [ "$TEMP" -ge "$FAN_START" ]; then
|
|
||||||
/usr/bin/coolfan-control on
|
|
||||||
else
|
|
||||||
if [ "$TEMP" -le "$FAN_STOP" ]; then
|
|
||||||
/usr/bin/coolfan-control off
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
sleep 10
|
|
||||||
done
|
|
||||||
@@ -3,7 +3,7 @@ Description=Controls cooling fan on GPIO
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/usr/bin/coolfan-start
|
ExecStart=/usr/bin/coolfan-control
|
||||||
ExecStop=/usr/bin/coolfan-stop
|
ExecStop=/usr/bin/coolfan-stop
|
||||||
Restart=always
|
Restart=always
|
||||||
PIDFile=/var/run/coolfan.pid
|
PIDFile=/var/run/coolfan.pid
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Physical | V | Mode | Name | wPi | GPIO
|
|
||||||
# 8 | 0 | OUT | TXD.3 | 3 | 13
|
|
||||||
readonly FAN_PIN="3"
|
|
||||||
|
|
||||||
readonly MSG_ON="Fan ON!"
|
|
||||||
readonly MSG_OFF="Fan OFF!"
|
|
||||||
|
|
||||||
setup()
|
|
||||||
{
|
|
||||||
gpio export $FAN_PIN out
|
|
||||||
gpio write $FAN_PIN 0
|
|
||||||
old_state=$(gpio read $FAN_PIN)
|
|
||||||
}
|
|
||||||
cleanup()
|
|
||||||
{
|
|
||||||
gpio write $FAN_PIN 0
|
|
||||||
gpio unexport $FAN_PIN
|
|
||||||
}
|
|
||||||
|
|
||||||
on()
|
|
||||||
{
|
|
||||||
gpio write $FAN_PIN 1
|
|
||||||
}
|
|
||||||
off()
|
|
||||||
{
|
|
||||||
gpio write $FAN_PIN 0
|
|
||||||
}
|
|
||||||
case $1 in
|
|
||||||
on|off ) "$1";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cur_state=$(gpio read $FAN_PIN)
|
|
||||||
if [ "$old_state" != "$cur_state" ] && [ -z "$2" ]; then
|
|
||||||
if [ "$cur_state" = 0 ]; then
|
|
||||||
echo $MSG_OFF
|
|
||||||
else
|
|
||||||
echo $MSG_ON
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
Reference in New Issue
Block a user