Stap 4: ZONNEPANEEL toezicht – PHP-pagina's
Het systeem maakt gebruik van 3 PHP-pagina's en een grafische bibliotheek voor de communicatie en de weergave van de gegevens.
PHPINFO. PHP
Deze PHP-pagina is alleen het controleren van de installatie van de PHP configuratie op de Linux-server. Het is niet vereist voor dagelijkse verrichting. Wanneer u open"IP-adres/sd/spMonitor/phpinfo.php" (vervangen door IPADRES het IP-adres dat u hebt toegewezen aan uw Arduino board) kunt u de standaard PHP info. Belangrijk is dat de volgende pakketten beschikbaar zijn:
PHP Version 5.6.6 (must be newer than version 5.5)GD Support -- enabled GD Version -- bundled (2.1.0 compatible) json support -- enabled PDO drivers -- sqlite SERVER_SOFTWARE -- uHTTPd
INDEX. PHP
Toen ik begon dit project was mijn belangrijkste doel met Android telefoons/tablets de opgenomen gegevens weergeven. Maar voor de eerste testen die ik heb gemaakt een zeer primitieve webpagina waarin de geregistreerde gegevens in een webbrowser. Dit wordt bereikt met index.php. De indeling van de webpagina is zeer eenvoudig. Op de top is een schuifblokje waarin alle beschikbare records, georganiseerd door de dag.
Voor elke dag zijn er 2 opties:
YY-MM-DD-gevulde = > alle records van de dag DD MM maand in het jaar JJ in een grafiek worden weergegeven. YY-MM-DD-zoomable = > alle records van de dag DD MM maand in het jaar JJ in een grafiek die kan worden ingezoomd in en uit horizontaal en verticaal worden weergegeven. (Zie bovenstaande afbeeldingen voor de verschillende grafiektypen).
De datum die wordt weergegeven nadat op een koppeling in de lijst te klikken verzonden naar de PHP-pagina met de parameter wordt dag 15-08-21 =. De tweede parameter type = zoomline(of gevuld) definieert welk type grafiek wordt weergegeven. Als u wilt tekenen van de grafiek gebruik ik de FusionCharts bibliotheek met hun PHP-wrapper. FusionCharts biedt een gratis proefversie voor (onbeperkt). Het toont alleen een watermerk op elke grafiek. Maar als u wilt gebruiken in commerciële toepassingen moet u een licentie kopen. Ik ga niet in details hoe met de bibliotheek. U kunt het bestand index.php om te zien hoe ik de plot maken.
QUERY. PHP
Dit PHP-pagina wordt een query naar de Sqlite database op de Arduino board verzenden en ontvangen van de output als een JSON-string uit de androïde toepassing gebruikt. De query wordt gestart met een oproep tot "IP-adres/query.php?date=param1 & get = all" (vervangen door IPADRES het IP-adres dat u hebt toegewezen aan uw Arduino board). De eerste parameter "datum" stelt de limiter voor de query:
yy- ~> all from year yyyy-mm -> all from year yy and month mm yy-mm-dd => all from year yy, month mm and day dd yy-mm-dd-hh => all from year yy, month mm, day dd and hour hh yy-mm-dd-hh:MM => all from year yy, month mm, day dd, hour hh and minute MM
De tweede parameter "krijgen = all" vertelt het script als alle posten nieuwere zoals gedefinieerd in het "datum" ook moeten worden verzonden.
Voorbeelden:
date=13-08-16-20&get=all returns the rows of 13-08-16 at 20 o'clock and all rows after thatdate=13-08-16-20 returns only the rows of 13-08-16 from 20:00 until 23:59 but not of the next day date=13-08-16&get=all returns the rows of 13-08-16 and all rows after that date=13-08-16 returns only the rows of 13-08-16 from 00:00 to 23:59 but not of the next day
De belangrijkste punten van het PHP script zijn:
$query = $query . " WHERE d LIKE '" . $dateSelect . "%'";
die krijgt alle rijen waar "d" de subtekenreeks $dateSelect bevat en
$query = "SELECT * FROM s where id>" . $lastID;
die krijgt alle rijen die nieuwer dan de laatste rij in de eerste query worden gevonden zijn.
De gegevens afkomstig uit de database van deze twee query's worden vervolgens gecodeerd als een matrix van JSON en teruggestuurd naar de aanvragende client.
echo json_encode($json);
Neem een kijkje op query.php voor meer details.
Dat is het over de PHP-pagina's.