d96a8e809c098de05ff39fa1725ec05babdc7d49
[vuplus_dvbapp-plugin] / fancontrol2 / src / FC2webSite.py
1 # -*- coding: utf-8 -*-
2 from twisted.web import resource, http
3 from globals import *
4 from plugin import *
5 from Sensors import sensors
6 from __init__ import _
7 from Components.config import configfile, config
8
9 import os
10 import datetime
11
12 HeadLine = "Time;Temp;RPM;VLT;PWM;HDD;Status;Temp1;Temp2;Temp3;Temp4;Temp5;Temp6;Temp7;Temp8\r\n"
13
14 ########################################################
15 class FC2web(resource.Resource):
16     
17         title = "FanControl2 Webinterface"
18         isLeaf = False
19    
20         def render(self, req):
21                 req.setHeader('Content-type', 'text/html')
22                 req.setHeader('charset', 'UTF-8')
23
24                 """ rendering server response """
25                 command = req.args.get("cmd",None)
26
27                 html = "<html>"
28                 html += "<head>\n"
29                 html += "<meta http-equiv=\"Content-Language\" content=\"de\">\n"
30                 html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">\n"
31                 html += "<meta http-equiv=\"cache-control\" content=\"no-cache\" />\n"
32                 html += "<meta http-equiv=\"pragma\" content=\"no-cache\" />\n"
33                 html += "<meta http-equiv=\"expires\" content=\"0\">\n"
34                 html += "<meta http-equiv=\"refresh\" content=\"20\">\n"
35                 html += "<title>Fan Control 2 - Info</title>\n"
36                 html += "</head>"
37                 html += "<body bgcolor=\"#666666\" text=\"#FFFFFF\">\n"
38                 html += "<form method=\"POST\" action=\"--WEBBOT-SELF--\">\n"
39                 html += "<table border=\"1\" width=\"500\" bordercolorlight=\"#000000\" bordercolordark=\"#000000\" cellspacing=\"1\"><tr><td bgcolor=\"#000000\" width=\"200\">\n"
40                 html += "<p align=\"center\"><img border=\"0\" src=\"/fancontrol/FC2dreambox.png\" width=\"181\" height=\"10\">\n"
41                 html += "<font color=\"#FFFFFF\"><BR><b>Fan Control 2 - Info</b></font></p>\n"
42                 html += "</td><td bgcolor=\"#000000\">\n"
43                 html += "<p align=\"right\">"
44                 html += BoxStatus()
45                 if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
46                         html += "<a href=\"/fancontrol/chart\"><img border=\"0\" src=\"/fancontrol/FC2Chart.png\" width=\"100\" height=\"40\"></a>\n"
47                 html += "<a href=\"/fancontrol/log\"><img border=\"0\" src=\"/fancontrol/FC2Setup.png\" width=\"100\" height=\"40\"></a></td></tr></table>\n"
48                 html += "<table border=\"1\" width=\"500\" id=\"table1\">\n"
49                 html += "<tr>\n"
50                 html += "<td>%s: <b><font color=\"#FFCC00\">%4.1f °C</font></b></td>\n" % (_("Temperature"),FC2werte[0])
51                 html += "<td>%s: <font color=\"#FFCC00\"><b>%4d rpm</b></font></td>\n" % (_("Speed"),FC2werte[1])
52                 html += "<td>%s: <font color=\"#FFCC00\"><b>%03d</b></font></td>\n" % (_("Voltage"),FC2werte[2])
53                 html += "<td>PWM: <font color=\"#FFCC00\"><b>%03d</b></font></td>\n" % FC2werte[3]
54                 html += "</tr>\n"
55                 html += "</table>\n"
56
57                 html += "<table border=\"1\" width=\"500\">\n"
58                 html += "<tr>\n"
59                 html += "<td>%s °C</td>\n" % _("Sensors")
60                 templist = sensors.getSensorsList(sensors.TYPE_TEMPERATURE)
61                 tempcount = len(templist)
62                 for count in range(tempcount):
63                         html += "<td><font color=\"#FFCC00\">%d</font></td>" % sensors.getSensorValue(count)
64                 if FC2werte[4] > 0:
65                         html += "<td><font size=\"1\">HDD </font><font color=\"#FFCC00\">%d</font></td>\n" % FC2werte[4]
66                 html += "</tr>\n"
67                 html += "</table>\n"
68
69                 html += "<table border=\"1\" width=\"500\">\n"
70                 html += "<tr>\n"
71                 for count in range(0,12):
72                         tmp = ("<BR>-" if FC2stunde[count] == "-" else FC2stunde[count])
73                         html +="<td><p align=\"center\"><font size=\"1\">%02d:00<br><font color=\"#FFCC00\">%s</font></font></td>\n" % (count,tmp)
74                 html += "</tr><tr>\n"
75                 for count in range(12,24):
76                         tmp = ("<BR>-" if FC2stunde[count] == "-" else FC2stunde[count])
77                         html +="<td><p align=\"center\"><font size=\"1\">%02d:00<br><font color=\"#FFCC00\">%s</font></font></td>\n" % (count,tmp)
78                 html += "</tr></table>\n"
79
80                 html += "<script type=\"text/javascript\">\n"
81                 html += "function doLogWrite() {\n"
82                 html += "var iFrameWin = window.myIFrameName;\n"
83                 html += "iFrameWin.document.write('<html><head><title>FC2 Log Window</title></head><body bgcolor=\"#D3D3D3\">');\n"
84                 html += "iFrameWin.document.write('<font size=\"-1\">');\n"
85                 for L in FC2Log:
86                         html += "iFrameWin.document.write('" + L + "<br>');\n"
87                 html += "iFrameWin.document.write('</font>');\n"
88                 html += "iFrameWin.document.write('</body></html>');\n"
89                 html += "iFrameWin.document.close();\n"
90                 html += "}\n"
91                 html += "</script>\n"
92                 html += "<iframe id=\"myIFrameId\" name=\"myIFrameName\" width=\"500\" height=\"320\" marginwidth=\"5\" vspace=\"2\" marginheight=\"5\" frameborder=\"1\" scrolling=\"auto\"></iframe>\n"
93                 html += "<script>doLogWrite();\n"
94                 html += "myIFrameName.document.body.scrollTop = myIFrameName.document.body.scrollHeight*100;\n" 
95                 html += "</script>\n"
96
97                 html += "</form>\n"
98                 html += "Version: %s\n" % Version
99                 html += "</body>\n"
100                 html += "</html>\n"
101
102                 return html
103
104 ##########################################################
105 class FC2webLog(resource.Resource):
106     
107         title = "FanControl2 Webinterface"
108         isLeaf = True
109
110         def render(self, req):
111                 command = req.args.get("cmd",None)
112                 html = ""
113                 if command is None:
114                         req.setHeader('Content-type', 'text/html')
115                         req.setHeader('charset', 'UTF-8')
116
117                         """ rendering server response """
118
119                         html = "<html>"
120                         html += "<head>"
121                         html += "<meta http-equiv=\"Content-Language\" content=\"de\">"
122                         html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">"
123                         html += "<meta http-equiv=\"cache-control\" content=\"no-cache\" />"
124                         html += "<meta http-equiv=\"pragma\" content=\"no-cache\" />"
125                         html += "<meta http-equiv=\"expires\" content=\"0\">"
126                         html += "<meta http-equiv=\"refresh\" content=\"30\">"
127                         html += "<title>Fan Control 2 - Logging</title>"
128                         html += "</head>"
129                         html += "<body bgcolor=\"#666666\" text=\"#FFFFFF\">\n"
130                         html += "<table border=\"1\" width=\"500\" bordercolorlight=\"#000000\" bordercolordark=\"#000000\" cellspacing=\"1\"><tr><td bgcolor=\"#000000\" width=\"200\">\n"
131                         html += "<p align=\"center\"><img border=\"0\" src=\"/fancontrol/FC2dreambox.png\" width=\"181\" height=\"10\">\n"
132                         html += "<font color=\"#FFFFFF\"><BR><b>Fan Control 2 - Logging</b></font></p>\n"
133                         html += "</td><td bgcolor=\"#000000\">\n"
134                         html += "<p align=\"right\">"
135                         html += BoxStatus()
136                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
137                                 html += "<a href=\"/fancontrol/chart\"><img border=\"0\" src=\"/fancontrol/FC2Chart.png\" width=\"100\" height=\"40\"></a>\n"
138                         html += "<a href=\"/fancontrol\"><img border=\"0\" src=\"/fancontrol/FC2Info.png\" width=\"100\" height=\"40\"></a></td></tr></table>\n"
139
140                         html += "<table border=\"1\" width=\"500\">"
141                         html += "<tr><td width=\"50%\" align=\"center\" valign=\"top\">Data Logging "
142                         if config.plugins.FanControl.EnableDataLog.value:
143                                 html += "<font color=\"#00FF00\">%s</font>" % _("active")
144                                 html += "<form method=\"GET\">"
145                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"dataenable\">"
146                                 html += "<input type=\"submit\" value=\"%s\">" % _("turn off")
147                                 html += "</form>"
148                         else:
149                                 html += "<font color=\"#FF0000\">%s</font>" % _("not active")
150                                 html += "<form method=\"GET\">"
151                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"dataenable\">"
152                                 html += "<input type=\"submit\" value=\"%s\">" % _("turn on")
153                                 html += "</form>"
154                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
155                                 s = os.stat(config.plugins.FanControl.LogPath.value + "FC2data.csv")
156                                 if int(s.st_size/1024) == 0:
157                                         html += "<BR>" + _("Filesize : %d %sByte") % (int(s.st_size), "")
158                                 else:
159                                         html += "<BR>" + _("Filesize : %d %sByte") % (int(s.st_size/1024), "k")
160                                 s = os.statvfs(config.plugins.FanControl.LogPath.value)
161                                 html += "<BR>" + _("Disk free : %d MByte") % (int(s.f_bsize * s.f_bavail / 1024 / 1024))
162                                 html += "<form method=\"GET\">"
163                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"data\">"
164                                 html += "<input type=\"submit\" value=\"%s\">" % _("Download")
165                                 html += "</form>"
166                                 html += "<form method=\"GET\">"
167                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"datadel\">"
168                                 html += "<input type=\"submit\" value=\"%s\">" % _("Delete")
169                                 html += "</form>"
170                                 html += "<form method=\"GET\">"
171                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"datadel48h\">"
172                                 html += "<input type=\"submit\" value=\"%s\">" % _("Delete older 48h")
173                                 html += "</form>"
174                         else:
175                                 html += "<BR>" + _("File %s does not exists") % "FC2data.csv"
176
177                         html += "</td><td width=\"50%\" align=\"center\" valign=\"top\">Event Logging "
178                         if config.plugins.FanControl.EnableEventLog.value:
179                                 html += "<font color=\"#00FF00\">%s</font>" % _("active")
180                                 html += "<form method=\"GET\">"
181                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"eventsenable\">"
182                                 html += "<input type=\"submit\" value=\"%s\">" % _("turn off")
183                                 html += "</form>"
184                         else:
185                                 html += "<font color=\"#FF0000\">%s</font>" % _("not active")
186                                 html += "<form method=\"GET\">"
187                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"eventsenable\">"
188                                 html += "<input type=\"submit\" value=\"%s\">" % _("turn on")
189                                 html += "</form>"
190                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2events.txt"):
191                                 s = os.stat(config.plugins.FanControl.LogPath.value + "FC2events.txt")
192                                 if int(s.st_size/1024) == 0:
193                                         html += "<BR>" + _("Filesize : %d %sByte") % (int(s.st_size), "")
194                                 else:
195                                         html += "<BR>" + _("Filesize : %d %sByte") % (int(s.st_size/1024), "k")
196                                 s = os.statvfs(config.plugins.FanControl.LogPath.value)
197                                 html += "<BR>" + _("Disk free : %d MByte") % (int(s.f_bsize * s.f_bavail / 1024 / 1024))
198                                 html += "<form method=\"GET\">"
199                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"events\">"
200                                 html += "<input type=\"submit\" value=\"%s\">" % _("Download")
201                                 html += "</form>"
202                                 html += "<form method=\"GET\">"
203                                 html += "<input type=\"hidden\" name=\"cmd\" value=\"eventsdel\">"
204                                 html += "<input type=\"submit\" value=\"%s\">" % _("Delete")
205                                 html += "</form>"
206 #                               html += "<form method=\"GET\">"
207 #                               html += "<input type=\"hidden\" name=\"cmd\" value=\"eventsdel48h\">"
208 #                               html += "<input type=\"submit\" value=\"%s\">" % _("Delete older 48h")
209 #                               html += "</form>"
210
211                         else:
212                                 html += "<BR>" + _("File %s does not exists") % "FC2events.txt"
213                         html += "</td></tr></table>"
214                         html += _("Logging-Path: %s") % config.plugins.FanControl.LogPath.value
215                         html += "</html>"
216
217                 elif command[0] ==  "data":
218                         req.setResponseCode(http.OK)
219 #                       req.setHeader('Content-type', 'application/octet-stream')
220                         req.setHeader('Content-type', 'application/vnd.ms-excel')
221                         req.setHeader('Content-Disposition', 'attachment;filename=FC2data.csv')
222                         req.setHeader('Content-Length', os.stat(config.plugins.FanControl.LogPath.value + "FC2data.csv").st_size)
223 #                       req.setHeader('Content-Disposition', 'inline;filename=FC2data.csv')
224                         req.setHeader('charset', 'UTF-8')
225                         f = open(config.plugins.FanControl.LogPath.value + "FC2data.csv","r")
226                         html = f.read()
227                         f.close()
228                 elif command[0] ==  "datadel":
229                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
230                                 os.remove(config.plugins.FanControl.LogPath.value + "FC2data.csv")
231                         CreateDataHead()
232                         html = LogRefresh()
233                 elif command[0] ==  "datadel48h":
234                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv") and os.stat(config.plugins.FanControl.LogPath.value + "FC2data.csv").st_size > 10000:
235                                 f = open(config.plugins.FanControl.LogPath.value + "FC2data.csv","a")
236                                 s = f.tell()
237                                 f.close()
238                                 f = open(config.plugins.FanControl.LogPath.value + "FC2data.csv","r")
239                                 f.seek(s-100)
240                                 line = f.readline()
241                                 line = f.readline()
242                                 DT = line.split(";")
243                                 DT = DT[0].split(" ")
244                                 DD = DT[0].split(".")
245                                 DD48h = datetime.date(int(DD[0]),int(DD[1]),int(DD[2])) - datetime.timedelta(2)
246                                 Dfind = "%04d.%02d.%02d %s" % (DD48h.year,DD48h.month,DD48h.day,DT[1])
247                                 f.seek(0)
248                                 line = f.readline()
249                                 fw = open(config.plugins.FanControl.LogPath.value + "FC2data.csv.tmp","w")
250                                 fw.write(HeadLine)
251                                 for line in f.readlines():
252                                         DT = line.split(";")
253                                         if DT[0] > Dfind:
254                                                 fw.write(line)
255                                 f.close()
256                                 fw.close()
257                                 if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
258                                         os.remove(config.plugins.FanControl.LogPath.value + "FC2data.csv")
259                                 if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv.tmp"):
260                                         os.rename(config.plugins.FanControl.LogPath.value + "FC2data.csv.tmp",config.plugins.FanControl.LogPath.value + "FC2data.csv")
261                         html = LogRefresh()
262                 elif command[0] ==  "dataenable":
263                         config.plugins.FanControl.EnableDataLog.value = not config.plugins.FanControl.EnableDataLog.value
264                         CreateDataHead()
265                         config.plugins.FanControl.EnableDataLog.save()
266                         html = LogRefresh()
267
268                 elif command[0] ==  "events":
269                         req.setResponseCode(http.OK)
270                         req.setHeader('Content-type', 'application/octet-stream')
271                         req.setHeader('Content-Disposition', 'attachment;filename=FC2events.txt')
272                         req.setHeader('Content-Length', os.stat(config.plugins.FanControl.LogPath.value + "FC2events.txt").st_size)
273 #                       req.setHeader('Content-Disposition', 'inline;filename=FC2events.txt')
274                         req.setHeader('charset', 'UTF-8')
275                         f = open(config.plugins.FanControl.LogPath.value + "FC2events.txt","r")
276                         html = f.read()
277                         f.close()
278                 elif command[0] ==  "eventsdel":
279                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2events.txt"):
280                                 os.remove(config.plugins.FanControl.LogPath.value + "FC2events.txt")
281                         html = LogRefresh()
282                 elif command[0] ==  "eventsdel48h":
283                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2events.txt"):
284                                 f = open(config.plugins.FanControl.LogPath.value + "FC2events.txt","a")
285                                 s = f.tell()
286                                 f.close()
287                                 f = open(config.plugins.FanControl.LogPath.value + "FC2events.txt","r")
288                                 f.seek(s-100)
289                                 line = f.readline()
290                                 line = f.readline()
291                                 DT = line.split(";")
292                                 DT = DT[0].split(" ")
293                                 DD = DT[0].split(".")
294                                 DD48h = datetime.date(int(DD[0]),int(DD[1]),int(DD[2])) - datetime.timedelta(2)
295                                 Dfind = "%04d.%02d.%02d %s" % (DD48h.year,DD48h.month,DD48h.day,DT[1])
296                                 f.seek(0)
297                                 line = f.readline()
298                                 fw = open(config.plugins.FanControl.LogPath.value + "FC2events.txt.tmp","w")
299                                 fw.write(HeadLine)
300                                 for line in f.readlines():
301                                         DT = line.split(";")
302                                         if DT[0] > Dfind:
303                                                 fw.write(line)
304                                 f.close()
305                                 fw.close()
306                                 if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2events.txt"):
307                                         os.remove(config.plugins.FanControl.LogPath.value + "FC2events.txt")
308                                 if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2events.txt.tmp"):
309                                         os.rename(config.plugins.FanControl.LogPath.value + "FC2events.txt.tmp",config.plugins.FanControl.LogPath.value + "FC2events.txt")
310                         html = LogRefresh()
311                 elif command[0] ==  "eventsenable":
312                         config.plugins.FanControl.EnableEventLog.value = not config.plugins.FanControl.EnableEventLog.value
313                         config.plugins.FanControl.EnableEventLog.save()
314                         html = LogRefresh()
315
316                 return html
317
318 def LogRefresh():
319         h = "<html>"
320         h += "<head>"
321         h += "<meta http-equiv=\"refresh\" content=\"1; url=/fancontrol/log\">"
322         h += "<a href=\"/fancontrol/log\">Execution completed... jump back...</a>"
323         h += "</html>"
324         h += "</head>"
325         return h
326
327 def CreateDataHead():
328         if not os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv") and config.plugins.FanControl.EnableDataLog.value and Free(config.plugins.FanControl.LogPath.value):
329                 try:
330                         f = open(config.plugins.FanControl.LogPath.value + "FC2data.csv","w")
331                         try:
332                                 f.write(HeadLine)
333                         except:
334                                 f.close()
335                 except IOError:
336                         pass
337
338 ##########################################################
339 class FC2webChart(resource.Resource):
340     
341         title = "FanControl2 Webinterface"
342         isLeaf = True
343     
344         def render(self, req):
345                 command = req.args.get("cmd",None)
346                 html = ""
347                 if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
348                         req.setHeader('Content-type', 'text/html')
349                         req.setHeader('charset', 'UTF-8')
350
351                         """ rendering server response """
352
353                         f = open(config.plugins.FanControl.LogPath.value + "FC2data.csv","a")
354                         s = f.tell()
355                         f.close()
356                         if s < 150:
357                                 html = "<html><body><html>Not enough Data!</body></html>"
358                                 return html
359                         f = open(config.plugins.FanControl.LogPath.value + "FC2data.csv","r")
360                         f.seek(s-100)
361                         line = f.readline()
362                         line = f.readline()
363                         DT = line.split(";")
364                         DT = DT[0].split(" ")
365                         DD = DT[0].split(".")
366                         DD48h = datetime.date(int(DD[0]),int(DD[1]),int(DD[2])) - datetime.timedelta(2)
367                         Dfind = "%04d.%02d.%02d %s" % (DD48h.year,DD48h.month,DD48h.day,DT[1])
368                         f.seek(0)
369                         line = f.readline()
370                         Anzahl = 0
371                         for line in f.readlines():
372                                 DT = line.split(";")
373                                 if DT[0] > Dfind:
374                                         Anzahl += 1
375 #                       Anzahl -= 1
376                         html = "<html>"
377                         html += "<head>"
378                         html += "<meta http-equiv=\"Content-Language\" content=\"de\">"
379                         html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">"
380                         html += "<meta http-equiv=\"cache-control\" content=\"no-cache\" />"
381                         html += "<meta http-equiv=\"pragma\" content=\"no-cache\" />"
382                         html += "<meta http-equiv=\"expires\" content=\"0\">"
383                         html += "<title>Fan Control 2 - Chart</title>"
384                         html += "</head>"
385                         html += "<body bgcolor=\"#666666\" text=\"#FFFFFF\">\n"
386                         html += "<table border=\"1\" width=\"900\" bordercolorlight=\"#000000\" bordercolordark=\"#000000\"  cellspacing=\"1\"><tr><td bgcolor=\"#000000\" width=\"200\">\n"
387                         html += "<p align=\"center\"><img border=\"0\" src=\"/fancontrol/FC2dreambox.png\" width=\"181\" height=\"10\">\n"
388                         html += "<font color=\"#FFFFFF\"><BR><b>Fan Control 2 - Chart</b></font></p>\n"
389                         html += "</td><td bgcolor=\"#000000\">\n"
390                         html += "<p align=\"right\">"
391                         html += BoxStatus()
392                         if os.path.exists(config.plugins.FanControl.LogPath.value + "FC2data.csv"):
393                                 html += "<a href=\"/fancontrol\"><img border=\"0\" src=\"/fancontrol/FC2Info.png\" width=\"100\" height=\"40\"></a>\n"
394                         html += "<a href=\"/fancontrol/log\"><img border=\"0\" src=\"/fancontrol/FC2Setup.png\" width=\"100\" height=\"40\"></a></td></tr></table>\n"
395
396                         html += "<applet code=\"diagram.class\" codebase=\"/fancontrol/\" name=\"DiaTemp\" "
397                         html += "align=\"baseline\" width=\"900\" height=\"250\" mayscript>\n"
398                         html += "<param name=\"title\" value=\"Temp  (48h - %s)\">\n" % DT[0]
399                         html += "<param name=\"bgcolor\" value=\"240; 240; 240\">\n"
400                         html += "<param name=\"ytitle\" value=\"Temp\">\n"
401                         html += "<param name=\"rolling\" value=\"%d\">\n" % Anzahl
402                         html += "<param name=\"show_xscale\" value=\"atText\">\n"
403                         html += "<param name=\"show_ygrid\" value=\"true\">\n"
404                         html += "<param name=\"show_xgrid\" value=\"true\">\n"
405
406                         html += "<param name=\"y0\" value=\"\">\n"
407                         html += "<param name=\"color0\" value=\"240; 0; 0\">\n"
408                         html += "<param name=\"style0\" value=\"LINE\">\n"
409                         html += "<param name=\"ylabel0\" value=\"Temp\">\n"
410
411                         html += "<param name=\"y1\" value=\"\">\n"
412                         html += "<param name=\"color1\" value=\"240; 0; 240\">\n"
413                         html += "<param name=\"style1\" value=\"LINE\">\n"
414                         html += "<param name=\"ylabel1\" value=\"HDD\">\n"
415
416                         html += "<param name=\"y2\" value=\"\">\n"
417                         html += "<param name=\"color2\" value=\"0; 255; 0\">\n"
418                         html += "<param name=\"style2\" value=\"LINE\">\n"
419                         html += "<param name=\"ylabel2\" value=\"BoxOn\">\n"
420
421                         html += "<param name=\"y3\" value=\"\">\n"
422                         html += "<param name=\"color3\" value=\"72; 118; 255\">\n"
423                         html += "<param name=\"style3\" value=\"LINE\">\n"
424                         html += "<param name=\"ylabel3\" value=\"HDDon\">\n"
425
426                         html += "<param name=\"y4\" value=\"\">\n"
427                         html += "<param name=\"color4\" value=\"255; 165; 0\">\n"
428                         html += "<param name=\"style4\" value=\"LINE\">\n"
429                         html += "<param name=\"ylabel4\" value=\"Record\">\n"
430
431                         html += "</applet>\n"
432
433 #                       html += "<div style=\"position: absolute; width: 100px; height: 100px; z-index: 1; left: 910px; top: 146px\" id=\"Ebene1\">\n"
434 #                       html += "<img border=\"0\" src=\"/web-data/fc2/FC2Status.png\" width=\"115\" height=\"168\"></div>\n"
435
436                         html += "<applet code=\"diagram.class\" codebase=\"/fancontrol/\" name=\"DiaRPM\" "
437                         html += "align=\"baseline\" width=\"900\" height=\"250\" mayscript>\n"
438                         html += "<param name=\"title\" value=\"RPM  (48h - %s)\">\n" % DT[0]
439                         html += "<param name=\"bgcolor\" value=\"240; 240; 240\">\n"
440                         html += "<param name=\"ytitle\" value=\"RPM\">\n"
441                         html += "<param name=\"rolling\" value=\"%d\">\n" % Anzahl
442                         html += "<param name=\"show_xscale\" value=\"atText\">\n"
443                         html += "<param name=\"show_ygrid\" value=\"true\">\n"
444                         html += "<param name=\"show_xgrid\" value=\"true\">\n"
445
446                         html += "<param name=\"y0\" value=\"\">\n"
447                         html += "<param name=\"color0\" value=\"240; 0; 0\">\n"
448                         html += "<param name=\"style0\" value=\"LINE\">\n"
449                         html += "<param name=\"ylabel0\" value=\"RPM\">\n"
450
451                         html += "</applet>\n"
452
453                         f.seek(0)
454                         line = f.readline()
455                         html += "<script language=javascript>\n"
456                         html += "dT = document.DiaTemp\n"
457                         html += "dR = document.DiaRPM\n"
458                         t = 0
459                         Xtime = int((Anzahl/20))
460                         if Anzahl < 1000:
461                                 Xtime += 1
462                         for line in f.readlines():
463                                 DT = line.split(";")
464                                 if DT[0] > Dfind:
465                                         if Xtime > 0:
466                                                 tmp = ("\"" + DT[0].split(" ")[1] + "\"") if t % Xtime == 0 else "null"
467                                         else:
468                                                 tmp = "null"
469                                         t += 1
470                                         if len(DT[6])>1:
471                                                 DT[6]="0"
472                                         B = 0
473                                         H = 0
474                                         R = 0
475                                         S = int(DT[6])
476                                         if (S & 1)>0 :
477                                                 B = 4
478                                         if (S & 2)>0 :
479                                                 H = 8
480                                         if (S & 4)>0 :
481                                                 R = 12
482                                         html += "dT.AddPoint(\"%s; %s; %d; %d; %d\", %s, null);\n" % (DT[1].replace(",","."),DT[5],B,H,R,tmp)
483                                         html += "dR.AddPoint(\"%s\", %s, null);\n" % (DT[2],tmp)
484                         f.close()
485                         html += "dT.repaint();\ndR.repaint();\n"
486                         html += "</script>"
487                 else:
488                         html = "<html>no Data!"
489                 html += "</body>"
490                 html += "</html>"
491
492                 return html
493
494 def BoxStatus():
495         h = ""
496         S = int(FC2werte[5])
497         if (S & 1)>0 :
498                 h += "<img border=\"0\" src=\"/fancontrol/FC2on.png\" width=\"20\" height=\"20\" title=\"Box On\" align=\"left\" hspace=\"2\" vspace=\"5\">\n"
499         if (S & 2)>0 :
500                 h += "<img border=\"0\" src=\"/fancontrol/FC2hdd.png\" width=\"20\" height=\"20\" title=\"HDD On\" align=\"left\" hspace=\"2\" vspace=\"5\">\n"
501         if (S & 4)>0 :
502                 h += "<img border=\"0\" src=\"/fancontrol/FC2record.png\" width=\"20\" height=\"20\" title=\"Recording\" align=\"left\" hspace=\"2\" vspace=\"5\">\n"
503         return h