implemented support for light control in multiple rooms
This commit is contained in:
parent
cc932b4d0f
commit
db00dbb113
|
@ -3,11 +3,11 @@
|
||||||
COMMAND_FILE=/tmp/command
|
COMMAND_FILE=/tmp/command
|
||||||
|
|
||||||
lounge_light() {
|
lounge_light() {
|
||||||
./light.sh $1
|
./light.sh 1 "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
lounge_light_toggle() {
|
lounge_light_toggle() {
|
||||||
./light.sh
|
./light.sh 1
|
||||||
}
|
}
|
||||||
|
|
||||||
cd "$(dirname $0)"
|
cd "$(dirname $0)"
|
||||||
|
|
86
light.sh
86
light.sh
|
@ -1,15 +1,75 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
TMPFILE=/tmp/light_state
|
TMPFILE_BASE=/tmp/light_state
|
||||||
touch $TMPFILE
|
ROOM_NUMBER="$1"
|
||||||
LIGHT_STATE=$(cat $TMPFILE)
|
COLOR="$2"
|
||||||
|
|
||||||
|
ROOM_COUNT=3
|
||||||
|
STATE_0="a\x00\x03\x00\x00\x00|000000000000000000;\
|
||||||
|
000000000000000000;\
|
||||||
|
000000000000000000"
|
||||||
|
STATE_1="a\x00\x03\xff\xff\xff|255255255255255255;\
|
||||||
|
000000000000000000;\
|
||||||
|
000000000000000000"
|
||||||
|
STATE_2="n\x00\x02\x01\x00|170000070150000050;\
|
||||||
|
000000000000000000;\
|
||||||
|
000000000000000000"
|
||||||
|
|
||||||
|
get_room_color_string() {
|
||||||
|
case "$ROOM_NUMBER" in
|
||||||
|
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)"
|
||||||
|
echo "a\x00\x03$COLOR_A|$COLOR_B$COLOR_B"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo ""
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo ""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "ERROR: wrong room number, internal problem detected" >&1
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
set_room_color() {
|
||||||
|
case "$ROOM_NUMBER" in
|
||||||
|
1)
|
||||||
|
echo -en "$(echo "$STATE" | cut -d";" -f1 | cut -d"|" -f1)" > /dev/udp/172.23.92.15/49152 &
|
||||||
|
echo -en "$(echo "$STATE" | cut -d";" -f1 | cut -d"|" -f2)" > /dev/udp/172.23.92.16/31302 &
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
# echo -en "$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f1)" > /dev/null
|
||||||
|
# echo -en "$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f2)" > /dev/null
|
||||||
|
echo "not implemented" >&1
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
# echo -en "$(echo "$STATE" | cut -d";" -f3 | cut -d"|" -f1)" > /dev/null
|
||||||
|
# echo -en "$(echo "$STATE" | cut -d";" -f3 | cut -d"|" -f2)" > /dev/null
|
||||||
|
echo "not implemented" >&1
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "ERROR: wrong room number, internal problem detected" >&1
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! [[ "$ROOM_NUMBER" =~ ^[0-9]+$ ]] || ! [ "$ROOM_NUMBER" -gt 0 -a "$ROOM_NUMBER" -le "$ROOM_COUNT" ]; then
|
||||||
|
echo "ERROR: please specify a valid room number" >&1
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
touch "${TMPFILE_BASE}_$ROOM_NUMBER"
|
||||||
|
LIGHT_STATE=$(cat "${TMPFILE_BASE}_$ROOM_NUMBER")
|
||||||
[ -z "$LIGHT_STATE" ] && LIGHT_STATE=0
|
[ -z "$LIGHT_STATE" ] && LIGHT_STATE=0
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$COLOR" ]; then
|
||||||
STATE_0="a\x00\x03\x00\x00\x00;000000000000000000"
|
|
||||||
STATE_1="a\x00\x03\xff\xff\xff;255255255255255255"
|
|
||||||
STATE_2="n\x00\x02\x01\x00;170000070150000050"
|
|
||||||
|
|
||||||
LIGHT_STATE=$(( $LIGHT_STATE+1 ))
|
LIGHT_STATE=$(( $LIGHT_STATE+1 ))
|
||||||
case $LIGHT_STATE in
|
case $LIGHT_STATE in
|
||||||
0)
|
0)
|
||||||
|
@ -27,16 +87,12 @@ if [ -z "$1" ]; then
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
COLOR_A="$(echo $1 | sed "s/\(..\)\(..\)\(..\)/\\\x\2\\\x\1\\\x\3/g")"
|
STATE="$(get_room_color_string)"
|
||||||
COLOR_B="$(echo $1 | while read -N2 code; do printf "%03d" $((16#$code)); done)"
|
|
||||||
STATE="a\x00\x03$COLOR_A;$COLOR_B$COLOR_B"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for i in {1..5}; do
|
for i in {1..5}; do
|
||||||
echo -en "$(echo "$STATE" | cut -d";" -f1)" > /dev/udp/172.23.92.15/49152 &
|
set_room_color
|
||||||
echo -en "$(echo "$STATE" | cut -d";" -f2)" > /dev/udp/172.23.92.16/31302 &
|
|
||||||
|
|
||||||
sleep .01
|
sleep .01
|
||||||
done
|
done
|
||||||
|
|
||||||
echo $LIGHT_STATE > $TMPFILE
|
echo $LIGHT_STATE > "${TMPFILE_BASE}_$ROOM_NUMBER"
|
||||||
|
|
Loading…
Reference in New Issue