../..
[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 updateButtons(data)
70 {
71
72 }'
73 echo 'function sendButton( onoff, btn )'
74 echo '{'
75 echo ' var req = new XMLHttpRequest();'
76 echo ' url = "/cgi-bin/switch.cgi?power="+onoff+"&id="+btn;'
77 echo ' req.open("GET", url ,false);'
78 echo ' //google chrome workaround'
79 echo ' req.setRequestHeader("googlechromefix","");'
80 echo ' req.send(null);'
81 echo '}'
82 echo '</script>'
83 echo '<style>'
84 echo 'div.switchbox {'
85 echo '    float:left;'
86 echo '    margin:2px;'
87 #echo '    max-width:236px;'
88 echo '    max-width:300px;'
89 echo '    font-size:10pt;'
90 echo '    border:1px solid black;'
91 #echo '    height: 32px;'
92 echo '    padding:0;'
93 echo '}'
94   
95 echo 'div.switchnameleft {'
96 echo '    width:12em; display:inline-block; vertical-align:middle; margin-left:3px;'
97 echo '}'
98
99 echo 'span.alignbuttonsright {'
100 echo '    top:0px; float:right; display:inline-block; text-align:right; padding:0;'
101 echo '}'
102
103 echo 'div.switchnameright {'
104 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;'
105 echo '}'
106
107 echo 'span.alignbuttonsleft {'
108 echo '    float:left; text-align:left; padding:0;'
109 echo '}'
110
111 echo '.onbutton {'
112 echo '    font-size:11pt;'
113 echo '    width: 40px;'
114 echo '    height: 32px;'
115 echo '    background-color: lime;'
116 echo '    margin: 0px;'
117 echo '}'
118
119 echo '.offbutton {'
120 echo '    font-size:11pt;'
121 echo '    width: 40px;'
122 echo '    height: 32px;'
123 echo '    background-color: red;'
124 echo '    margin: 0px;'
125 echo '}'
126
127 echo '.sendbutton {'
128 echo '    font-size:11pt;'
129 echo '    width: 40px;'
130 echo '    height: 32px;'
131 #echo '    background-color: grey;'
132 echo '    margin: 0px;'
133 echo '}'
134
135 echo '.enableborder {
136     font-weight: bold;
137     font-variant: small-caps;
138     border-style: inset;'
139 echo '}'
140 echo '</style>'
141 echo "</head>"
142 echo "<body>"
143 #echo "<h1>Realraum rf433ctl</h1>"
144 #echo "<div style=\"float:left; border:1px solid black;\">"
145 echo "<div style=\"float:left;\">"
146 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
147 for DISPID in $VALID_ONOFF_IDS; do
148   NAME="$(eval echo -n \$DESC_$DISPID)"
149   [ -z "$NAME" ] && NAME=$DISPID
150
151 echo "<div class=\"switchbox\">"
152   echo "<span class=\"alignbuttonsleft\">"
153   if gpio_is_on $DISPID; then
154   echo " <button id=\"onbtn_$DISPID\" class=\"onbutton enableborder\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
155   echo " <button id=\"offbtn_$DISPID\" class=\"offbutton\" onClick='sendButton(\"0\",\"$DISPID\");'>Off</button>"
156   else
157   echo " <button id=\"onbtn_$DISPID\" class=\"onbutton\" onClick='sendButton(\"1\",\"$DISPID\");'>On</button>"
158   echo " <button id=\"offbtn_$DISPID\" class=\"offbutton enableborder\" onClick='sendButton(\"0\",\"$DISPID\");'>Off</button>"
159   fi
160   echo "</span>"
161   echo -n "<div class=\"switchnameright\">$NAME</div>"
162 #  echo -n "<div class=\"switchnameright\">$NAME ("
163 #  print_gpio_state $DISPID
164 #  echo ")</div>"
165   echo "</div>"
166   
167   if [ "$NOFLOAT" == "1" ]; then
168     echo "<br/>"
169   fi 
170 done
171
172 echo "</div>"
173
174 if [ "$MOBILE" != "1" ]; then                                                             
175
176 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
177
178 ITEMCOUNT=0
179
180 for DISPID in $VALID_SEND_IDS; do
181   ITEMCOUNT=$((ITEMCOUNT+1))
182   NAME="$(eval echo \$DESC_$DISPID)"
183   [ -z "$NAME" ] && NAME=$DISPID
184   
185   echo "<div class=\"switchbox\">"
186   echo "<span class=\"alignbuttonsleft\">"
187   echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"$DISPID\");'> </button>"
188   echo "</span>"
189   echo "<div class=\"switchnameright\">$NAME</div>"
190   echo "</div>"
191   if [ "$NOFLOAT" == "1" -a $((ITEMCOUNT % 2 )) -ne 1 ]; then
192     echo "<br/>"
193   fi 
194   
195 done
196 echo "</div>"
197
198  if [ "$NOFLOAT" == "1" ]; then
199     echo "<div style=\"float:left; border:1px solid black;\">"
200     tail -n+107 /www/ymhremote.html | head -n 5
201     echo "</div>"
202  fi 
203
204 echo "<div style=\"float:left; border:1px solid black; margin-top:5px;\">"
205 for DISPID in $VALID_BANSHEE_IDS $VALID_CAM_MOTOR_IDS; do
206   NAME="$(eval echo \$DESC_$DISPID)"
207   [ -z "$NAME" ] && NAME=$DISPID
208   
209   echo "<div class=\"switchbox\">"
210   echo "<span class=\"alignbuttonsleft\">"
211   echo " <button class=\"sendbutton\" onClick='sendButton(\"on\",\"$DISPID\");'> </button>"
212   echo "</span>"
213   echo "<div class=\"switchnameright\">$NAME</div>"
214   echo "</div>"
215   if [ "$NOFLOAT" == "1" ]; then
216     echo "<br/>"
217   fi 
218
219 done
220 echo "</div>"
221 fi
222 echo "</div>"
223 echo "</body>"
224 echo "</html>"