Ochsner Warmtepomp – Meter HUM (PHP / MySQL)
Dit voobeeld laat zien hoe je vanuit een PHP bestand een waarde uit de MySQL database haalt voor een meter amCharts, het gaat hier om de laatste luchtvochtigheids (HUM) waarde van een gegeven datum in de database.
Wat heb je nodig?
1) MySQL database gevuld met data van dit script voor de wamtepomp.
2) amCharts
Hoe werkt het?
Onderstaand script ‘warmtepomp_tqe.php’ leest de gegevens uit de MySQL database waarin de warmtepompgegevens staan, het leest de laatste waarde (lees: laatste regel van een specifieke datum) van de luchtvochtigheid weer in de kolom HUM_REL.
Het scrip is zo in elkaar gezet (mbv GOTO anker) dat als er geen gegevens zijn van “vandaag” het de laatste waarde pakt van “gisteren”.
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 |
<?php // ------------------------------------------------------------------------------ // Dit is een voorbeeld script voor het uitlezen van de laatse HUM waarde // uit een kolom van een (MySQL) database waarin Ochsner Wamtepomp gegevens staan // // 2014-12-21 door Sebastiaan Ebeltjes. // ------------------------------------------------------------------------------ // Inladen van de instellingen. include 'instellingen.php'; // Lokale instellingen. $tabelnaam = "warmtepomp"; $VLAG = 0; // Datum van vandaag $datum_iso = date('Y-m-d'); // een GOTO anker als en geen gegevens zijn gevonden. beginscript: // Explodeer datum in 3 variabelen. list($DY, $DM, $DD) = explode('-', $datum_iso); // Maak connectie met de database. $dbcon = mysqli_connect($database_adres, $database_login_naam, $database_login_wachtwoord, $database_naam); // Is de connectie gelukt?, zo niet...geef een foutmelding en sluit het script! if (mysqli_connect_errno()) { exit; } $query=" SELECT TH, TM, TS, HUM_REL FROM " . $tabelnaam . " WHERE DY = " . $DY . " AND DM = " . $DM . " AND DD = " . $DD . " ORDER BY UNIX_TIME DESC LIMIT 1; "; // Voer de query uit. $data = mysqli_query($dbcon, $query); // Zet het resultaat van de gevevens in een array. $resultaat = mysqli_fetch_assoc($data); // Zet de laatste waarde HUM uit de gegevens (resultaat) in een variabele. $HUM_REL = $resultaat['HUM_REL']; $TH = $resultaat['TH']; $TM = $resultaat['TM']; $TS = $resultaat['TS']; if ($HUM_REL < 1 AND $VLAG == 0) { // Er is "vandaag" geen data aanwezig, ga een dag terug. $unix_time = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $dag_terug = strtotime('-1 day', $unix_time); $datum_iso = date('Y-m-d', $dag_terug); // Mochten er totaal geen database gegevens zijn zet VLAG op 1 anders blijft het script voor altijd doorlopen. $VLAG = 1; goto beginscript; } else { // Niets doen. } // Sluit de database connectie. mysqli_close($dbcon); ?> |
HUM Meter
We gaan nu verder met een metertje van amCharts om de waarde $HUM_REL weer te geven, maak een bestand aan ‘warmtepomp_hum_meter.php‘ met de inhoud:
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 |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Warmtepomp luchtvochtigheid</title> <script src="libs/amcharts/amcharts.js" type="text/javascript"></script> <script src="libs/amcharts/gauge.js" type="text/javascript"></script> <?php include 'warmtepomp_hum.php' ?> <script type="text/javascript"> // Inladen gegevens warmtepomp var HUM_REL = <?php echo $HUM_REL; ?>; var TH = <?php echo $TH; ?>; var TM = <?php echo $TM; ?>; var TS = <?php echo $TS; ?>; var DY = <?php echo $DY; ?>; var DM = <?php echo $DM; ?>; var DD = <?php echo $DD; ?>; var chart; var arrow; var axis; AmCharts.ready(function () { // create angular gauge chart = new AmCharts.AmAngularGauge(); chart.addTitle("Luchtvochtigheid binnen in %\r\n(RV-in)"); // create axis axis = new AmCharts.GaugeAxis(); axis.startValue = 0; axis.axisThickness = 1; axis.valueInterval = 10; axis.endValue = 100; // color bands var band1 = new AmCharts.GaugeBand(); band1.startValue = 0; band1.endValue = 30; band1.color = "#FF0000"; var band2 = new AmCharts.GaugeBand(); band2.startValue = 30; band2.endValue = 40; band2.color = "#FFA500"; var band3 = new AmCharts.GaugeBand(); band3.startValue = 40; band3.endValue = 60; band3.color = "#00FF00"; band3.innerRadius = "92%"; var band4 = new AmCharts.GaugeBand(); band4.startValue = 60; band4.endValue = 70; band4.color = "#00C5CD"; var band5 = new AmCharts.GaugeBand(); band5.startValue = 70; band5.endValue = 90; band5.color = "#0000FF"; var band6 = new AmCharts.GaugeBand(); band6.startValue = 90; band6.endValue = 100; band6.color = "#800080"; axis.bands = [band1, band2, band3, band4, band5, band6]; // bottom text axis.bottomTextYOffset = -20; axis.setBottomText(pad(DD, 2) + "-" + pad(DM, 2) + "-" + DY + "\r\n" + pad(TH, 2) + ":" + pad(TM, 2) + ":" + pad(TS, 2)); chart.addAxis(axis); // gauge arrow arrow = new AmCharts.GaugeArrow(); chart.addArrow(arrow); chart.write("chartdiv"); arrow.setValue(HUM_REL); }); // functie voor voorloopnullen bij getallen function pad(num, size) { var s = num+""; while (s.length < size) s = "0" + s; return s; } </script> </head> <body> <div id="chartdiv" style="width:250px; height:350px;"></div> </body> </html> |
Als je nu via de browser het php bestand opent krijg je de meter te zien:
[#/scripts/ochsner_warmtepomp_hum_meter” ]