display state and switch multiple at once
[svn42.git] / router_gpio_relay_licht / switch.cgi
1 #!/bin/sh
2
3 for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do
4   for VALUE in `echo $QUERY | tr '=' ' '`; do
5     if [ "$VALUE" == "id" ]; then
6       ID='?'
7     elif [ "$ID" == "?" ]; then
8       ID=$VALUE
9     elif [ "$VALUE" == "power" ]; then
10       POWER='?'
11     elif [ "$POWER" == "?" ]; then
12       POWER=$VALUE
13     elif [ "$VALUE" == "mobile" ]; then
14       MOBILE='1'
15       NOFLOAT='1'
16     elif [ "$VALUE" == "nofloat" ]; then
17       NOFLOAT='1'
18     fi
19     i=$i+1
20   done
21 done
22
23
24 GPIOPATH=/sys/class/gpio/gpio
25 #VALID_ONOFF_IDS="7 18 20 29"
26 VALID_ONOFF_IDS="7 18 20"
27
28 print_gpio_state() {
29   GPIOVALUE=$(cat "${GPIOPATH}${1}/value")
30   if [ "$GPIOVALUE" = "1" ]; then
31     echo "ON"
32   else
33     echo "Off"
34   fi
35 }
36
37 gpio_is_on() {
38   GPIOVALUE=$(cat "${GPIOPATH}${1}/value")                                                                                                                                    
39   [ "$GPIOVALUE" = "1" ]
40 }
41
42 if [ "$POWER" == "1" -o "$POWER" == "0" ]; then
43   for CHECKID in $VALID_ONOFF_IDS ; do 
44     if [ "$CHECKID" == "$ID" ]; then
45       echo "$POWER" > "${GPIOPATH}${ID}/value"
46       echo "Content-type: text/html"
47       echo ""
48       echo "<html>"
49       echo "<head>"
50       echo "<title>Realraum Relay Switch</title>"
51       echo '<script type="text/javascript">window.location="/cgi-bin/switch.cgi";</script>'
52       echo "</head></html>"
53       exit 0
54     fi
55   done
56 fi
57
58 DESC_7="Decke Links Vorne"
59 DESC_20="Decke Rechts Vorne"
60 DESC_18="Decke Rechts Mitte"
61 #DESC_29="GPIO Nicht Belegt"
62
63 echo "Content-type: text/html"
64 echo ""
65 echo "<html>"
66 echo "<head>"
67 echo "<title>Realraum Relay Power</title>"
68 echo '<script type="text/javascript">'
69 echo 'function sendButton( onoff, btn )'
70 echo '{'
71 echo ' var req = new XMLHttpRequest();'
72 echo ' url = "/cgi-bin/switch.cgi?power="+onoff+"&id="+btn;'
73 echo ' req.open("GET", url ,false);'
74 echo ' //google chrome workaround'
75 echo ' req.setRequestHeader("googlechromefix","");'
76 echo ' req.send(null);'
77 echo '}'
78 echo '</script>'
79 echo '<style>'
80 echo 'div.switchbox {'
81 echo '    float:left;'
82 echo '    margin:2px;'
83 #echo '    max-width:236px;'
84 echo '    max-width:300px;'
85 echo '    font-size:10pt;'
86 echo '    border:1px solid black;'
87 #echo '    height: 32px;'
88 echo '    padding:0;'
89 echo '}'
90   
91 echo 'div.switchnameleft {'
92 echo '    width:12em; display:inline-block; vertical-align:middle; margin-left:3px;'
93 echo '}'
94
95 echo 'span.alignbuttonsright {'
96 echo '    top:0px; float:right; display:inline-block; text-align:right; padding:0;'
97 echo '}'
98
99 echo 'div.switchnameright {'
100 echo '    width:12em; display:inline-block; vertical-align:middle; float:right; display:inline-block; margin-left:1ex; margin-right:3px; margin-top:3px; margin-bottom:3px;'
101 echo '}'
102
103 echo 'span.alignbuttonsleft {'
104 echo '    float:left; text-align:left; padding:0;'
105 echo '}'
106
107 echo '.onbutton {'
108 echo '    font-size:11pt;'
109 echo '    width: 40px;'
110 echo '    height: 32px;'
111 echo '    background-color: lime;'
112 echo '    margin: 0px;'
113 echo '}'
114
115 echo '.offbutton {'
116 echo '    font-size:11pt;'
117 echo '    width: 40px;'
118 echo '    height: 32px;'
119 echo '    background-color: red;'
120 echo '    margin: 0px;'
121 echo '}'
122
123 echo '.sendbutton {'
124 echo '    font-size:11pt;'
125 echo '    width: 40px;'
126 echo '    height: 32px;'
127 #echo '    background-color: grey;'
128 echo '    margin: 0px;'
129 echo '}'
130
131 echo '.enableborder {
132     font-weight: bold;
133     font-variant: small-caps;
134     border-style: inset;'
135 echo '}'
136 echo '</style>'
137 echo "</head>"
138 echo "<body>"
139 #echo "<h1>Realraum rf433ctl</h1>"
140 #echo "<div style=\"float:left; border:1px solid black;\">"
141 echo "<div style=\"float:left;\">"
142 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
143 for DISPID in $VALID_ONOFF_IDS; do
144   NAME="$(eval echo -n \$DESC_$DISPID)"
145   [ -z "$NAME" ] && NAME=$DISPID
146
147 echo "<div class=\"switchbox\">"
148   echo "<span class=\"alignbuttonsleft\">"
149   if gpio_is_on $DISPID; then
150   echo " <button class=\"onbutton enableborder\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
151   echo " <button class=\"offbutton\" onClick='sendButton(\"0\",\"$DISPID\");'>Off</button>"
152   else
153   echo " <button class=\"onbutton\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
154   echo " <button class=\"offbutton enableborder\" onClick='sendButton(\"0\",\"$DISPID\");'>Off</button>"
155   fi
156   echo "</span>"
157   echo -n "<div class=\"switchnameright\">$NAME</div>"
158 #  echo -n "<div class=\"switchnameright\">$NAME ("
159 #  print_gpio_state $DISPID
160 #  echo ")</div>"
161   echo "</div>"
162   
163   if [ "$NOFLOAT" == "1" ]; then
164     echo "<br/>"
165   fi 
166 done
167
168 echo "</div>"
169
170 if [ "$MOBILE" != "1" ]; then                                                             
171
172 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
173
174 ITEMCOUNT=0
175
176 for DISPID in $VALID_SEND_IDS; do
177   ITEMCOUNT=$((ITEMCOUNT+1))
178   NAME="$(eval echo \$DESC_$DISPID)"
179   [ -z "$NAME" ] && NAME=$DISPID
180   
181   echo "<div class=\"switchbox\">"
182   echo "<span class=\"alignbuttonsleft\">"
183   echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"$DISPID\");'> </button>"
184   echo "</span>"
185   echo "<div class=\"switchnameright\">$NAME</div>"
186   echo "</div>"
187   if [ "$NOFLOAT" == "1" -a $((ITEMCOUNT % 2 )) -ne 1 ]; then
188     echo "<br/>"
189   fi 
190   
191 done
192 echo "</div>"
193
194  if [ "$NOFLOAT" == "1" ]; then
195     echo "<div style=\"float:left; border:1px solid black;\">"
196     tail -n+107 /www/ymhremote.html | head -n 5
197     echo "</div>"
198  fi 
199
200 echo "<div style=\"float:left; border:1px solid black; margin-top:5px;\">"
201 for DISPID in $VALID_BANSHEE_IDS $VALID_CAM_MOTOR_IDS; do
202   NAME="$(eval echo \$DESC_$DISPID)"
203   [ -z "$NAME" ] && NAME=$DISPID
204   
205   echo "<div class=\"switchbox\">"
206   echo "<span class=\"alignbuttonsleft\">"
207   echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"$DISPID\");'> </button>"
208   echo "</span>"
209   echo "<div class=\"switchnameright\">$NAME</div>"
210   echo "</div>"
211   if [ "$NOFLOAT" == "1" ]; then
212     echo "<br/>"
213   fi 
214
215 done
216 echo "</div>"
217 fi
218 echo "</div>"
219 echo "</body>"
220 echo "</html>"