pidor/scripts/beamercontrol.sh

187 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
logger $0 1=$1 2=$2
BEAMERIP=$(cat $(dirname "$0")"/beamerip.txt")
function raisescreen() {
echo "Rolling projection screen up"
ssh pi@doorbuzz 'doorbuzz/projectionscreen.sh up'
}
function lowerscreen() {
echo "Rolling projection screen down"
ssh pi@doorbuzz 'doorbuzz/projectionscreen.sh down'
}
function beameroff() {
echo "Switching beamer off"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3102fd0660 #projector off
}
function beameron() {
echo "Switching beamer on"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3101fe0660 #projector on
}
function dvi() {
echo "Switching to dvi"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3109f6070566 #switch to DVI
}
function hdmi1() {
echo "Switching to hdmi1"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3109f6071475 #switch to hdmi1
}
function hdmi2() {
receiveron
echo "Switching to hdmi2"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3109f6071576 #switch to hdmi2
sleep 4
receiverhdmi
}
function vga1() {
echo "Switching to vga1"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3109f6070162 #switch to vga1
}
function vga2() {
echo "Switching to vga2"
wget -qO/dev/null http://$projip/tgi/return.tgi?command=2a3109f6070263 #switch to vga2
}
function receiveron() {
echo "switching receiver on"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_POWER"'
}
function receiveroff() {
echo "switching receiver off"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_POWER2"'
}
function receiverhdmi() {
echo "Switching receiver to hdmi"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_DVD"'
}
function receiverjack1() {
echo "Switching receiver to jack1"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_VCR"'
}
function receiverjack2() {
echo "Switching receiver to jack2"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_VCR2"'
}
function receiveroptical() {
echo "Switching receiver to optical"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_TAPE"'
}
function receivertuner() {
echo "Switching receiver to tuner"
ssh pi@doorbuzz '/usr/bin/irsend SEND_ONCE pioneer "KEY_TUNER"'
}
function usage() {
echo "Usage: $0 (beamer|screen) (on|dvi|hdmi1|hdmi2|vga|off|down|up)"
exit
}
projip="$(cat $(dirname "$0")"/beamerip.txt")"
case $1 in
beamer)
case $2 in
on) beameron
;;
off) beameroff
;;
dvi) beameron; dvi
;;
hdmi1) beameron; hdmi1
;;
hdmi2) beameron; hdmi2
;;
vga1) beameron; vga1
;;
*) usage
esac
;;
screen)
case $2 in
down|on) lowerscreen
;;
up|off) raisescreen
;;
*) usage
esac
;;
receiver)
case $2 in
on) receiveron
;;
off) receiveroff
;;
hdmi) receiverhdmi
;;
jack1) receiverjack1
;;
jack2) receiverjack2
;;
optical) receiveroptical
;;
tuner) receivertuner
;;
*) usage
esac
;;
*)
usage
;;
esac 2>&1 | logger -t $0
exit
if [ "$1" = "off" ]
then
(
echo "called with parameter $1"
projip="$BEAMERIP"
if [ "$projip" = "" ]
then
echo "no projector IP found"
arp -a
raisescreen
exit
fi
signalsource="$(wget -qO - 'http://'"$projip"'/tgi/return.tgi?query=info' |awk -F'[<>]' '/<info>/{print substr($3,33,2)}')"
if [ "$signalsource" = "00" ] || [ "$signalsource" = "15" ] || [ "$signalsource" = "" ]
then
raisescreen
echo "wget http://$projip/tgi/return.tgi?command=2a3102fd0660 #projector off"
wget -qO - 'http://'"$projip"'/tgi/return.tgi?command=2a3102fd0660' 2>&1
echo $?
else
echo "not disabling projector because source is at $signalsource"
fi
) | logger -t "$(basename $0) $$"
exit
fi &
if [ "$1" = "off" ]
then
exit # because the if before is in background
fi
prevstatus="unknown"
while true
do
if [ $(date +%H) -eq 23 ]
then
pingall
fi
projip="$BEAMERIP"
# from the acer webpage we read that bytes 30-31 contain 00 if power off and 01 if power on
# we only test if 01, because if off, it can also give no response
# but seems to be bytes 32-33 more accurate
statusbyte="$(wget -qO - 'http://'"$projip"'/tgi/return.tgi?query=info'|awk -F'[<>]' '/<info>/{print substr($3,31,2)}')"
if [ "$statusbyte" = "01" ]
then
if [ "$prevstatus" != "on" ]
then
logger -t $(basename $0) "$$ Projector is on"
ssh pi@doorbuzz 'doorbuzz/projectionscreen.sh down'
prevstatus="on"
fi
else
if [ "$prevstatus" != "off" ]
then
logger -t $(basename $0) "$$ Projector is off"
prevstatus="off"
fi
fi
sleep 10
done