chch-door_github/door_lock.sh

51 lines
1.0 KiB
Bash
Executable File

#! /bin/sh
GPIO_OPEN=23
GPIO_CLOSE=24
GPIO_CLIP=22
GPIO_SWITCH=21
SLEEP=4
CLOSE_TIMEOUT=15
for i in $GPIO_OPEN $GPIO_CLOSE $GPIO_CLIP; do
echo "$i" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio${i}/direction
done
echo "$GPIO_SWITCH" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio${GPIO_SWITCH}/direction
case $1 in
open)
echo "1" > /sys/class/gpio/gpio${GPIO_OPEN}/value
sleep $SLEEP
echo "0" > /sys/class/gpio/gpio${GPIO_OPEN}/value
;;
close)
TIMER=$(($CLOSE_TIMEOUT*10))
while [ $TIMER -ge 0 ]; do
{
SWITCH=$(cat /sys/class/gpio/gpio${GPIO_SWITCH}/value)
if [ $SWITCH -eq 1 ]; then
{
echo "1" > /sys/class/gpio/gpio${GPIO_CLOSE}/value
sleep $SLEEP
echo "0" > /sys/class/gpio/gpio${GPIO_CLOSE}/value
break
}
fi
sleep .1
TIMER=$(($TIMER-1))
}
done
;;
clip)
echo "1" > /sys/class/gpio/gpio${GPIO_CLIP}/value
sleep $SLEEP
echo "0" > /sys/class/gpio/gpio${GPIO_CLIP}/value
;;
*)
echo "valid commands are \"open\", \"close\" and \"clip\""
;;
esac