added light control for corridor
This commit is contained in:
parent
c7ec11a4ea
commit
b40015f22b
|
@ -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
|
||||
;;
|
||||
|
|
40
light.sh
40
light.sh
|
@ -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
|
||||
|
|
20
shell.sh
20
shell.sh
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue