<?php
//Globale Verbindungsparameter
include 'con_conf.php';

// Variablendeklaration und  festlegen einiger Konfigurationsparameter
$test = "Ich bin ein Testtext!";

$limit = "1";			//Wie viele Zeilen brauchst du aus der Datenbank?
$now = date("G:i");		//aktuelle Uhrzeit

/** Selektoren:
array [0]  = date	= Datum YYYY-MM-DD HH:MM:SS -> wird in DD.MM.YYYY HH:MM umgewandelt
array [1]  = 1		= Kesseltemperatur
array [2]  = 2		= Rauchgastemperatur IST
array [3]  = 3		= O² IST
array [4]  = 4		= Puffer Fühler 1
array [5]  = 5		= Puffer Fühler 2
array [6]  = 6		= Puffer Fühler 3
array [7]  = 7		= Aussentemperatur
array [8]  = 8		= HK1 Vorlauftemperatur IST
array [9]  = 12		= Frischwasserstation / Boiler Temperatur
array [10] = 13		= HK1 Vorlauftemperatur SOLL
array [11] = 17		= Primärluft IST
array [12] = 18		= Primärluft SOLL
array [13] = 19		= Sekundärluft IST
array [14] = 20		= Sekundärluft SOLL
array [15] = 21		= Saugzug
array [16] = 24		= O² SOLL
array [17] = 26		= Rauchgastemperatur SOLL
array [18] = 51		= Pufferspeicher in %
array [19] = 61		= Aussentemperatur gemittelt
 **/
$query = "SELECT `date`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `12`, `13`, `17`, `18`, `19`, `20`, `21`, `24`, `26`, `51`, `61` FROM `$dbtable` WHERE 1 ORDER BY `$dbtable`.`date` DESC LIMIT $limit";

$result = mysqli_query($con, $query);
$array = mysqli_fetch_row($result);

//$array in variablen umwandeln
$originalDate = "$array[0]";
$ktemp = "$array[1]";
$rgasi = "$array[2]";
$o2i = "$array[3]";
$pf1 = "$array[4]";
$pf2 = "$array[5]";
$pf3 = "$array[6]";
$aussen = "$array[7]";
$hk1i = "$array[8]";
$fwt = "$array[9]";
$hk1s = "$array[10]";
$primi = "$array[11]";
$prims = "$array[12]";
$sekui = "$array[13]";
$sekus = "$array[14]";
$saug = "$array[15]";
$o2s = "$array[16]";
$rgass = "$array[17]";
$puffer = "$array[18]";
$atempgem = "$array[19]";

// Datum in Deutsches Format umwandeln
$newDate = date("d.m.Y", strtotime($originalDate));
$newTime = date("G:i", strtotime($originalDate));

// Farben für die einzelnen Bereiche festlegen
// Farbe für HK1 und Zustand
if ($hk1s == "0") {
	$hk1 = " <tr><td align='left'><font color='#FF9900'><b>Heizkreis 1 aus</b></font></td><td align='right'>&nbsp</td></tr>";
	$hk1rss = 'Heizkreis 1 aus!';
	$hk1lcd = "HK1 aus|Tg: $atempgem";
	$lcd3 = "\"HK1 aus | TG: $atempgem\" + chr(223) + \"C\"";
	}
	else {
		if ($hk1i < $hk1s) { 				// wenn HK1 IST kleiner als HK1 Soll dann wird der Text von HK1 Ist ROT, ansonsten ist er grün.
		        $fchk1 = "#FF0000";
			}
		        else {
		        $fchk1 = "#006600";
		        };
		$hk1 = " <tr><td align='left'>HK1 Vorlauf Soll/Ist:</td><td align='right'> $hk1s"."°C / <font color='$fchk1'><b>$hk1i"."°C</b></font></td></tr>";
		$hk1rss = "HK Soll/Ist: $hk1s"."°C / $hk1i"."°C";
		$hk1lcd = "HK S/I: $hk1s / $hk1i";
		$lcd3 = "\"HK:$hk1s\" + chr(223) + \"C / $hk1i\" + chr(223) + \"C\"";
	};

// Farbe für den Puffer
if ($puffer > "75") {				// wenn der Puffer den Wert größer 75 ist, ist der Text grün
        $fcpuff = "#006600";
        $modeon0 = trim(@shell_exec("/usr/bin/gpio mode 0 out"));
        $modeon1 = trim(@shell_exec("/usr/bin/gpio mode 1 out"));
        $modeon2 = trim(@shell_exec("/usr/bin/gpio mode 2 out"));
        $ledgreen = trim(@shell_exec("/usr/bin/gpio write 0 1"));
        $ledyellow = trim(@shell_exec("/usr/bin/gpio write 1 0"));
        $ledred = trim(@shell_exec("/usr/bin/gpio write 2 0"));
        }
        elseif ($puffer == "0") {               // wenn der Puffer den Wert 0 hat, ist der Text rot
        $fcpuff = "#FF0000";
        $modeon0 = trim(@shell_exec("/usr/bin/gpio mode 0 out"));
        $modeon1 = trim(@shell_exec("/usr/bin/gpio mode 1 out"));
        $modeon2 = trim(@shell_exec("/usr/bin/gpio mode 2 out"));
        $ledgreen = trim(@shell_exec("/usr/bin/gpio write 0 0"));
        $ledyellow = trim(@shell_exec("/usr/bin/gpio write 1 0"));
        $ledred = trim(@shell_exec("/usr/bin/gpio write 2 1"));
		}
        elseif ($puffer <= "30") {              // wenn der Puffer den Wert größer 0 ist, ist der Text orange
        $fcpuff = "#FF9900";
        $modeon0 = trim(@shell_exec("/usr/bin/gpio mode 0 out"));
        $modeon1 = trim(@shell_exec("/usr/bin/gpio mode 1 out"));
        $modeon2 = trim(@shell_exec("/usr/bin/gpio mode 2 out"));
        $ledgreen = trim(@shell_exec("/usr/bin/gpio write 0 0"));
        $ledyellow = trim(@shell_exec("/usr/bin/gpio write 1 1"));
        $ledred = trim(@shell_exec("/usr/bin/gpio write 2 1"));
        }
        elseif ($puffer <= "50") {              // wenn der Puffer den Wert größer 25 ist, ist der Text gelb
        $fcpuff = "#FFFF00";
        $modeon0 = trim(@shell_exec("/usr/bin/gpio mode 0 out"));
        $modeon1 = trim(@shell_exec("/usr/bin/gpio mode 1 out"));
        $modeon2 = trim(@shell_exec("/usr/bin/gpio mode 2 out"));
        $ledgreen = trim(@shell_exec("/usr/bin/gpio write 0 0"));
        $ledyellow = trim(@shell_exec("/usr/bin/gpio write 1 1"));
        $ledred = trim(@shell_exec("/usr/bin/gpio write 2 0"));
        }
        elseif ($puffer  <= "75") {             // wenn der Puffer den Wert größer 50 ist, ist der Text hellgrün
        $fcpuff = "#66A300";
        $modeon0 = trim(@shell_exec("/usr/bin/gpio mode 0 out"));
        $modeon1 = trim(@shell_exec("/usr/bin/gpio mode 1 out"));
        $modeon2 = trim(@shell_exec("/usr/bin/gpio mode 2 out"));
        $ledgreen = trim(@shell_exec("/usr/bin/gpio write 0 1"));
        $ledyellow = trim(@shell_exec("/usr/bin/gpio write 1 1"));
        $ledred = trim(@shell_exec("/usr/bin/gpio write 2 0"));
        };
// Farbe für die Puffer Fühler

$pruefung = array("$fwt","$pf1","$pf2","$pf3","$ktemp");	// Festlegen welche Werte geprüft werden sollen und in ein array packen
$i = "0";							// Zähler
$fcgrad = array(5);						// definieren des arrays für die verschiedenen Farben der einzelnen Gradzahlen

while ($i < "5"){						// Während i kleiner als 5 mache:
	if ($pruefung[$i] > "80") {				// wenn $pruefung größer als 80
		$fcgrad[$i] = "#FF00000";			// $fcgrad = Rot
		}
		elseif ($pruefung[$i] > "60") {			// ansonsten wenn $preufung größer 60
		$fcgrad[$i] = "#BF0040";			// usw.
		}
	        elseif ($pruefung[$i] > "40") {
	        $fcgrad[$i] = "#8C0073";
	        }
	        elseif ($pruefung[$i] > "20") {
	        $fcgrad[$i] = "#5900A6";
	        }
	        elseif ($pruefung[$i] == "0") {
	        $fcgrad[$i] = "#0000FF";
	        };
		$i++;						// $i = $i +1
	};
// Betriebszustände
// Löschen der vorherigen SQL abfragen
mysqli_free_result($result);					// einmal $result leer machen

$gluta = array(5);						// array für die O² Werte
$rgasa = array(5);						// array für die Rauchgas Werte
$i = "0";							// i auf 0 setzen
$limit = "5";							// Wir wollen die letzten 5 Werte haben

$query = "SELECT `2`, `3` FROM `$dbtable` WHERE 1 ORDER BY `$dbtable`.`date` DESC LIMIT $limit";	// SQL abfrage in SQL Syntax
$result = mysqli_query($con, $query) or die("Anfrage fehlgeschlagen: " . mysql_error());			// SQL abfrage
while ($row = mysqli_fetch_assoc($result)) {								// Während $row einen Wert enthält mache:
//	print_r ($row); 										// Prüfung
	$gluta[$i] = $row[3];										// $gluta[$i] bekommt den Wert $row[3] wobei die 3 als Key Identifier dient und nicht als position
	$rgasa[$i] = $row[2];										// $rgasa[$i] bekommt den Wert $row[2] wobei die 2 als Key Identifier dient und nicht als position
	$i++;												// $i = $i + 1
};

$gluts = $gluta[0] + $gluta[1] + $gluta[2] + $gluta[3] + $gluta[4];					// addieren der Werte aus dem array $gluta
$gcalc = $limit * 15;											// Sauerstoffgehalt 15% * $limit

if ( $gluts >= $gcalc ) {										// Wenn $gluts größer oder gleich $gcalc
	$glut = "1";											// setze $glut auf 1
	}
	else {												// ansonsten setze $glut auf 0
	$glut = "0";
	};

if ( $saug == "100" and $prims == "100" and $rgass == "140" ) { 					// Wenn Saugzug = 100 und Primärluft IST größer 95 dann setze Zustand auf Anheizen
        $zustand = "<font color='#D91F00'>Anheizen</font>";
	$zustandrss = "Anheizen";
	$lcd1 = "AHZ";
        $lcd2 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
        $lcd4 = "\"o2:$o2s"."% / $o2i"."% P:$puffer"."%\"";
        }
        elseif ( $ktemp > "87" and $rgass == "0" or $rgasi >= "280" and $rgass == "0") {                // Ansonsten wenn die Kesseltemperatur größer 87 dann setze Zustand auf Übertemperatur
        $zustand = "<font color='#FF0000'>&Uuml;bertemperatur</font>";
        $zustandrss = "Übertemperatur";
	$lcd1 ="UT!";
        $lcd2 = "\"K :$ktemp"."\" + chr(223) + \"C\"";
	$lcd3 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
        $lcd4 = "\"o2:$o2s"."%/$o2i"."% P:$puffer"."%\"";
        }
        elseif ( $rgass > "180" and $pf2 < "70" and $ktemp < "80" ) {                                   // Ansonsten wenn Rauchgas IST  größer 180 und Primärluft ist größer 0
        $zustand = "<font color='#00CC00'>Voll-Last</font>";                                            // oder Kesseltemperatur und Primärluft größer 0 setze Zustand auf Voll-Last
	$zustandrss = "Voll-Last";
	$lcd1 = "VL ";
	$lcd2 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
	$lcd3 = "\"K :$ktemp"."\" + chr(223) + \"C HKi:$hk1i"."\" + chr(223) + \"C\"";
        $lcd4 = "\"o2:$o2s"."%/$o2i"."% P:$puffer"."%\"";
       }
        elseif ( $pf2 >= "70" and $sekus > "0" and $rgasi > "0" or $ktemp >= "80" and $sekus > "0" and $rgasi > "0" ) { // Ansonsten wenn Puffer Fühler mitte und Primärluft größer 0
        $zustand = "<font color='#8C5C00'>Teil-Last</font>";                                            // oder Kesseltemperatur größer 80 und Primärlfut größer 0 setze Zustand auf Teil-Last
	$zustandrss = "Teil-Last";
	$lcd1 = "TL ";
        $lcd2 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
	$lcd3 = "\"K :$ktemp"."\" + chr(223) + \"C HKi:$hk1i"."\" + chr(223) + \"C\"";
        $lcd4 = "\"o2:$o2s"."%/$o2i"."% P:$puffer"."%\"";
        }
        elseif ( $ktemp > "70" and $rgass == "0" and $sekus == "0" and $saug == "100" ){                // Ansonsten wenn $gluts größer 75 und Primärluft größer 0 setze Zustand auf Ausbrand
        $zustand = "<font color='#00CC00'>Ausbrand</font>";
	$zustandrss = "Ausbrand";
	$lcd1 = "AB ";
        $lcd2 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
        $lcd4 = "\"o2:$o2s"."% / $o2i"."% P:$puffer"."%\"";
        }
        elseif ( $ktemp > "70" and $rgasi <= "80" and $glut = "1" ){                    	        // Ansonsten wenn die letzte Rauchgastemperatur kleiner 80 und $glut gleich 0 dann setze Zustand auf Gluterhaltung
        $zustand = "<font color='#00CC00'>Gluterhaltung</font>";
	$zustandrss = "Gluterhaltung";
	$lcd1 = "GE ";
        $lcd2 = "\"P :$puffer"."%     K:$ktemp"."\" + chr(223) + \"C\"";
	$lcd4 = "\"$fwt|$pf1|$pf2|$pf3\"";
        }
        elseif ( $ktemp > "50" and $primi == "0" and $sekui == "0" or $glut == "1" and $primi == "0") { // Ansonsten wenn Rauchgas IST kleiner 50 und Primärluft IST und Sekundärluft IST gleich 0 oder
        $zustand = "<font color='$fcgrad[4]'>Restw&auml;rme</font>";                                    // $glut = 1 und Primärluft gleich 0 dann setze Zustand auf Restwärme
	$zustandrss = "Restwärme";
	$lcd1 = "RW ";
        $lcd2 = "\"P :$puffer"."%     K:$ktemp"."\" + chr(223) + \"C\"";
	$lcd4 = "\"$fwt|$pf1|$pf2|$pf3\"";
        }
        elseif ( $primi > "95" and $saug == "0" ) {                                                     // Wenn Primärluft IST größer 95 und der Saugzug auf 0 dann setze Zustand auf Zündung warten
        $zustand = "<font color='#0000FF'>Z&uuml;nd. warten</font>";
	$zustandrss = "Zündung warten";
	$lcd1 = "ZW ";
        $lcd2 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
	$lcd4 = "\"$fwt|$pf1|$pf2|$pf3\"";
        }
        elseif ( $saug == "100" and $o2i >= "20" ) {                                                    // Wenn Saugzug gleich 100 dann setze Zustand auf Tür offen!
        $zustand = "<font color='#FF0000'>T&uuml;r offen!</font>";
	$zustandrss = "Tür offen!";
	$lcd1 = "TO!";
        $lcd2 = "\"RG:$rgass"."\" + chr(223) + \"C / $rgasi"."\" + chr(223) + \"C\"";
        $lcd4 = "\"o2:$o2s"."% / $o2i"."% P:$puffer"."%\"";
        }
        elseif ( $ktemp <= "50" and $rgass == "0" ) {							// Ansonsten ist der Zustand Aus
        $zustand = "<font color='#0000FF'>Aus</font>";
	$zustandrss = "Aus";
	$lcd1 = "Aus";
        $lcd2 = "\"P :$puffer"."%     K:$ktemp"."\" + chr(223) + \"C\"";
        $lcd4 = "\"$fwt|$pf1|$pf2|$pf3\"";
        };

//LCD Zeile 4

//$lcd4 = "\"$fwt"."\" + chr(223) + \"C|$pf1"."\" + chr(223) + \"C|$pf2"."\" + chr(223) + \"C|$pf3"."\" + chr(223) + \"C\""; //mit °C 7 Zeichen zu lang
//$lcd4 = "\"$fwt|$pf1|$pf2|$pf3\""; //ohne °C

// Löschen der SQL abfrage
mysqli_free_result($result);

// Schließen der Verbinung
mysqli_close($con);

?>
