File: analyzer.php

package info (click to toggle)
solarpowerlog 0.26-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,724 kB
  • sloc: cpp: 11,856; ansic: 1,044; php: 728; sh: 188; xml: 166; makefile: 166
file content (99 lines) | stat: -rw-r--r-- 3,353 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
	/*
		PHP data feeder for SolarAnalyzer (http://sunics.de/solaranalyzer_beschreibung.htm
		written by Stephan Collet stephan@sunics.de)
		written by Frank Lassowski flassowski@gmx.de in August 2010
		licensed under GPLv2 or later http://www.gnu.org/licenses/gpl2.html

		Put this file in your web directory, for example /var/www/
		It will be automagically called by SolarAnalyzer like this:
		http://yourwebadress/analyzer.php?q=day&d=3&m=9&y=2010   data of 2010-09-03 from all logged inverters
		or
		http://yourwebadress/analyzer.php?q=allDayData           data of all days from all logged inverters

		You shouldn't change the file name otherwise SolarAnalyzer can't figure out
		where to find it.
	*/

	// How many inverters do we have?
	$wrnum=1;
	$table="solarpowerlog";

	// Check GET vars
	$q = $_GET['q'];

	$wr=1;
	
	// Daten aller Tage
	if ($q == "allDayData") {
		// Connect to mysql database
		@mysql_connect('localhost', 'solarpowerlog', '!!!!!password!!!!!') or die(mysql_error());
		@mysql_select_db('solarpowerlog') or die(mysql_error());

		while($wr < $wrnum+1) {
			${result.$wr} = @mysql_query("SELECT created, DAY(created) AS day, max(kdy) AS kdy FROM $table$wr GROUP BY DATE(created)") or die(mysql_error());
			echo "created;kdy_".$wr."\n";
			if (mysql_num_rows(${result.$wr}) == 0) {
				// No data...create dummy line
				echo "no data\n";
			}
			else {
				while($row = mysql_fetch_assoc(${result.$wr})) {
					echo substr ($row['created'], 0, 10).";".$row['kdy']*100 . "\n";
				}
			}
			$wr++;
			echo "\n";
		}
		echo "\n";
	}

	// Tagesdaten
	elseif ($q == "day") {
		$sday = $_GET['d'];
		if (empty($sday))
			$sday = date('j');
		$smonth = $_GET['m'];
		if (empty($smonth))
			$smonth = date('n');
		$syear = $_GET['y'];
		if (empty($syear))
			$syear = date('Y');

		$start['day'] = $sday;
		$start['month'] = $smonth;
		$start['year'] = $syear;
		$end['day'] = $sday;
		$end['month'] = $smonth;
		$end['year'] = $syear;

		// Make sure we define a valid end date
		while (!checkdate($end['month'], $end['day'], $end['year']))
			$end['day']--;

		// Include time in start and end delimiters
		$start = date('Y-m-d H:i:s', mktime(0, 0, 0, $start['month'], $start['day'], $start['year']));
		$end = date('Y-m-d H:i:s', mktime(23, 59, 59, $end['month'], $end['day'], $end['year']));

		// Connect to mysql database
		@mysql_connect('localhost', 'solarpowerlog', '!!!!password!!!!') or die(mysql_error());
		@mysql_select_db('solarpowerlog') or die(mysql_error());

		while($wr < $wrnum+1) {
			// Select data from given day
			${result.$wr} = @mysql_query("SELECT * FROM $table$wr WHERE created BETWEEN '$start' AND '$end'") or die(mysql_error());
			echo "created;kdy_".$wr.";kmt_".$wr.";kyr_".$wr.";kt0_".$wr.";tnf_".$wr.";tkk_".$wr.";pac_".$wr.";prl_".$wr.";il1_".$wr.";idc_".$wr.";ul1_".$wr.";udc_".$wr.";sys_".$wr."\n";
			// No data...create dummy line      
			if (mysql_num_rows(${'result'.$wr}) == 0) {
				echo "no data\n";
			}
			else {
				while($row = mysql_fetch_assoc(${'result'.$wr})) {
					echo $row['created'].";".$row['kdy']*100 . ";".$row['kmt'].";".$row['kyr'].";".$row['kt0'].";".$row['tnf']/100 . ";".$row['tkk'].";".$row['pac'].";".$row['prl'].";".$row['il1']/100 . ";".$row['idc']/100 . ";".$row['ul1']/10 . ";".$row['udc']/10 . ";"."\n";
				}
			}
			$wr++;
			echo "\n";
		}
	}
?>