1
0
mirror of https://github.com/AG7GN/nexus-utilities.git synced 2025-05-15 22:20:09 -07:00

Added option to print lever state and will work outside of GUI

This commit is contained in:
Steve Magnuson 2021-07-29 12:46:38 -07:00
parent 8815b0cabd
commit 4945654ed3
2 changed files with 61 additions and 30 deletions

View File

@ -13,10 +13,11 @@
#% OPTIONS #% OPTIONS
#% -h, --help Print this help #% -h, --help Print this help
#% -v, --version Print script information #% -v, --version Print script information
#% -s, --state Print current switch state
#% #%
#================================================================ #================================================================
#- IMPLEMENTATION #- IMPLEMENTATION
#- version ${SCRIPT_NAME} 1.2.0 #- version ${SCRIPT_NAME} 1.2.1
#- author Steve Magnuson, AG7GN #- author Steve Magnuson, AG7GN
#- license CC-BY-SA Creative Commons License #- license CC-BY-SA Creative Commons License
#- script_id 0 #- script_id 0
@ -28,6 +29,8 @@
# 20200525 : Steve Magnuson : Now using raspi-gpio instead of # 20200525 : Steve Magnuson : Now using raspi-gpio instead of
# gpio to be compatible with all # gpio to be compatible with all
# versions of Pis # versions of Pis
# 20210719 : Steve Magnuson : Add -s option to print switch
# state
# #
#================================================================ #================================================================
# DEBUG OPTION # DEBUG OPTION
@ -81,6 +84,22 @@ function Die () {
SafeExit SafeExit
} }
function GetSwitchState () {
# Array P: Array index is the ID of each individual switch in the piano switch.
# Array element value is the GPIO BCM number.
P[1]=25
P[2]=13
P[3]=6
P[4]=5
local LEVERS=""
for I in 1 2 3 4
do
J=$($GPIO get ${P[$I]} | cut -d' ' -f3 | cut -d'=' -f2) # State of a switch in the piano (0 or 1)
(( $J == 0 )) && LEVERS="$LEVERS$I"
done
echo "$LEVERS"
}
#============================ #============================
# FILES AND VARIABLES # FILES AND VARIABLES
#============================ #============================
@ -95,24 +114,19 @@ VERSION="$(ScriptInfo version | grep version | tr -s ' ' | cut -d' ' -f 4)"
GPIO="$(command -v raspi-gpio)" GPIO="$(command -v raspi-gpio)"
# Array P: Array index is the ID of each individual switch in the piano switch.
# Array element value is the GPIO BCM number.
P[1]=25
P[2]=13
P[3]=6
P[4]=5
#============================ #============================
# PARSE OPTIONS WITH GETOPTS # PARSE OPTIONS WITH GETOPTS
#============================ #============================
#== set short options ==# #== set short options ==#
SCRIPT_OPTS=':hv-:' SCRIPT_OPTS=':hsv-:'
#== set long options associated with short one ==# #== set long options associated with short one ==#
typeset -A ARRAY_OPTS typeset -A ARRAY_OPTS
ARRAY_OPTS=( ARRAY_OPTS=(
[help]=h [help]=h
[state]=s
[version]=v [version]=v
) )
@ -161,6 +175,18 @@ do
ScriptInfo version ScriptInfo version
exit 0 exit 0
;; ;;
s) PIANO="$(GetSwitchState)"
[[ $PIANO == "" ]] && MESSAGE="No levers are down." || MESSAGE="Levers $PIANO are down."
if xset q &>/dev/null
then
yad --center --title="Test calling pianoX.sh script - version $VERSION" \
--info --borders=30 --no-wrap \
--text="<b>$MESSAGE $HOME/piano$PIANO.sh will run.</b>" \
--buttons-layout=center --button=Close:0
else
echo "$MESSAGE"
fi
;;
:) :)
Die "${SCRIPT_NAME}: -$OPTARG: option requires an argument" Die "${SCRIPT_NAME}: -$OPTARG: option requires an argument"
;; ;;
@ -187,12 +213,7 @@ $SYNTAX && set -n
$DEBUG && set -x $DEBUG && set -x
# String $PIANO will identify which levers are in the DOWN position # String $PIANO will identify which levers are in the DOWN position
PIANO="" PIANO="$(GetSwitchState)"
for I in 1 2 3 4
do
J=$($GPIO get ${P[$I]} | cut -d' ' -f3 | cut -d'=' -f2) # State of a switch in the piano (0 or 1)
(( $J == 0 )) && PIANO="$PIANO$I"
done
# Check if the script corresponding to the piano switch setting exists and is not empty. # Check if the script corresponding to the piano switch setting exists and is not empty.
# #

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
VERSION="1.1.0" VERSION="1.1.1"
# This script checks the status of 4 GPIO pins and runs a script corresponding # This script checks the status of 4 GPIO pins and runs a script corresponding
# to those settings as described below. This script is called by initialize-pi.sh, # to those settings as described below. This script is called by initialize-pi.sh,
@ -8,20 +8,24 @@ VERSION="1.1.0"
GPIO="$(command -v raspi-gpio)" GPIO="$(command -v raspi-gpio)"
# Array P: Array index is the ID of each individual switch in the piano switch. function GetSwitchState () {
# Array element value is the GPIO BCM number. # Array P: Array index is the ID of each individual switch in the piano switch.
P[1]=25 # Array element value is the GPIO BCM number.
P[2]=13 P[1]=25
P[3]=6 P[2]=13
P[4]=5 P[3]=6
P[4]=5
local LEVERS=""
for I in 1 2 3 4
do
J=$($GPIO get ${P[$I]} | cut -d' ' -f3 | cut -d'=' -f2) # State of a switch in the piano (0 or 1)
(( $J == 0 )) && LEVERS="$LEVERS$I"
done
echo "$LEVERS"
}
# String $PIANO will identify which levers are in the DOWN position # String $PIANO will identify which levers are in the DOWN position
PIANO="" PIANO="$(GetSwitchState)"
for I in 1 2 3 4
do
J=$($GPIO get ${P[$I]} | cut -d' ' -f3 | cut -d'=' -f2) # State of a switch in the piano (0 or 1)
(( $J == 0 )) && PIANO="$PIANO$I"
done
# Check if the script corresponding to the piano switch setting exists and is not empty. # Check if the script corresponding to the piano switch setting exists and is not empty.
# #
@ -34,7 +38,13 @@ done
[[ $PIANO == "" ]] && MESSAGE="No levers are down." || MESSAGE="Levers $PIANO are down." [[ $PIANO == "" ]] && MESSAGE="No levers are down." || MESSAGE="Levers $PIANO are down."
yad --center --title="Test calling pianoX.sh script - version $VERSION" --info --borders=30 \ if xset q &>/dev/null
--no-wrap --text="<b>$MESSAGE $HOME/piano$PIANO.sh will run.</b>" --buttons-layout=center \ then
--button=Close:0 yad --center --title="Test calling pianoX.sh script - version $VERSION" \
--info --borders=30 --no-wrap \
--text="<b>$MESSAGE $HOME/piano$PIANO.sh will run.</b>" \
--buttons-layout=center --button=Close:0
else
echo "$MESSAGE"
fi