Stap 6: Gateway ontwerp
De gateway is verantwoordelijk voor het verzamelen van gegevens en het vervolgens verzenden naar de android application interface. Het heeft ook een toegang tot de console die dat alle relevante informatie samen met een kleine interface aantonen kan. Het wordt informatie aangevraagd vanaf het knooppunt energie via bekabelde communicatie. Het knooppunt energie stuurt de informatie terug naar de gateway. De gateway stuurt deze informatie naar de android application interface. Dit proces gebeurt in regelmatige intervallen die kunnen worden ingesteld in de menu-interface. Omdat de gateway en de energie-knooppunten gescheiden zijn kan één systeem bestaan uit vele energie-knooppunten. Het voordeel hiervan is dat de kosten voor het controleren van een ander extra toestel laag, is omdat alleen de energie knooppunt moet worden gekocht.
De aanvraag voor de gateway is ontworpen volledig gebruik van de C taal. Het stroomdiagram voor de toepassing wordt weergegeven in de ingesloten figuur. De toepassing wordt gestart met de initialisatie van de GPIO pinnen van het bestuur van de Beaglebone black met "sys" file system. De richtingen van de GPIO pinnen zijn vervolgens ingesteld op de functionaliteit op de pin gebruikt. Bijvoorbeeld werden de pins waartegen de Relais waren aangesloten gekozen als uitgangen terwijl pins waartegen schakelaars waren aangesloten werden gekozen als input.
Na de GPIO pinnen initialisatie openen we de twee knooppunten van seriële poorten die in de linux-bestandssysteem kunnen worden benaderd als '/ dev/ttyOx"waarbij x staat voor het nummer van de UART. Deze twee seriële poorten zijn degenen op die onze energie meting knooppunten zijn verbonden via UART. Dus alleen na het openen van deze poorten, zou men kunnen toegang tot deze poorten. Na dan we lezen van de eerdere configuraties van de seriële poorten en een nieuwe transactie aan ons vermogen van de EMISCHE. Na de succesvolle instellingen van de seriële poorten laden we de kalibratie-constanten zijn op onze twee EMISCHE boards en dus het initialiseren van de twee CS5490 EMICs klaar voor energie metingen.
Na succesvolle laden van de kalibratie-constanten zijn zetten we een handler signaal voor noodgevallen stoppen van de gateway-servertoepassing. Hier doen we allemaal verstandig deallocation van de middelen zoals server bestandsdescriptors, seriële poorten en alles wat we hebben gebruikt in onze applicatie.
Zoals gateway ook verantwoordelijk is voor de meterstanden op te slaan in een database, hier gebruiken we sqlite database voor het opslaan van de lezing van de meter in een gestructureerde indeling. Na de initialisatie van de signaal-handlers, we open / de databasebestanden voor overeenkomstige meters maken met de naam "METERx", waarbij x staat voor het nummer van de meter. Als het databasebestand niet er in eerste instantie was, wordt deze gemaakt anders het wordt geopend. Nu zijn de tabellen voor de overeenkomstige maand en jaar gemaakt / geopend met het formaat "month_year". Voor een nieuwe maand/jaar maakt de toepassing automatisch de corresponderende tabel in de database.
Nu voeren we parallellisme in de gateway-toepassing implementeren, drie draden met drie verschillende toepassingsgerelateerde functionaliteiten. Hier initialiseren we drie draden. De eerste is de "timer draad", die verantwoordelijk is voor het handhaven van de vertraging van de verwijzing in het programma voor periodieke updates van de database en gebruiker interface voor de meterstanden. Volgende draad "switch polling draad" verantwoordelijk voor continu toezicht switches is als ze worden ingedrukt of niet, en switch functionaliteit waardoor het uitvoeren van de corresponderende laden. De derde draad "draad server" is verantwoordelijk voor het maken, het bindend, het luisteren en het onderhouden van een TCP/IP verbinding met de clienttoepassing voor Androïde voor updation van gegevens en het ophalen.
Wij hebben besloten de demonstratie prototype, Beaglebone black, een ontwikkel bord van Texas Instruments als de gateway-processor. Het is uitgerust met een minimale set van functies kan de gebruiker om te ervaren van de kracht van de processor en is niet bedoeld als een volledige ontwikkelplatform, zoals veel van de functies en interfaces geleverd door de processor niet toegankelijk vanaf de BeagleBone Black via ingebouwde ondersteuning van enkele interfaces zijn. BeagleBone Black is niet een compleet product ontworpen om te doen een bepaalde functie. Het is een Stichting voor experimenten en leren hoe te programmeren van de processor en de toegang tot de randapparatuur door het creëren van uw eigen software en hardware. Ook biedt toegang tot veel van de interfaces en voor het gebruik van add-on planken genaamd capes, toe te voegen van veel verschillende combinaties van functies. Een gebruiker kan ook ontwikkelen hun eigen bestuur of voeg hun eigen circuit.
Bestuur functies omvat:
1. AM335x 1GHz ARM® Cortex-A8
2. 512MB DDR3 RAM
3. 4GB eMMC van 8-bit on-board flash opslag
4. 3D grafische versneller
5. NEON drijvende accelerator
Connectiviteit:
1. USB-client voor power & communicatie
2. USB host
3. Ethernet
4. HDMI
5. 2 x 46 pin header
Softwarecompatibiliteit:
1. debian
2. android
3. Ubuntu
4. Cloud9 IDE