43 lines
928 B
Bash
Executable File
43 lines
928 B
Bash
Executable File
#!/bin/bash
|
|
|
|
TMPFILE=/tmp/light_state
|
|
touch $TMPFILE
|
|
LIGHT_STATE=$(cat $TMPFILE)
|
|
[ -z "$LIGHT_STATE" ] && LIGHT_STATE=0
|
|
|
|
if [ -z "$1" ]; 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 ))
|
|
case $LIGHT_STATE in
|
|
0)
|
|
STATE=$STATE_0
|
|
;;
|
|
1)
|
|
STATE=$STATE_1
|
|
;;
|
|
2)
|
|
STATE=$STATE_2
|
|
;;
|
|
*)
|
|
STATE=$STATE_0
|
|
LIGHT_STATE=0
|
|
;;
|
|
esac
|
|
else
|
|
COLOR_A="$(echo $1 | sed "s/\(..\)\(..\)\(..\)/\\\x\2\\\x\1\\\x\3/g")"
|
|
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
|
|
|
|
for i in {1..5}; do
|
|
echo -en "$(echo "$STATE" | cut -d";" -f1)" > /dev/udp/172.23.92.15/49152 &
|
|
echo -en "$(echo "$STATE" | cut -d";" -f2)" > /dev/udp/172.23.92.16/31302 &
|
|
|
|
sleep .01
|
|
done
|
|
|
|
echo $LIGHT_STATE > $TMPFILE
|