3 VALID_ONOFF_IDS=(ceiling1 ceiling2 ceiling3 ceiling4 ceiling5 ceiling6)
4 VALID_GPIO_IDS=(4 23 18 17 22 21)
10 IDGPIOMAP[ceiling4]=17
11 IDGPIOMAP[ceiling5]=22
12 IDGPIOMAP[ceiling6]=21
13 GPIOPATH=/sys/class/gpio/gpio
14 SAVESTATE=/var/log/licht/mswitch.state
16 for k v in ${(kv)IDGPIOMAP}; do
21 for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do
22 for VALIDID in $VALID_ONOFF_IDS; do
23 if [ "$QUERY" = "$VALIDID=1" ]; then
24 GPIOS[$IDGPIOMAP[$VALIDID]]=1
25 elif [ "$QUERY" = "$VALIDID=0" ]; then
26 GPIOS[$IDGPIOMAP[$VALIDID]]=0
29 if [ "$QUERY" = "mobile=1" ]; then
32 elif [ "$QUERY" = "nofloat=1" ]; then
40 GPIOVALUE=$(cat "${GPIOPATH}${GPIO}/value")
41 if [[ $GPIOVALUE == "0" ]]; then
48 print_gpio_state_10() {
50 GPIOVALUE=$(cat "${GPIOPATH}${GPIO}/value")
51 if [[ $GPIOVALUE == "0" ]]; then
60 GPIOVALUE=$(cat "${GPIOPATH}${GPIO}/value")
61 [ "$GPIOVALUE" = "0" ]
64 echo "Content-type: text/html"
68 for CHECKID in $VALID_ONOFF_IDS; do
69 VAL=$GPIOS[$IDGPIOMAP[$CHECKID]]
70 if [[ $VAL == 1 || $VAL == 0 ]]; then
71 [[ $VAL == 1 ]] && VAL=0 || VAL=1
72 echo "$VAL" > "${GPIOPATH}${IDGPIOMAP[$CHECKID]}/value"
74 GPIOSTATES+=(\"${CHECKID}\":"$(print_gpio_state $CHECKID)")
75 URISTATES+=("${CHECKID}=$(print_gpio_state_10 $CHECKID)")
77 JSON_STATE="{${(j:,:)GPIOSTATES}}"
78 print ${(q)JSON_STATE}
79 if ((#GPIOS > 0)); then
80 print "[$(date +%s),\"$REMOTE_ADDR\",${(q)JSON_STATE}]," >> /var/log/licht/mswitch.log
81 echo -n "${(j:&:)URISTATES}">$SAVESTATE