simple fan service for gpio controlled fan
This commit is contained in:
parent
ce6bbbcc3e
commit
96eaee4493
1 changed files with 95 additions and 0 deletions
95
adafruit_fanservice.sh
Normal file
95
adafruit_fanservice.sh
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $(id -u) -ne 0 ]; then
|
||||
echo "Installer must be run as root."
|
||||
echo "Try 'sudo bash $0'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clear
|
||||
echo "This script will install Adafruit"
|
||||
echo "fan service, which will turn on an"
|
||||
echo "external fan controlled by a given pin"
|
||||
echo
|
||||
echo "Operations performed include:"
|
||||
echo "- In /boot/config.txt, enable camera"
|
||||
echo "- apt-get update"
|
||||
echo "- Install Python libraries:"
|
||||
echo " picamera, pygame, PIL"
|
||||
echo "- Downgrade SDL library for pygame"
|
||||
echo " touch compatibility"
|
||||
echo "- Download Dropbox Updater and"
|
||||
echo " Adafruit Pi Cam software"
|
||||
echo
|
||||
echo "Run time 1+ minutes. Reboot not required."
|
||||
echo
|
||||
|
||||
group=ADAFRUIT
|
||||
function info() {
|
||||
system="$1"
|
||||
group="${system}"
|
||||
shift
|
||||
FG="1;32m"
|
||||
BG="40m"
|
||||
echo -e "[\033[${FG}\033[${BG}${system}\033[0m] $*"
|
||||
}
|
||||
|
||||
|
||||
function bail() {
|
||||
FG="1;31m"
|
||||
BG="40m"
|
||||
echo -en "[\033[${FG}\033[${BG}${group}\033[0m] "
|
||||
if [ -z "$1" ]; then
|
||||
echo "Exiting due to error"
|
||||
else
|
||||
echo "Exiting due to error: $*"
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$1" != '-y' ]; then
|
||||
echo -n "CONTINUE? [y/N]"
|
||||
read
|
||||
if [[ ! "$REPLY" =~ ^(yes|y|Y)$ ]]; then
|
||||
echo "Canceled."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Continuing..."
|
||||
# check init system (technique borrowed from raspi-config):
|
||||
info FAN 'Checking init system...'
|
||||
if command -v systemctl > /dev/null && systemctl | grep -q '\-\.mount'; then
|
||||
echo "Found systemd, OK!"
|
||||
elif [ -f /etc/init.d/cron ] && [ ! -h /etc/init.d/cron ]; then
|
||||
bail "Found sysvinit, but we require systemd"
|
||||
else
|
||||
bail "Unrecognised init system"
|
||||
fi
|
||||
|
||||
info FAN 'Adding adafruit_fan.service'
|
||||
cat > /etc/systemd/system/adafruit_fan.service <<EOF
|
||||
[Unit]
|
||||
Description=Fan service for some Adafruit boards
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStartPre=-/bin/bash -c 'echo 4 >/sys/class/gpio/export'
|
||||
ExecStartPre=/bin/bash -c 'echo out >/sys/class/gpio/gpio4/direction'
|
||||
ExecStart=/bin/bash -c 'echo 1 >/sys/class/gpio/gpio4/value'
|
||||
|
||||
RemainAfterExit=true
|
||||
ExecStop=/bin/bash -c 'echo 0 >/sys/class/gpio/gpio4/value'
|
||||
StandardOutput=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
info FAN 'Enabling adafruit_fan.service'
|
||||
sudo systemctl enable adafruit_fan.service
|
||||
sudo systemctl start adafruit_fan.service
|
||||
info FAN 'Done!'
|
||||
echo "You can stop the fan service with 'sudo systemctl stop adafruit_fan.service'"
|
||||
echo "You can start the fan service with 'sudo systemctl start adafruit_fan.service'"
|
||||
Loading…
Reference in a new issue