Skip to content

Instantly share code, notes, and snippets.

@j3tm0t0
Last active March 5, 2018 08:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save j3tm0t0/c8bd610ab3c5f877b97457689acdcc7e to your computer and use it in GitHub Desktop.
Save j3tm0t0/c8bd610ab3c5f877b97457689acdcc7e to your computer and use it in GitHub Desktop.
status display / reboot & shutdown script for MESH Status board
#!/bin/bash
# PIN assign
BUTTON=2
LAN=3
INTERNET=4
NG=14
OK=15
# Command for button
PUSH="sudo reboot"
HOLD="sudo shutdown -h now"
# path to status file
STATUS_PATH=/run/user/1000/status
function DEBUG()
{
echo DEBUG: $*
}
function check_button()
{
button=$(cat /sys/class/gpio/gpio$BUTTON/value)
if [ "$button" == "0" ]
then
DEBUG button pushed
echo 0 > /sys/class/gpio/gpio$OK/value
echo 0 > /sys/class/gpio/gpio$NG/value
for ((i=0; i < 50 ; i++))
do
if [ "$(cat /sys/class/gpio/gpio$BUTTON/value)" == "1" ]
then
eval $PUSH
echo 0 > /sys/class/gpio/gpio$OK/value
echo 0 > /sys/class/gpio/gpio$NG/value
exit
fi
echo 1 > /sys/class/gpio/gpio$NG/value
sleep .1
echo 0 > /sys/class/gpio/gpio$NG/value
done
eval $HOLD
echo 1 > /sys/class/gpio/gpio$OK/value
echo 0 > /sys/class/gpio/gpio$NG/value
exit
fi
}
function check_if()
{
lan=1
internet=1
for dev in $(ip a | grep '^[0-9]' | grep -v lo: | awk '{print $2}' | tr -d :)
do
dev_type=$(echo $dev | tr -d '[0-9')
if ip a s dev $dev | grep inet > /dev/null
then
# DEBUG $dev is up
case $dev_type in
eth) lan=0 ;;
wlan) lan=0 ;;
ppp) internet=0 ;;
wwan) internet=0 ;;
esac
fi
done
echo $lan > /sys/class/gpio/gpio$LAN/value
echo $internet> /sys/class/gpio/gpio$INTERNET/value
}
function check_flag()
{
( [ -f $STATUS_PATH/OK ] && echo 0 || echo 1 ) > /sys/class/gpio/gpio$OK/value
( [ -f $STATUS_PATH/NG ] && echo 0 || echo 1 ) > /sys/class/gpio/gpio$NG/value
}
for pin in $BUTTON $LAN $INTERNET $NG $OK
do
echo $pin > /sys/class/gpio/unexport &> /dev/null
done
sleep 1
echo $BUTTON> /sys/class/gpio/export
sleep 2
echo in > /sys/class/gpio/gpio$BUTTON/direction
for pin in $LAN $INTERNET $NG $OK
do
echo $pin > /sys/class/gpio/export
sleep 2
echo out > /sys/class/gpio/gpio$pin/direction
echo 1 > /sys/class/gpio/gpio$pin/value
done
while [ 1 ]
do
check_button
check_if
check_flag
sleep 1
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment