From 93d1b4727a0f55f7951f865d92e1a0a24469ff2f Mon Sep 17 00:00:00 2001 From: Florz Date: Thu, 9 Mar 2017 18:32:17 +0100 Subject: [PATCH 1/8] documented current codes --- README | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README b/README index 6243351..b4a058f 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ Steuerung Stomversorgung im Chaostreff Chemnitz mittels PIFACE 2 -Taster-Codes (k=kurz, l=lang, sl=sehr lang): +Taster-Codes (k=kurz, l=lang): -k l -> diesen Raum an-/ausschalten -k sl -> alle Räume anschalten -sl -> alle Räume ausschalten -k k l -> experimentell (derzeit Licht in der Lounge) +k -> Licht in diesem Raum +l -> alle Räume ausschalten +kk -> diesen Raum an-/ausschalten +kl -> alle Räume anschalten \ No newline at end of file From 85c0c3cc0e9f5a518238db917e5fc9b9b75d91db Mon Sep 17 00:00:00 2001 From: Florian Schlegel Date: Sat, 11 Mar 2017 00:04:46 +0100 Subject: [PATCH 2/8] added additional light in our e-lab --- light.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/light.sh b/light.sh index 2db9e9d..89395a8 100755 --- a/light.sh +++ b/light.sh @@ -12,17 +12,17 @@ sign() { ROOM_COUNT=3 DFAULT_LIGHT_STATE=0 STATE_0="a\x00\x03\x00\x00\x00|000000000000000000;\ - 000000000000000000;\ - 000000000000000000" +a\x00\x03\x00\x00\x00|;\ +000000000000000000" STATE_1="a\x00\x03\xff\xff\xff|255255255255255255;\ - 000000000000000000;\ - 000000000000000000" +a\x00\x03\xff\xff\xff|;\ +000000000000000000" STATE_2="n\x00\x02\x01\x00|!;\ - 000000000000000000;\ - 000000000000000000" +n\x00\x02\x01\x00|;\ +000000000000000000" STATE_3="!/usr/bin/python3 /home/automation/fensterbogenbeleuchtung_animations/animations.py|!;\ - 000000000000000000;\ - 000000000000000000" +a\x00\x03\xff\xff\xff|;\ +000000000000000000" get_room_color_string() { case "$ROOM_NUMBER" in @@ -32,7 +32,8 @@ case "$ROOM_NUMBER" in echo "a\x00\x03$COLOR_A|$COLOR_B$COLOR_B" ;; 2) - echo "" + COLOR_A="$(echo "$COLOR" | sed "s/\(..\)\(..\)\(..\)/\\\x\2\\\x\1\\\x\3/g")" + echo "a\x00\x03$COLOR_A" ;; 3) echo "" @@ -80,12 +81,10 @@ case "$ROOM_NUMBER" in fi ;; 2) - # COLOR_A="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f1)" + COLOR_A="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f1)" # COLOR_B="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f2)" - # echo -en "$COLOR_A" > /dev/null + echo -en "$COLOR_A" > /dev/udp/172.23.92.18/49152 & # echo -en "$COLOR_B" > /dev/null - echo "not implemented" >&1 - exit 1 ;; 3) # COLOR_A="$(echo "$STATE" | cut -d";" -f3 | cut -d"|" -f1)" From 129029cb4fd2e0f44810bbe96511125d91087a52 Mon Sep 17 00:00:00 2001 From: Florian Schlegel Date: Mon, 13 Mar 2017 22:46:52 +0100 Subject: [PATCH 3/8] implemented basic support for main light in e-lab --- light.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/light.sh b/light.sh index 89395a8..322c8b8 100755 --- a/light.sh +++ b/light.sh @@ -12,16 +12,16 @@ sign() { ROOM_COUNT=3 DFAULT_LIGHT_STATE=0 STATE_0="a\x00\x03\x00\x00\x00|000000000000000000;\ -a\x00\x03\x00\x00\x00|;\ +a\x00\x03\x00\x00\x00|000000;\ 000000000000000000" STATE_1="a\x00\x03\xff\xff\xff|255255255255255255;\ -a\x00\x03\xff\xff\xff|;\ +a\x00\x03\xff\xff\xff|FFFFFF;\ 000000000000000000" STATE_2="n\x00\x02\x01\x00|!;\ -n\x00\x02\x01\x00|;\ +n\x00\x02\x01\x00|FFCC11;\ 000000000000000000" STATE_3="!/usr/bin/python3 /home/automation/fensterbogenbeleuchtung_animations/animations.py|!;\ -a\x00\x03\xff\xff\xff|;\ +a\x00\x03\xff\xff\xff|FFCC11;\ 000000000000000000" get_room_color_string() { @@ -81,10 +81,14 @@ case "$ROOM_NUMBER" in fi ;; 2) - COLOR_A="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f1)" - # COLOR_B="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f2)" - echo -en "$COLOR_A" > /dev/udp/172.23.92.18/49152 & - # echo -en "$COLOR_B" > /dev/null + # COLOR_A="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f1)" + COLOR_B="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f2)" + # echo -en "$COLOR_A" > /dev/udp/172.23.92.18/49152 & + COLOR_B_TMP=$COLOR_B + for i in 5 4 3; do + wget -q -O- http://172.23.92.5/ecmd?channel%20$i%20$(printf "%d" "0x${COLOR_B_TMP:0:2}") > /dev/null 2>&1 + COLOR_B_TMP="$(echo "$COLOR_B_TMP" | cut -c3-)" + done ;; 3) # COLOR_A="$(echo "$STATE" | cut -d";" -f3 | cut -d"|" -f1)" From bc4bd6b1216102dc3de29828a20b5248138202b5 Mon Sep 17 00:00:00 2001 From: Florian Schlegel Date: Mon, 13 Mar 2017 22:59:24 +0100 Subject: [PATCH 4/8] implemented shell commands for e-lab lights --- command_watcher.sh | 19 +++++++++++++++++-- light.sh | 2 +- shell.sh | 14 +++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/command_watcher.sh b/command_watcher.sh index 230f20c..dff81ca 100755 --- a/command_watcher.sh +++ b/command_watcher.sh @@ -10,6 +10,14 @@ lounge_light_toggle() { ./light.sh 1 } +e-lab_light() { + ./light.sh 2 "$1" +} + +e-lab_light_toggle() { + ./light.sh 2 +} + cd "$(dirname $0)" rm -f "$COMMAND_FILE" mkfifo "$COMMAND_FILE" @@ -21,16 +29,23 @@ while true; do echo "ERROR: illegal characters" >&2 continue fi + COLOR_STRING="$(echo "$line " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)" case "$line" in lounge_light_toggle) lounge_light_toggle ;; lounge_light*) - lounge_light "$(echo "$line " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)" + lounge_light "$COLOR_STRING" + ;; + e-lab_light_toggle) + e-lab_light_toggle + ;; + e-lab_light*) + e-lab_light "$COLOR_STRING" ;; *) echo "ERROR; available commands:" >&2 - echo "lounge_light lounge_light_toggle" >&2 + echo "lounge_light lounge_light_toggle e-lab_light e-lab_light_toggle" >&2 ;; esac done < "$COMMAND_FILE" diff --git a/light.sh b/light.sh index 322c8b8..dcee1be 100755 --- a/light.sh +++ b/light.sh @@ -33,7 +33,7 @@ case "$ROOM_NUMBER" in ;; 2) COLOR_A="$(echo "$COLOR" | sed "s/\(..\)\(..\)\(..\)/\\\x\2\\\x\1\\\x\3/g")" - echo "a\x00\x03$COLOR_A" + echo "a\x00\x03$COLOR_A|$COLOR" ;; 3) echo "" diff --git a/shell.sh b/shell.sh index a828f84..09aeaa6 100755 --- a/shell.sh +++ b/shell.sh @@ -31,6 +31,18 @@ lounge_light_toggle() { echo "OK $COMMAND" } +e-lab_light() { + COMMAND="e-lab_light $1" + echo "$COMMAND" >> $COMMAND_FILE + echo "OK $COMMAND" +} + +e-lab_light_toggle() { + COMMAND="e-lab_light_toggle" + echo "$COMMAND" >> $COMMAND_FILE + echo "OK $COMMAND" +} + read COMMAND case "$COMMAND" in status) @@ -44,7 +56,7 @@ case "$COMMAND" in ;; *) echo "ERROR; available commands:" >&2 - echo "status, lounge_light [string], lounge_light_toggle" >&2 + echo "status, lounge_light [string], lounge_light_toggle, e-lab_light [string], e-lab_light_toggle" >&2 exit 1 ;; esac From 0e5562767a6442672fa64d568128f0bf54f4b8c3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Mar 2017 22:09:19 +0000 Subject: [PATCH 5/8] implemented light function for button in e-lab --- chch-power.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chch-power.py b/chch-power.py index 9cfd9f4..805ec5d 100644 --- a/chch-power.py +++ b/chch-power.py @@ -89,6 +89,8 @@ def exec_chch_button_cmd(event): if count == 1: if event.pin_num == 0: call(["/home/automation/chch-power/light.sh","1"]) + elif event.pin_num == 1: + call(["/home/automation/chch-power/light.sh","2"]) else: sys.stderr.write("No room specific function for room " + str(event.pin_num) + "\n") # '. .' toggle current room From a3c7afa781f4da6808a074ea0855e27c51a2801d Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Mar 2017 22:45:35 +0000 Subject: [PATCH 6/8] fixed missing shell commands --- shell.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/shell.sh b/shell.sh index 09aeaa6..7cab820 100755 --- a/shell.sh +++ b/shell.sh @@ -44,6 +44,7 @@ e-lab_light_toggle() { } read COMMAND +COLOR_STRING="$(echo "$COMMAND " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)" case "$COMMAND" in status) status @@ -52,7 +53,13 @@ case "$COMMAND" in lounge_light_toggle ;; lounge_light\ *) - lounge_light "$(echo "$COMMAND " | cut -d" " -f2 | grep -oe "[a-z]\?[0-9a-fA-F]*" | head -n1)" + lounge_light $COLOR_STRING + ;; + e-lab_light_toggle) + e-lab_light_toggle + ;; + e-lab_light\ *) + e-lab_light $COLOR_STRING ;; *) echo "ERROR; available commands:" >&2 From 4e0c608ba5481e73002347c146ff4228b96a26a5 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Mar 2017 22:53:06 +0000 Subject: [PATCH 7/8] slight speedup for setting e-lab light --- light.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/light.sh b/light.sh index dcee1be..dcf7d87 100755 --- a/light.sh +++ b/light.sh @@ -86,7 +86,7 @@ case "$ROOM_NUMBER" in # echo -en "$COLOR_A" > /dev/udp/172.23.92.18/49152 & COLOR_B_TMP=$COLOR_B for i in 5 4 3; do - wget -q -O- http://172.23.92.5/ecmd?channel%20$i%20$(printf "%d" "0x${COLOR_B_TMP:0:2}") > /dev/null 2>&1 + wget -q -O- http://172.23.92.5/ecmd?channel%20$i%20$(printf "%d" "0x${COLOR_B_TMP:0:2}") > /dev/null 2>&1 & COLOR_B_TMP="$(echo "$COLOR_B_TMP" | cut -c3-)" done ;; From 1f7761d53c316364ed555bf6db2b5a347be4cd99 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Mar 2017 23:18:15 +0000 Subject: [PATCH 8/8] implemented random color fading for main light in e-lab --- light.sh | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/light.sh b/light.sh index dcf7d87..ed2abd9 100755 --- a/light.sh +++ b/light.sh @@ -21,7 +21,7 @@ STATE_2="n\x00\x02\x01\x00|!;\ n\x00\x02\x01\x00|FFCC11;\ 000000000000000000" STATE_3="!/usr/bin/python3 /home/automation/fensterbogenbeleuchtung_animations/animations.py|!;\ -a\x00\x03\xff\xff\xff|FFCC11;\ +a\x00\x03\xff\xff\xff|!;\ 000000000000000000" get_room_color_string() { @@ -81,16 +81,41 @@ case "$ROOM_NUMBER" in fi ;; 2) + find "$(dirname "$TMPFILE_PID_BASE")" -name "$(basename "${TMPFILE_PID_BASE}_2_*")" -exec sh -c 'cat {} | xargs kill; rm -f {}' \; # COLOR_A="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f1)" COLOR_B="$(echo "$STATE" | cut -d";" -f2 | cut -d"|" -f2)" - # echo -en "$COLOR_A" > /dev/udp/172.23.92.18/49152 & - COLOR_B_TMP=$COLOR_B - for i in 5 4 3; do - wget -q -O- http://172.23.92.5/ecmd?channel%20$i%20$(printf "%d" "0x${COLOR_B_TMP:0:2}") > /dev/null 2>&1 & - COLOR_B_TMP="$(echo "$COLOR_B_TMP" | cut -c3-)" - done + # if [ "${COLOR_B:0:1}" == "!" ]; then + # + # else + # echo -en "$COLOR_A" > /dev/udp/172.23.92.18/49152 & + # fi + if [ "${COLOR_B:0:1}" == "!" ]; then + ( + R=$(( RANDOM % 256 )); G=$(( RANDOM % 256 )); B=$(( RANDOM % 256 )) + while true; do + R_=$(( RANDOM % 256 )); G_=$(( RANDOM % 256 )); B_=$(( RANDOM % 256 )) + while [ $R -ne $R_ -o $G -ne $G_ -o $B -ne $B_ ]; do + DR=$(sign $(($R_-$R))); DG=$(sign $(($G_-$G))); DB=$(sign $(($B_-$B))) + R=$(($R+$DR)); G=$((G+$DG)); B=$(($B+$DB)) + for i in 5:$R 4:$G 3:$B; do + wget -q -O- http://172.23.92.5/ecmd?channel%20$(echo $i | cut -d: -f1)%20$(echo $i | cut -d: -f2) > /dev/null 2>&1 & + COLOR_B_TMP="$(echo "$COLOR_B_TMP" | cut -c3-)" + done + sleep .1 + done + done + ) & + echo $! > ${TMPFILE_PID_BASE}_2_B + else + COLOR_B_TMP=$COLOR_B + for i in 5 4 3; do + wget -q -O- http://172.23.92.5/ecmd?channel%20$i%20$(printf "%d" "0x${COLOR_B_TMP:0:2}") > /dev/null 2>&1 & + COLOR_B_TMP="$(echo "$COLOR_B_TMP" | cut -c3-)" + done + fi ;; 3) + # find "$(dirname "$TMPFILE_PID_BASE")" -name "$(basename "${TMPFILE_PID_BASE}_3_*")" -exec sh -c 'cat {} | xargs kill; rm -f {}' \; # COLOR_A="$(echo "$STATE" | cut -d";" -f3 | cut -d"|" -f1)" # COLOR_B="$(echo "$STATE" | cut -d";" -f3 | cut -d"|" -f2)" # echo -en "$COLOR_A" > /dev/null