Stap 14: Web App en Smartphone Interface
De mogelijkheid om controle en toezicht op de status van het zonnepaneel was een belangrijke ontwerpdoelstelling. Duidelijkheid, hoeft u niet deze functionaliteit voor de tracker te werken. Het is de extra functionaliteit die u toelaat om de status van de tracker op afstand controleren.
Voor het gebruik van de code, moet u een webserver met IIS versie 7 of hoger instellen. U kunt de WebServer worden uitgevoerd op uw eigen PC of gebruik een externe hostingservice zoals http://1and1.com (ik gebruik 1and1). Als u uw eigen webserver gehost thuis gebruikt, moet u registreren bij een dynamische DNS-service zodat uw PC lokaliseerbare van de Imp-server is.
De interface naar het paneel is gemaakt door Index.html. Deze webpagina maakt gebruik van JQuery Mobile http://jquerymobile.com/ om de look en feel van een native iPhone app. De enige beperking met JQuery Mobile is dat u geen toegang de specifieke hardware smartphone zoals de versnellingsmeter en GPS tot. Er zijn 3e partij platforms die zal u toestaan om deze achterstand zoals Phonegap http://phonegap.com/
Het aardige ding over Phonegap is dat u uw code gecompileerd voor iOS en Android platforms kunt hebben. Als u geen afhankelijkheden op telefoon hardware zoals ik heb gedaan voor dit app, hoeft u niet voor 3de partij platformen en uw code zal draaien op elke Smartphone, Tablet of PC met een voldoende up-to-date browser. Brower moet HTML5 ondersteunen.
De Solar Tracker applicatie hoeft niet telefoon hardware, dus JQuery Mobile de enige afhankelijkheid is.
Hoe het werkt
Het bestand Index.html heeft twee belangrijkste interne "pagina's"
- Toezicht statuspagina – periodiek query uitgevoerd op de huidige waarden van de hardware van de SQL-database zodat kunt u de status van het systeem.
- Motion control pagina – u kunt rijden motoren van het deelvenster naar een specifieke hoogte en het Azimut. Je kunt bijvoorbeeld het deelvenster verzenden naar een storm-veilige positie.
- Pagina instellingen - dit niet werd uitgevoerd, maar in de toekomst zal bevatten specifieke parameters die kunnen worden opgeslagen in het GMB zoals Lat en Lon.
De statuspagina voor toezicht periodiek (eenmaal elke 2 seconden voor ontwikkelingshulp zal later worden vertraagd) query uitgevoerd op de webserver voor gegevens dat wordt weergegeven in een raster-achtige manier. Deze gegevens wordt uit de SQL Server (ook gehost door 1and1.com) verstrekt. De interface is door middel van web-pagina TrackerStatus.aspx die de gegevens opvragen uit de SQL Server-database en retourneert het antwoord aan de AJAX-query gemaakt door Index.html draait op de Smartphone. De weergave van index.html vervolgens bijgewerkt met de meest recente waarden.
Om de beweging van het deelvenster handmatig, maakt de Motion control-pagina een AJAX-oproep naar de Services.Aspx pagina. Deze pagina interpreteert de oproep en een JSON-object doorgegeven aan de elektrische Imp "HTTP In" knooppunt gehost door de elektrische Imp-Server. Het knooppunt "HTTP In" verbindt met de firmware via een invoerpoort genaamd HTMLCommands. De eekhoorn-code ter ondersteuning van deze poort haalt het doel hoekgegevens en Tracker-objecten in de firmware gebruikt om te rijden de motoren naar de gewenste positie van de handmatige.
De firmware kan worden bijgewerkt van de SQL Server-database door het verzenden van gegevens naar het knooppunt HTTP-verzoek. Dit knooppunt is geconfigureerd voor het doorgeven van de gegevens aan DatabaseUpdater.aspx die de gegevens in de database schrijft. Alle de statusinformatie is geschreven naar SQL met behulp van DatabaseUpdater.aspx.
U kunt de meegeleverde bestanden kopiëren naar de folder van het doel van uw website. Om samen te vatten:
- Index.html -bestand geladen door de smartphone-browser. Biedt de UI voor de tracking-systeem en de UI voor handmatige bediening van de hoeken van de tracking indien nodig
- Services.apsx -ASP.net-bestand die handmatige tracking hoeken van Index.html ontvangt. Deze hoeken biedt aan de Imp-HTTP In knooppunt, die hen naar de firmware via HTTP worden doorgestuurd. Dit bestand kan overbodig lijken, maar het vermijdt problemen met Cross oorsprong resources delen. Browsers zijn in het algemeen niet gelukkig AJAX bellen naar een ander domein dan het domein dat voorgeschoteld van de pagina die zij momenteel gebruikt. MyWebServ.com is bijvoorbeeld voorgeschoteld van het index.html bestand. Index.html is met behulp van AJAX om een verzoek te doen om te electricimp.com... browser freaks uit. Soms krijgt opgeroepen, maar wordt een fout geretourneerd. Dit vermijdt alle bellen naar dezelfde webserver. Ik ben zeker dat er andere manieren maar ik ken ze niet!
- TrackerStatus.aspx -ASP.net-bestand dat de database op verzoek voor de meest recente statusgegevens van het GMB ondervraagt. Gegevens wordt gevraagd door index.html AJAX bellen. TrackerStatus.aspx gegevens uit de database opvraagt, verpakt het resultaat als een JSON-string en retourneert het antwoord naar index.html
- DatabaseUpdater.aspx -Peridodically de firmware naar het schrijft heeft output poort (CompassPort). De planner Imp is geconfigureerd met een HTTP-aanvraag-knooppunt dat wordt aangesloten op CompassPort. Als een gegevenspakket wordt ontvangen, zal het knooppunt HTTP Request Maak een aanvraag voor de doelpagina waarmee deze is geconfigureerd. Deze pagina is DatabaseUpdater.aspx die de huidige waarden van de status in de database via een SQL UPDATE-query schrijft.
U moet uw databaseverbindingsreeks evenals de bijzonderheden van uw elektrische imp URL configureren. Het bijgevoegde bestand WebFiles.PDF bevat alle broncode voor de webservices. Hernoem het bestand naar PDF-bestand aan .zip en unzip.