display state and switch multiple at once
authorBernhard Tittelbach <xro@realraum.at>
Tue, 22 Oct 2013 22:10:57 +0000 (22:10 +0000)
committerBernhard Tittelbach <xro@realraum.at>
Tue, 22 Oct 2013 22:10:57 +0000 (22:10 +0000)
router_gpio_relay_licht/mswitch.cgi [new file with mode: 0755]
router_gpio_relay_licht/switch.cgi

diff --git a/router_gpio_relay_licht/mswitch.cgi b/router_gpio_relay_licht/mswitch.cgi
new file mode 100755 (executable)
index 0000000..6d0d587
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+VALID_ONOFF_IDS="7 18 20"
+GPIOPATH=/sys/class/gpio/gpio
+
+for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do
+  for VALIDID in $VALID_ONOFF_IDS; do
+    if [ "$QUERY" == "$VALIDID=1" ]; then
+      eval "GPIO_$VALIDID"=1
+    elif [ "$QUERY" == "$VALIDID=0" ]; then
+      eval "GPIO_$VALIDID=0"
+    elif [ "$QUERY" == "$VALIDID=q" ]; then
+      eval "GPIO_$VALIDID=q"
+    fi
+  done
+  if [ "$QUERY" == "mobile=1" ]; then
+    MOBILE='1'
+    NOFLOAT='1'
+  elif [ "$QUERY" == "nofloat=1" ]; then
+    NOFLOAT='1'
+  fi
+done
+
+
+print_gpio_state() {
+  GPIOVALUE=$(cat "${GPIOPATH}${1}/value")
+  if [ "$GPIOVALUE" = "1" ]; then
+    echo "1"
+  else
+    echo "0"
+  fi
+}
+
+gpio_is_on() {
+  GPIOVALUE=$(cat "${GPIOPATH}${1}/value")                                                                                                                                    
+  [ "$GPIOVALUE" = "1" ]
+}
+
+echo "Content-type: text/html"
+echo ""
+
+
+for CHECKID in $VALID_ONOFF_IDS; do
+  VAL=""
+  VAL="$(eval echo \$GPIO_$CHECKID)"
+  if [ $VAL == 1 -o $VAL == 0 ]; then
+    echo "$VAL" > "${GPIOPATH}${CHECKID}/value"
+  fi
+  echo -n "$CHECKID:"
+  print_gpio_state $CHECKID
+done
+
+#      echo "<html>"
+#      echo "<head>"
+#      echo "<title>Realraum Relay Switch</title>"
+#      echo '<script type="text/javascript">window.location="/cgi-bin/switch.cgi";</script>'
+#      echo "</head></html>"
+#      exit 0
+
index 9f53097..9406356 100755 (executable)
@@ -25,6 +25,20 @@ GPIOPATH=/sys/class/gpio/gpio
 #VALID_ONOFF_IDS="7 18 20 29"
 VALID_ONOFF_IDS="7 18 20"
 
+print_gpio_state() {
+  GPIOVALUE=$(cat "${GPIOPATH}${1}/value")
+  if [ "$GPIOVALUE" = "1" ]; then
+    echo "ON"
+  else
+    echo "Off"
+  fi
+}
+
+gpio_is_on() {
+  GPIOVALUE=$(cat "${GPIOPATH}${1}/value")                                                                                                                                    
+  [ "$GPIOVALUE" = "1" ]
+}
+
 if [ "$POWER" == "1" -o "$POWER" == "0" ]; then
   for CHECKID in $VALID_ONOFF_IDS ; do 
     if [ "$CHECKID" == "$ID" ]; then
@@ -113,6 +127,12 @@ echo '    height: 32px;'
 #echo '    background-color: grey;'
 echo '    margin: 0px;'
 echo '}'
+
+echo '.enableborder {
+    font-weight: bold;
+    font-variant: small-caps;
+    border-style: inset;'
+echo '}'
 echo '</style>'
 echo "</head>"
 echo "<body>"
@@ -121,15 +141,23 @@ echo "<body>"
 echo "<div style=\"float:left;\">"
 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
 for DISPID in $VALID_ONOFF_IDS; do
-  NAME="$(eval echo \$DESC_$DISPID)"
+  NAME="$(eval echo -n \$DESC_$DISPID)"
   [ -z "$NAME" ] && NAME=$DISPID
 
 echo "<div class=\"switchbox\">"
   echo "<span class=\"alignbuttonsleft\">"
-  echo " <button class=\"onbutton\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
+  if gpio_is_on $DISPID; then
+  echo " <button class=\"onbutton enableborder\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
   echo " <button class=\"offbutton\" onClick='sendButton(\"0\",\"$DISPID\");'>Off</button>"
+  else
+  echo " <button class=\"onbutton\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
+  echo " <button class=\"offbutton enableborder\" onClick='sendButton(\"0\",\"$DISPID\");'>Off</button>"
+  fi
   echo "</span>"
-  echo "<div class=\"switchnameright\">$NAME</div>"
+  echo -n "<div class=\"switchnameright\">$NAME</div>"
+#  echo -n "<div class=\"switchnameright\">$NAME ("
+#  print_gpio_state $DISPID
+#  echo ")</div>"
   echo "</div>"
   
   if [ "$NOFLOAT" == "1" ]; then