added light control for corridor

This commit is contained in:
root 2017-11-30 21:09:03 +00:00
parent c7ec11a4ea
commit b40015f22b
3 changed files with 71 additions and 3 deletions

View File

@ -2,6 +2,14 @@
COMMAND_FILE=/tmp/command
corridor_light() {
./light.sh 0 "$1"
}
corridor_light_toggle() {
./light.sh 0
}
lounge_light() {
./light.sh 1 "$1"
}
@ -31,6 +39,12 @@ while true; do
fi
COLOR_STRING="$(echo "$line " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)"
case "$line" in
corridor_light_toggle)
corridor_light_toggle
;;
corridor_light*)
corridor_light "$COLOR_STRING"
;;
lounge_light_toggle)
lounge_light_toggle
;;

View File

@ -28,6 +28,10 @@ GAMMA_LUT=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
get_room_color_string() {
case "$ROOM_NUMBER" in
0)
COLOR="$(echo "$COLOR" | while read -N2 code; do printf "%03d" $((16#$code)); done)"
echo "$COLOR$COLOR"
;;
1)
COLOR_A="$(echo "$COLOR" | sed "s/\(..\)\(..\)\(..\)/\\\x\2\\\x\1\\\x\3/g")"
COLOR_B="$(echo "$COLOR" | while read -N2 code; do printf "%03d" $((16#$code)); done)"
@ -49,6 +53,38 @@ esac
set_room_color() {
case "$ROOM_NUMBER" in
0)
find "$(dirname "$TMPFILE_PID_BASE")" -name "$(basename "${TMPFILE_PID_BASE}_0")" -exec sh -c 'cat {} | xargs kill; rm -f {}' \;
COLOR="$(echo "$STATE" | cut -d";" -f1 | cut -d"|" -f2)"
if [ "${COLOR:0:1}" == "!" ]; then
(
R1=$(( RANDOM % 256 )); G1=$(( RANDOM % 256 )); B1=$(( RANDOM % 256 ))
R2=$(( RANDOM % 256 )); G2=$(( RANDOM % 256 )); B2=$(( RANDOM % 256 ))
R3=$(( RANDOM % 256 )); G3=$(( RANDOM % 256 )); B3=$(( RANDOM % 256 ))
while true; do
R1_=$(( RANDOM % 256 )); G1_=$(( RANDOM % 256 )); B1_=$(( RANDOM % 256 ))
R2_=$(( RANDOM % 256 )); G2_=$(( RANDOM % 256 )); B2_=$(( RANDOM % 256 ))
R3_=$(( RANDOM % 256 )); G3_=$(( RANDOM % 256 )); B3_=$(( RANDOM % 256 ))
while [ $R1 -ne $R1_ -o $G1 -ne $G1_ -o $B1 -ne $B1_ -o\
$R2 -ne $R2_ -o $G2 -ne $G2_ -o $B2 -ne $B2_ -o\
$R3 -ne $R3_ -o $G3 -ne $G3_ -o $B3 -ne $B3_ ]; do
DR1=$(sign $(($R1_-$R1))); DG1=$(sign $(($G1_-$G1))); DB1=$(sign $(($B1_-$B1)))
DR2=$(sign $(($R2_-$R2))); DG2=$(sign $(($G2_-$G2))); DB2=$(sign $(($B2_-$B2)))
DR3=$(sign $(($R3_-$R3))); DG3=$(sign $(($G3_-$G3))); DB3=$(sign $(($B3_-$B3)))
R1=$(($R1+$DR1)); G1=$(($G1+$DG1)); B1=$(($B1+$DB1))
R2=$(($R2+$DR2)); G2=$(($G2+$DG2)); B2=$(($B2+$DB2))
R3=$(($R3+$DR3)); G3=$(($G3+$DG3)); B3=$(($B3+$DB3))
echo "$R1 $G1 $B1 $R1 $G1 $B1 $R2 $G2 $B2 $R2 $G2 $B2 $R3 $G3 $B3 $R3 $G3 $B3" |\
while read code; do printf "%03d" $code; done > /dev/udp/172.23.92.19/31302 &
sleep .3
done
done
) &
echo $! > ${TMPFILE_PID_BASE}_0
else
for i in {1..5}; do (echo -en "$COLOR" > /dev/udp/172.23.92.19/31302 &); sleep .01; done
fi
;;
1)
find "$(dirname "$TMPFILE_PID_BASE")" -name "$(basename "${TMPFILE_PID_BASE}_1_*")" -exec sh -c 'cat {} | xargs kill; rm -f {}' \;
COLOR_A="$(echo "$STATE" | cut -d";" -f1 | cut -d"|" -f1)"
@ -69,7 +105,7 @@ case "$ROOM_NUMBER" in
while [ $R1 -ne $R1_ -o $G1 -ne $G1_ -o $B1 -ne $B1_ -o $R2 -ne $R2_ -o $G2 -ne $G2_ -o $B2 -ne $B2_ ]; do
DR1=$(sign $(($R1_-$R1))); DG1=$(sign $(($G1_-$G1))); DB1=$(sign $(($B1_-$B1)))
DR2=$(sign $(($R2_-$R2))); DG2=$(sign $(($G2_-$G2))); DB2=$(sign $(($B2_-$B2)))
R1=$(($R1+$DR1)); G1=$((G1+$DG1)); B1=$(($B1+$DB1)); R2=$(($R2+$DR2)); G2=$(($G2+$DG2)); B2=$(($B2+$DB2))
R1=$(($R1+$DR1)); G1=$(($G1+$DG1)); B1=$(($B1+$DB1)); R2=$(($R2+$DR2)); G2=$(($G2+$DG2)); B2=$(($B2+$DB2))
echo "$R1 $G1 $B1 $R2 $G2 $B2" |\
while read code; do printf "%03d" $code; done > /dev/udp/172.23.92.16/31302 &
# echo -en "255204017255204017" > /dev/udp/172.23.92.16/31302 &
@ -139,7 +175,7 @@ case "$ROOM_NUMBER" in
esac
}
if ! [[ "$ROOM_NUMBER" =~ ^[0-9]+$ ]] || ! [ "$ROOM_NUMBER" -gt 0 -a "$ROOM_NUMBER" -le "$ROOM_COUNT" ]; then
if ! [[ "$ROOM_NUMBER" =~ ^[0-9]+$ ]] || ! [ "$ROOM_NUMBER" -ge 0 -a "$ROOM_NUMBER" -le "$ROOM_COUNT" ]; then
echo "ERROR: please specify a valid room number" >&1
exit 1
fi

View File

@ -19,6 +19,18 @@ status() {
echo "$STATUS"
}
corridor_light() {
COMMAND="corridor_light $1"
echo "$COMMAND" >> $COMMAND_FILE
echo "OK $COMMAND"
}
corridor_light_toggle() {
COMMAND="corridor_light_toggle"
echo "$COMMAND" >> $COMMAND_FILE
echo "OK $COMMAND"
}
lounge_light() {
COMMAND="lounge_light $1"
echo "$COMMAND" >> $COMMAND_FILE
@ -49,6 +61,12 @@ case "$COMMAND" in
status)
status
;;
corridor_light_toggle)
corridor_light_toggle
;;
corridor_light\ *)
corridor_light $COLOR_STRING
;;
lounge_light_toggle)
lounge_light_toggle
;;
@ -63,7 +81,7 @@ case "$COMMAND" in
;;
*)
echo "ERROR; available commands:" >&2
echo "status, lounge_light [string], lounge_light_toggle, e-lab_light [string], e-lab_light_toggle" >&2
echo "status, corridor_light [string], corridor_light_toggle, lounge_light [string], lounge_light_toggle, e-lab_light [string], e-lab_light_toggle" >&2
exit 1
;;
esac