Fully reworked scripts

Signed-off-by: Lev Rusanov <30170278+JDM170@users.noreply.github.com>
This commit is contained in:
2022-09-06 19:19:53 +07:00
parent 44a483ed48
commit b475d1e1c9
5 changed files with 61 additions and 115 deletions

View File

@@ -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
View 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

View File

@@ -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

View File

@@ -3,7 +3,7 @@ Description=Controls cooling fan on GPIO
[Service]
Type=simple
ExecStart=/usr/bin/coolfan-start
ExecStart=/usr/bin/coolfan-control
ExecStop=/usr/bin/coolfan-stop
Restart=always
PIDFile=/var/run/coolfan.pid

View File

@@ -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