X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=raspberrypi_gpio_relay_licht%2Fmswitch.cgi;h=d62bce95738112b66aecb1d0bb9cb3310af9d543;hb=daad6e004a0ec90276fbc34b86547e545f3fbe05;hp=adf1d1914050d24c4b4fed4fb06406c176ab0e40;hpb=da5a79fd167a2123c0e4b3d97f72539d4da9e76c;p=svn42.git diff --git a/raspberrypi_gpio_relay_licht/mswitch.cgi b/raspberrypi_gpio_relay_licht/mswitch.cgi index adf1d19..d62bce9 100755 --- a/raspberrypi_gpio_relay_licht/mswitch.cgi +++ b/raspberrypi_gpio_relay_licht/mswitch.cgi @@ -1,14 +1,29 @@ #!/bin/zsh -VALID_ONOFF_IDS=(4 17 18 21 22 23) +VALID_ONOFF_IDS=(ceiling1 ceiling2 ceiling3 ceiling4 ceiling5 ceiling6) +VALID_GPIO_IDS=(4 23 18 17 22 21) +local -A IDGPIOMAP +local -A GPIOIDMAP +IDGPIOMAP[ceiling1]=4 +IDGPIOMAP[ceiling2]=23 +IDGPIOMAP[ceiling3]=18 +IDGPIOMAP[ceiling4]=17 +IDGPIOMAP[ceiling5]=22 +IDGPIOMAP[ceiling6]=21 GPIOPATH=/sys/class/gpio/gpio +SAVESTATE=/var/log/licht/mswitch.state + +for k v in ${(kv)IDGPIOMAP}; do + GPIOIDMAP[$v]=$k +done + local -A GPIOS for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do for VALIDID in $VALID_ONOFF_IDS; do if [ "$QUERY" = "$VALIDID=1" ]; then - GPIOS[$VALIDID]=1 + GPIOS[$IDGPIOMAP[$VALIDID]]=1 elif [ "$QUERY" = "$VALIDID=0" ]; then - GPIOS[$VALIDID]=0 + GPIOS[$IDGPIOMAP[$VALIDID]]=0 fi done if [ "$QUERY" = "mobile=1" ]; then @@ -21,7 +36,8 @@ done print_gpio_state() { - GPIOVALUE=$(cat "${GPIOPATH}${1}/value") + GPIO=${IDGPIOMAP[$1]} + GPIOVALUE=$(cat "${GPIOPATH}${GPIO}/value") if [[ $GPIOVALUE == "0" ]]; then echo -n "true" else @@ -29,8 +45,19 @@ print_gpio_state() { fi } +print_gpio_state_10() { + GPIO=${IDGPIOMAP[$1]} + GPIOVALUE=$(cat "${GPIOPATH}${GPIO}/value") + if [[ $GPIOVALUE == "0" ]]; then + echo -n "1" + else + echo -n "0" + fi +} + gpio_is_on() { - GPIOVALUE=$(cat "${GPIOPATH}${1}/value") + GPIO=${IDGPIOMAP[$1]} + GPIOVALUE=$(cat "${GPIOPATH}${GPIO}/value") [ "$GPIOVALUE" = "0" ] } @@ -39,15 +66,18 @@ echo "" local -a GPIOSTATES for CHECKID in $VALID_ONOFF_IDS; do - VAL=$GPIOS[$CHECKID] + VAL=$GPIOS[$IDGPIOMAP[$CHECKID]] if [[ $VAL == 1 || $VAL == 0 ]]; then [[ $VAL == 1 ]] && VAL=0 || VAL=1 - echo "$VAL" > "${GPIOPATH}${CHECKID}/value" + echo "$VAL" > "${GPIOPATH}${IDGPIOMAP[$CHECKID]}/value" fi GPIOSTATES+=(\"${CHECKID}\":"$(print_gpio_state $CHECKID)") + URISTATES+=("${CHECKID}=$(print_gpio_state_10 $CHECKID)") done JSON_STATE="{${(j:,:)GPIOSTATES}}" print ${(q)JSON_STATE} if ((#GPIOS > 0)); then print "[$(date +%s),\"$REMOTE_ADDR\",${(q)JSON_STATE}]," >> /var/log/licht/mswitch.log + echo -n "${(j:&:)URISTATES}">$SAVESTATE fi +