RandomVideo/buzzer.sh

108 lines
2.7 KiB
Bash
Raw Normal View History

2020-08-23 15:47:22 +02:00
#!/bin/sh
2020-09-23 15:18:30 +02:00
# SPDX-License-Identifier: Unlicense
2020-08-23 15:47:22 +02:00
2020-09-24 21:52:14 +02:00
configfile="config.json"
2020-09-04 22:12:30 +02:00
2020-09-25 17:50:04 +02:00
if [ -z "$(command -v jq)" ]; then
echo "Missing \"jq\"!"
exit 1
fi
2020-09-23 15:18:30 +02:00
2020-09-25 17:50:04 +02:00
if [ -z "$(command -v gpio)" ]; then
2020-09-24 21:52:14 +02:00
echo "Missing \"gpio\"!"
echo "This is a part of WiringPi-Package."
exit 1
fi
2020-09-25 17:50:04 +02:00
player="$(jq -r ".player" < $configfile)"
2020-09-24 21:52:14 +02:00
if [ -z "$(command -v $player)" ]; then
echo "Missing \"$player\"!"
exit 1
fi
2020-09-19 23:33:19 +02:00
2020-09-25 17:50:04 +02:00
buzzergpio="$(jq -r ".buzzer | .buzzergpio" < $configfile)"
strobegpio="$(jq -r ".buzzer | .strobegpio" < $configfile)"
swupgpio="$(jq -r ".swupgpio" < $configfile)"
swdowngpio="$(jq -r ".buzzer | .swdowngpio" < $configfile)"
2020-09-23 15:18:30 +02:00
2020-09-25 17:50:04 +02:00
playerparam="$(jq -r ".playerparam" < $configfile)"
playerloop="$(jq -r ".buzzer | .playerloop" < $configfile)"
2020-09-25 17:50:04 +02:00
pgrepplayer="$(jq -r ".pgrepplayer" < $configfile)"
2020-09-25 17:50:04 +02:00
pollingtime="$(jq -r ".buzzer | .pollingtime" < $configfile)"
buzzertimeout="$(jq -r ".buzzer | .buzzertimeout" < $configfile)"
strobeduration="$(jq -r ".buzzer | .strobeduration" < $configfile)"
2020-09-25 17:50:04 +02:00
volumetimeout="$(jq -r ".buzzer | .volumetimeout" < $configfile)"
volumedelay="$(jq -r ".buzzer | .volumedelay" < $configfile)"
volumemax="$(jq -r ".buzzer | .volumemax" < $configfile)"
2020-09-23 15:18:30 +02:00
playerfull="$(command -v $player) $playerparam"
2020-09-04 22:12:30 +02:00
2020-09-25 17:50:04 +02:00
gpio mode $buzzergpio in
2020-08-23 15:47:22 +02:00
2020-09-25 17:50:04 +02:00
gpio mode $strobegpio out
gpio write $strobegpio 1
2020-08-23 15:47:22 +02:00
2020-09-25 17:50:04 +02:00
gpio mode $swdowngpio in
gpio mode $swupgpio in
2020-09-19 00:22:52 +02:00
2020-09-23 15:18:30 +02:00
volumevalue=0
2020-09-26 13:06:20 +02:00
amixer -q -c 2 sset 'Speaker' $volumevalue%
2020-09-23 15:18:30 +02:00
2020-08-23 15:47:22 +02:00
while true; do
2020-09-22 20:23:21 +02:00
2020-09-25 17:50:04 +02:00
buzzerstat="$(gpio read $buzzergpio)"
swupstat="$(gpio read $swupgpio)"
swdownstat="$(gpio read $swdowngpio)"
2020-08-23 15:47:22 +02:00
2020-09-19 00:44:08 +02:00
if [ "$buzzerstat" -eq 0 ] && [ "$swupstat" -eq 0 ]; then
2020-09-23 15:18:30 +02:00
~/RandomVideo/RandomVideo.sh buzzer
2020-09-25 17:50:04 +02:00
gpio write $strobegpio 0; sleep $strobeduration; gpio write $strobegpio 1 &
2020-09-23 15:18:30 +02:00
sleep $buzzertimeout
2020-09-19 19:57:49 +02:00
elif [ "$swupstat" -eq 1 ]; then
2020-09-23 15:18:30 +02:00
if pgrep "$pgrepplayer" > /dev/null; then
pkill "$pgrepplayer"
2020-09-19 23:33:19 +02:00
fi
2020-09-23 15:18:30 +02:00
$playerfull $playerloop ~/RandomVideo/onair.mp4 &
2020-09-19 20:18:17 +02:00
2020-09-22 20:39:17 +02:00
while [ "$swupstat" -eq 1 ]; do
2020-09-25 17:50:04 +02:00
swupstat="$(gpio read $swupgpio)"
2020-09-23 15:18:30 +02:00
sleep $pollingtime
2020-09-19 19:57:49 +02:00
done
2020-09-23 15:18:30 +02:00
pkill "$pgrepplayer"
elif [ "$volumevalue" -eq 0 ] && [ "$swdownstat" -eq 1 ]; then
2020-09-23 15:39:11 +02:00
while [ "$volumevalue" -lt "$volumemax" ] && [ "$buzzerstat" -eq 1 ]; do
2020-09-23 15:18:30 +02:00
volumevalue=$((volumevalue + 1))
2020-09-26 13:06:20 +02:00
amixer -q -c 2 sset 'Speaker' $volumevalue%
2020-09-25 17:50:04 +02:00
buzzerstat="$(gpio read $buzzergpio)"
2020-09-23 15:18:30 +02:00
sleep $volumetimeout
done
2020-09-23 15:44:30 +02:00
2020-09-23 15:47:53 +02:00
sleep $volumedelay
2020-09-23 15:18:30 +02:00
elif [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; then
2020-09-23 15:39:11 +02:00
while [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; do
2020-09-23 15:18:30 +02:00
volumevalue=$((volumevalue -1))
2020-09-26 13:06:20 +02:00
amixer -q -c 2 sset 'Speaker' $volumevalue%
2020-09-25 17:50:04 +02:00
swdownstat="$(gpio read $swdowngpio)"
2020-09-23 15:18:30 +02:00
sleep $volumetimeout
done
2020-09-22 20:27:36 +02:00
2020-09-23 15:47:53 +02:00
sleep $volumedelay
2020-09-23 15:44:30 +02:00
2020-09-19 19:57:49 +02:00
elif [ "$buzzerstat" -eq 1 ] && [ "$swupstat" -eq 0 ]; then
2020-09-23 15:18:30 +02:00
sleep $pollingtime
2020-08-23 15:47:22 +02:00
fi
done