diff --git a/light.sh b/light.sh index a4f84cb..2db9e9d 100755 --- a/light.sh +++ b/light.sh @@ -5,6 +5,9 @@ TMPFILE_CUSTOM_BASE=/tmp/light_state_custom TMPFILE_PID_BASE=/tmp/light_state_pid ROOM_NUMBER="$1" COLOR="$2" +sign() { +[ $1 -lt 0 ] && echo "-1"; [ $1 -eq 0 ] && echo "0"; [ $1 -gt 0 ] && echo "1" +} ROOM_COUNT=3 DFAULT_LIGHT_STATE=0 @@ -14,7 +17,7 @@ STATE_0="a\x00\x03\x00\x00\x00|000000000000000000;\ STATE_1="a\x00\x03\xff\xff\xff|255255255255255255;\ 000000000000000000;\ 000000000000000000" -STATE_2="n\x00\x02\x01\x00|170000070150000050;\ +STATE_2="n\x00\x02\x01\x00|!;\ 000000000000000000;\ 000000000000000000" STATE_3="!/usr/bin/python3 /home/automation/fensterbogenbeleuchtung_animations/animations.py|!;\ @@ -55,10 +58,21 @@ case "$ROOM_NUMBER" in fi if [ "${COLOR_B:0:1}" == "!" ]; then ( - while true; do - echo -en "255204017255204017" > /dev/udp/172.23.92.16/31302 & - sleep .5 + R1=$(( RANDOM % 256 )); G1=$(( RANDOM % 256 )); B1=$(( RANDOM % 256 )) + R2=$(( RANDOM % 256 )); G2=$(( RANDOM % 256 )); B2=$(( RANDOM % 256 )) + while true; do + R1_=$(( RANDOM % 256 )); G1_=$(( RANDOM % 256 )); B1_=$(( RANDOM % 256 )) + R2_=$(( RANDOM % 256 )); G2_=$(( RANDOM % 256 )); B2_=$(( 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_ ]; 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)) + 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 & + sleep .1 done + done ) & echo $! > ${TMPFILE_PID_BASE}_1_B else