#!/bin/sh # SPDX-License-Identifier: Unlicense configfile="config.json" cmdjq="$(command -v jq)" if [ -z "$cmdjq" ]; then echo "Missing \"jq\"!" exit 1 fi cmdgpio="$(command -v gpio)" if [ -z "$cmdgpio" ]; then echo "Missing \"gpio\"!" echo "This is a part of WiringPi-Package." exit 1 fi player="$($cmdjq -r ".player" < $configfile)" if [ -z "$(command -v $player)" ]; then echo "Missing \"$player\"!" exit 1 fi buzzergpio="$($cmdjq -r ".buzzer | .buzzergpio" < $configfile)" strobegpio="$($cmdjq -r ".buzzer | .strobegpio" < $configfile)" swupgpio="$($cmdjq -r ".swupgpio" < $configfile)" swdowngpio="$($cmdjq -r ".buzzer | .swdowngpio" < $configfile)" playerparam="$($cmdjq -r ".playerparam" < $configfile)" playerloop="$($cmdjq -r ".buzzer | .playerloop" < $configfile)" pgrepplayer="$($cmdjq -r ".pgrepplayer" < $configfile)" pollingtime="$($cmdjq -r ".buzzer | .pollingtime" < $configfile)" buzzertimeout="$($cmdjq -r ".buzzer | .buzzertimeout" < $configfile)" strobeduration="$($cmdjq -r ".buzzer | .strobeduration" < $configfile)" volumetimeout="$($cmdjq -r ".buzzer | .volumetimeout" < $configfile)" volumedelay="$($cmdjq -r ".buzzer | .volumedelay" < $configfile)" volumemax="$($cmdjq -r ".buzzer | .volumemax" < $configfile)" playerfull="$(command -v $player) $playerparam" cmdamixer="$(command -v amixer)" $cmdgpio mode $buzzergpio in $cmdgpio mode $strobegpio out $cmdgpio write $strobegpio 1 $cmdgpio mode $swdowngpio in $cmdgpio mode $swupgpio in volumevalue=0 $cmdamixer -q -c 2 sset 'Speaker' $volumevalue% while true; do buzzerstat="$($cmdgpio read $buzzergpio)" swupstat="$($cmdgpio read $swupgpio)" swdownstat="$($cmdgpio read $swdowngpio)" if [ "$buzzerstat" -eq 0 ] && [ "$swupstat" -eq 0 ]; then ~/RandomVideo/RandomVideo.sh buzzer $cmdgpio write $strobegpio 0; sleep $strobeduration; $cmdgpio write $strobegpio 1 & sleep $buzzertimeout elif [ "$swupstat" -eq 1 ]; then if pgrep "$pgrepplayer" > /dev/null; then pkill "$pgrepplayer" fi $playerfull $playerloop ~/RandomVideo/onair.mp4 & while [ "$swupstat" -eq 1 ]; do swupstat="$($cmdgpio read $swupgpio)" sleep $pollingtime done pkill "$pgrepplayer" elif [ "$volumevalue" -eq 0 ] && [ "$swdownstat" -eq 1 ]; then while [ "$volumevalue" -lt "$volumemax" ] && [ "$buzzerstat" -eq 1 ]; do volumevalue=$((volumevalue + 1)) $cmdamixer -q -c 2 sset 'Speaker' $volumevalue% buzzerstat="$($cmdgpio read $buzzergpio)" sleep $volumetimeout done sleep $volumedelay elif [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; then while [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; do volumevalue=$((volumevalue -1)) $cmdamixer -q -c 2 sset 'Speaker' $volumevalue% swdownstat="$($cmdgpio read $swdowngpio)" sleep $volumetimeout done sleep $volumedelay elif [ "$buzzerstat" -eq 1 ] && [ "$swupstat" -eq 0 ]; then sleep $pollingtime fi done