Arduino Yun - solpanel övervakningssystem (4 / 8 steg)
Steg 4: SOLPANEL övervakning – PHP-sidor
3 PHP-sidor och ett grafiskt bibliotek används för kommunikation och visning av data.
PHPINFO. PHP
Denna PHP sida är endast att kontrollera installationen av PHP konfigurationen på Linux-servern. Det krävs inte för daglig drift. När du öppnar"IP-adress/sd/spMonitor/phpinfo.php" (Ersätt IP-adress med IP-adressen du kopplat till din Arduino ombord) kan du se standard PHP info. Viktigt är att det finns följande paket:
PHP Version 5.6.6 (måste vara nyare än version 5.5)
GD--aktiverat stöd
GD Version--bundled (2.1.0 kompatibel)
JSON stöd--aktiverad
SUB drivers - sqlite
SERVER_SOFTWARE--uHTTPd
INDEX. PHP
När jag började detta projekt var mitt huvudsakliga mål att använda Android-telefoner/tabletter för att visa inspelade data. Men för första provning jag skapat en mycket primitiv webbsida som visar de registrerade uppgifterna på en webbläsare. Detta uppnås med index.php. Layout av webbplatsen är mycket enkel. Överst finns en rullningsruta som visar alla tillgängliga poster anordnas av dagen.
Det finns 2 alternativ för varje dag:
ÅÅ-MM-DD-fyllda = > visar alla poster under dagen DD månad MM i året åå i en graf. ÅÅ-MM-DD-zoombar = > visar alla poster under dagen DD månad MM i året åå i ett diagram som kan zoomas in och ut horisontellt och vertikalt. (Se ovan bilder för de olika diagram).
Det datum som ska visas när du klickar på en länk i listan skickas till PHP-sidan med parametern dag = 15-08-21. Den andra parametern typ = zoomline(eller fylld) definierar vilken typ av diagram visas. Om du vill rita grafen använder jag FusionCharts bibliotek med sina PHP wrapper. FusionCharts erbjuder en gratis testversion (obegränsat). Det visar bara en vattenstämpel på varje graf. Men om du vill använda den i kommersiella tillämpningar måste du köpa en licens. Jag går inte in på Detaljer hur man använder biblioteket. Du kan kontrollera filen index.php för att se hur jag skapa tomten.
FRÅGA. PHP
Denna PHP sida används från Android ansökan skicka en fråga till Sqlite-databasen på Arduino styrelsen och ta emot produktionen som en JSON-sträng. Frågan initieras med ett samtal till "IP-adress/query.php?date=param1 & get = all" (Ersätt IP-adress med IP-adressen du kopplat till din Arduino ombord). Den första parametern "datum" anger limiter för frågan:
yy - ~ > alla från år åå
åå-mm-> allt från år åå och månad mm
åå-mm-dd = > alla från år åå månaden mm och dag dd
åå-mm-dd-hh = > alla från år åå, månad mm, dag dd och timme hh
åå-mm-dd-tt: mm = > alla från år åå, månad mm, dag dd, timme hh och minut MM
Den andra parametern "få = alla" berättar skriptet om alla poster nyare enligt definitionen i "datum" ska skickas också.
Exempel:
datum = 13-08-16-20 & få = alla returnerar rader av 13-08-16 vid 20-tiden och alla rader efter det
datum = 13-08-16-20 returnerar bara raderna av 13-08-16 20:00 till 23:59 men inte av nästa dag
datum = 13-08-16 & få = alla returnerar rader av 13-08-16 och alla rader efter det
datum = 13-08-16 returnerar bara raderna i 13-08-16 00:00 till 23:59 men inte nästa dag
De viktigaste punkterna i PHP-skript är:
$query = $query. "Var d som" ". $dateSelect. "%'";
som blir alla rader där "d" innehåller delsträngen $dateSelect och
$query = "Välj * från s där id >". $lastID;
som blir alla rader som är nyare än den sista raden i den första frågan.
Uppgifter från databasen från dessa två frågor sedan kodas som en JSON matris och skickas tillbaka till den begärande klienten.
ECHO json_encode($json);
Ta en titt på query.php mer.
Det är det om PHP-sidor.