mswitch abstract
[svn42.git] / raspberrypi_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 VALID_ONOFF_IDS="ceiling1 ceiling2 ceiling3 ceiling4 ceiling5 ceiling6"
24 VALID_SEND_IDS=""
25
26 DESC_ceiling1="Decke Leinwand (S)"
27 DESC_ceiling2 ="Decke E-Labor (SSW)"
28 DESC_ceiling3 ="Decke Eingang (W)"
29 DESC_ceiling4 ="Decke Durchgang (O)"
30 DESC_ceiling5 ="Decke Auslage (N)"
31 DESC_ceiling6 ="Decke Küche (NNO)"
32
33 echo "Content-type: text/html"
34 echo ""
35 echo "<html>"
36 echo "<head>"
37 echo "<title>Realraum Relay Power</title>"
38 echo '<script type="text/javascript">'
39
40 echo 'function callbackUpdateButtons(req) {
41   if (req.status != 200) {
42     return;
43   }
44   var data = JSON.parse(req.responseText);
45   for (var keyid in data) {
46     on_btn = document.getElementById("onbtn_"+keyid);
47     off_btn = document.getElementById("offbtn_"+keyid);
48     if (on_btn && off_btn)
49     {
50       on_btn.className = "onbutton";
51       off_btn.className = "offbutton";
52       if (data[keyid])
53       { on_btn.className += " enableborder"; }
54       else
55       { off_btn.className += " enableborder"; }
56     }
57   }
58 }'
59
60 echo 'function updateButtons(uri) {
61   var req = new XMLHttpRequest;
62   req.overrideMimeType("application/json");
63   req.open("GET", uri, true);
64   req.onload  = function() {callbackUpdateButtons(req)};
65   req.setRequestHeader("googlechromefix","");
66   req.send(null);
67 }'
68
69 echo 'function sendMultiButton( str ) {
70  url = "/cgi-bin/mswitch.cgi?"+str;
71   updateButtons(url);
72 }'
73
74 echo 'setInterval("updateButtons(\"/cgi-bin/mswitch.cgi\");", 30*1000);'
75 echo 'updateButtons("/cgi-bin/mswitch.cgi");'
76
77 echo '</script>'
78 echo '<style>'
79 echo 'div.switchbox {'
80 echo '    float:left;'
81 echo '    margin:2px;'
82 #echo '    max-width:236px;'
83 echo '    max-width:300px;'
84 echo '    font-size:10pt;'
85 echo '    border:1px solid black;'
86 #echo '    height: 32px;'
87 echo '    padding:0;'
88 echo '}'
89
90 echo 'div.switchnameleft {'
91 echo '    width:12em; display:inline-block; vertical-align:middle; margin-left:3px;'
92 echo '}'
93
94 echo 'span.alignbuttonsright {'
95 echo '    top:0px; float:right; display:inline-block; text-align:right; padding:0;'
96 echo '}'
97
98 echo 'div.switchnameright {'
99 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;'
100 echo '}'
101
102 echo 'span.alignbuttonsleft {'
103 echo '    float:left; text-align:left; padding:0;'
104 echo '}'
105
106 echo '.onbutton {'
107 echo '    font-size:11pt;'
108 echo '    width: 40px;'
109 echo '    height: 32px;'
110 echo '    background-color: lime;'
111 echo '    margin: 0px;'
112 echo '}'
113
114 echo '.offbutton {'
115 echo '    font-size:11pt;'
116 echo '    width: 40px;'
117 echo '    height: 32px;'
118 echo '    background-color: red;'
119 echo '    margin: 0px;'
120 echo '}'
121
122 echo '.sendbutton {'
123 echo '    font-size:11pt;'
124 echo '    width: 40px;'
125 echo '    height: 32px;'
126 #echo '    background-color: grey;'
127 echo '    margin: 0px;'
128 echo '}'
129
130 echo '.enableborder {
131     font-weight: bold;
132     font-variant: small-caps;
133     border-style: inset;'
134 echo '}'
135 echo '</style>'
136 echo "</head>"
137 echo "<body>"
138 #echo "<h1>Realraum rf433ctl</h1>"
139 #echo "<div style=\"float:left; border:1px solid black;\">"
140 echo "<div style=\"float:left;\">"
141 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
142 for DISPID in $VALID_ONOFF_IDS; do
143   NAME="$(eval echo -n \$DESC_$DISPID)"
144   [ -z "$NAME" ] && NAME=$DISPID
145
146   echo "<div class=\"switchbox\">"
147   echo "<span class=\"alignbuttonsleft\">"
148   if gpio_is_on $DISPID; then
149   echo " <button id=\"onbtn_$DISPID\" class=\"onbutton enableborder\" onClick='sendMultiButton(\"$DISPID=1\");'>On</button>"
150   echo " <button id=\"offbtn_$DISPID\" class=\"offbutton\" onClick='sendMultiButton(\"$DISPID=0\");'>Off</button>"
151   else
152   echo " <button id=\"onbtn_$DISPID\" class=\"onbutton\" onClick='sendMultiButton(\"$DISPID=1\");'>On</button>"
153   echo " <button id=\"offbtn_$DISPID\" class=\"offbutton enableborder\" onClick='sendMultiButton(\"$DISPID=0\");'>Off</button>"
154   fi
155   echo "</span>"
156   echo -n "<div class=\"switchnameright\">$NAME</div>"
157 #  echo -n "<div class=\"switchnameright\">$NAME ("
158 #  print_gpio_state $DISPID
159 #  echo ")</div>"
160   echo "</div>"
161
162   if [ "$NOFLOAT" = "1" ]; then
163     echo "<br/>"
164   fi
165 done
166
167 #Alle
168 echo "<div class=\"switchbox\">"
169 echo "<span class=\"alignbuttonsleft\">"
170 echo -n " <button class=\"onbutton\" onClick='sendMultiButton(\""
171 for DISPID in $VALID_ONOFF_IDS; do echo -n "$DISPID=1&"; done
172 echo "\");'>On</button>"
173 echo -n " <button class=\"offbutton\" onClick='sendMultiButton(\""
174 for DISPID in $VALID_ONOFF_IDS; do echo -n "$DISPID=0&"; done
175 echo "\");'>Off</button>"
176 echo "</span>"
177 echo -n "<div class=\"switchnameright\">Alle</div>"
178 echo "</div>"
179
180 if [ "$NOFLOAT" = "1" ]; then
181   echo "<br/>"
182 fi
183
184 #Pattern1
185 echo "<div class=\"switchbox\">"
186 echo -n " <button class=\"sendbutton\" onClick='sendMultiButton(\"4=0&23=0&18=1&17=1&22=0&21=0\");'>[&nbsp;|&nbsp;]</button>"
187 echo -n " <button class=\"sendbutton\" onClick='sendMultiButton(\"4=1&23=1&18=0&17=0&22=1&21=1\");'>[|&nbsp;|]</button>"
188 echo -n " <button class=\"sendbutton\" onClick='sendMultiButton(\"4=1&23=1&18=0&17=0&22=0&21=1\");'>[|&nbsp;.]</button>"
189 echo -n " <button class=\"sendbutton\" onClick='sendMultiButton(\"4=0&23=1&18=0&17=1&22=0&21=1\");'>[***]</button>"
190 echo -n " <button class=\"sendbutton\" onClick='sendMultiButton(\"4=1&23=0&18=0&17=0&22=0&21=1\");'>[.&nbsp;*]</button>"
191 echo -n " <button class=\"sendbutton\" onClick='sendMultiButton(\"4=0&23=1&18=0&17=0&22=1&21=0\");'>[*&nbsp;.]</button>"
192 echo "</div>"
193
194 if [ "$NOFLOAT" = "1" ]; then
195   echo "<br/>"
196 fi
197 echo "</div>"
198
199 if [ "$MOBILE" != "1" -a -n "$VALID_SEND_IDS" ]; then
200
201 echo "<div style=\"float:left; border:1px solid black; margin-right:2ex; margin-bottom:2ex;\">"
202
203 ITEMCOUNT=0
204
205 echo "</div>"
206 fi
207 echo "</div>"
208 echo "</body>"
209 echo "</html>"