diff --git a/scripts/.gitignore b/scripts/.gitignore index ea1e341..07e2aaf 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1 +1,3 @@ spaceapikey.txt +beamerip.txt +peoplecounterip.txt diff --git a/scripts/beamercontrol.sh b/scripts/beamercontrol.sh new file mode 100755 index 0000000..b07547f --- /dev/null +++ b/scripts/beamercontrol.sh @@ -0,0 +1,106 @@ +#!/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 usage() { + echo "Usage: $0 (beamer|screen) (on|off|down|up)" + exit +} +projip="$(cat $(dirname "$0")"/beamerip.txt")" +case $1 in + beamer) + case $2 in + on) beameron + ;; + off) beameroff + ;; + *) usage + esac + ;; + screen) + case $2 in + down|on) lowerscreen + ;; + up|off) raisescreen + ;; + *) usage + esac + ;; + *) + usage + ;; +esac +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'[<>]' '//{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'[<>]' '//{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 diff --git a/scripts/lightcommander b/scripts/lightcommander index bbb249b..e8d84f9 100755 --- a/scripts/lightcommander +++ b/scripts/lightcommander @@ -1,7 +1,7 @@ #!/bin/bash if [ "$1" = "" ] then - echo "usage: $0 {main|chill|status|labsocket|alarm} {on|off}" + echo "usage: $0 {main|chill|status|labsocket|alarm|screen|projector} {on|off}" exit 1 fi function dolight() { @@ -27,6 +27,10 @@ function dolight() { ;; alarm) sudo /root/pidor/rcswitch-pi/send 2 15A 1 "$setvalue" ;; + screen) sudo /root/pidor/scripts/beamercontrol.sh screen "$2" + ;; + projector) sudo /root/pidor/scripts/beamercontrol.sh beamer "$2" + ;; esac # type (2=10bit) # | house 1-16 (the dial thingie) diff --git a/scripts/peoplecounter-realtime.sh b/scripts/peoplecounter-realtime.sh index dfe89af..e8265ae 100755 --- a/scripts/peoplecounter-realtime.sh +++ b/scripts/peoplecounter-realtime.sh @@ -66,14 +66,18 @@ do if [ "$p" != "$oldp" ] then logger $(basename $0) changed from $oldp to $p people - if [ "$p" -gt "$oldp" ] + curmax=$(getmaxpeople) + oldmax=$(cat "$MAXFILE") + if [ "$curmax" -gt "$oldmax" ] then - echo "$p" > "$MAXFILE" + logger $(basename $0) setting max to $curmax because bigger than $oldmax + echo "$curmax" > "$MAXFILE" fi fi oldaverage="$(cat "$PRESENCY")" newaverage=$(getaveragepeople) - if [ "$oldaverage" -ne "$newaverage" ] + #logger $(basename $0) averages o=$oldaverage n=$newaverage + if [ "$oldaverage" != "$newaverage" ] then logger $(basename $0) updated precency average from $oldaverage to $newaverage people echo "$newaverage" > "$PRESENCY" diff --git a/systemfiles/sudoers.d/beamercontrol b/systemfiles/sudoers.d/beamercontrol new file mode 100644 index 0000000..48ebb93 --- /dev/null +++ b/systemfiles/sudoers.d/beamercontrol @@ -0,0 +1 @@ +www-data ALL=(root) NOPASSWD: /root/pidor/scripts/beamercontrol.sh diff --git a/systemfiles/sudoers.d.closetrigger b/systemfiles/sudoers.d/closetrigger similarity index 100% rename from systemfiles/sudoers.d.closetrigger rename to systemfiles/sudoers.d/closetrigger diff --git a/systemfiles/sudoers.d/rcsswitch b/systemfiles/sudoers.d/rcsswitch new file mode 100644 index 0000000..3109ded --- /dev/null +++ b/systemfiles/sudoers.d/rcsswitch @@ -0,0 +1 @@ +www-data ALL=(root) NOPASSWD: /root/pidor/rcswitch-pi/send diff --git a/www/htdocs/lights.level2.lu/index.html b/www/htdocs/lights.level2.lu/index.html index 882ac7a..254be94 100644 --- a/www/htdocs/lights.level2.lu/index.html +++ b/www/htdocs/lights.level2.lu/index.html @@ -19,7 +19,10 @@ } .h1, .h2, .h3, h1, h2, h3 { - margin-top: 10px; + margin-top: 0; + } + .well { + padding: 10px; } @@ -37,26 +40,46 @@ -
+
-

Chill

-

This enables/disables all the lights of the Chill area

-

On

-

Off

+

Chill Switch

+

On

+

Off

-

Main

-

This enables/disables all the lights of Level2

-

On

-

Off

+

Main Switch

+

On

+

Off

+
+ + +
+
+
+

Projection screen

+

^^^ Roll Up ^^^

+

vvv Roll Down vvv

+ Note: switching the projector on will roll the screen down automatically +
+
+
+
+

Projector

+

On

+

Off

+
+
+
+