Smarta hemmet energi övervakning & management system (7 / 9 steg)
Steg 7: Android ansökan DESIGN
Introduktion
Denna ansökan kommer att ansvara för kommunikation från gateway via Wi-Fi. Först kommer det att be för inloggning och lösenord så att obehöriga användare inte kommer att kunna använda den. Sedan kommer det att skicka kommandot för specifika data som krävs av användaren och sedan kommer den att visa data skicka av gateway i annan form. Det finns olika knappar för olika typer av data som ska visas, på varje klick ett visst kommando skickas så att gateway kommer att inse att vilka data som ska skickas till användare från databasen. Det finns också bestämmelser för turning ON och OFF meter enligt användarnas behov från program. Denna mätare är smart i den meningen att vi kan fastställa en gräns av energiförbrukningen i ansökan mätaren kommer att sända denna gräns till gateway gateway kommer att hålla koll på energiförbrukningen på når denna gräns det automatiskt stänger av apparater.
I bilden ovan kan vi se att Meter1 är aktiverat medan Meter2 inte är, vilket vi kommer att kunna använda knappar av mätaren 1 Knapparna som är relaterade till mätaren 2 är inaktiverad för att förhindra dem från oavsiktlig användning. Det finns också tre knappar för att skicka kommandon för att hämta aktuella användningsdata, dataanvändning tidigare veckor innevarande månad och föregående dag data konsumtion. Det finns också en switch för varje mätare att slå på och av, detta kommer att orsaka apparaten slås på/av enligt vår önskan. Den aktuella användningen visas på samma skärm och de data som visas är ström, spänning, ström och energi. Andra kommandon kommer att orsaka data som ska visas på olika verksamhet i form av grafer. Längst ner är textrutan gränsvärde för månadsförbrukningen, på knappen nedan som visar energiförbrukningen i föregående månad.
Vi har använt Achartengine biblioteket som vi har att kopiera i libs mappen i projektet och vi måste lägga till dess grafiska aktivitet i vårt mainfest filen för att visa data i form av grafer. Vi har använt Achartengine eftersom det är gratis, lite och stöder olika typer av grafer.
Om du vill skicka kommando och ta emot data har vi använt Stream Sockets, eftersom vid UDP sockets det kan finnas chans att uppgifter kan vara förlorade vilket gör ansökan till beter sig onormalt. Data skicka och ta emot är en tidskrävande process så för varje kommunikation en tråd skapas, kommunikation kommer att ske i dess hanterare och resultaten kommer att offentliggöras av dess runnable i huvudtråden. På slutet av varje tråd stängs också sin sockel. Vi har också använt några bakgrundsbilder, som måste vara kopierade /bin/res/drawable-mdpi mapp.
ANDROID WIDGETS ANVÄND-
1. TEXTRUTOR - kan visa olika meddelanden.
2. Redigera RUTORNA – för att ta indata för användaren.
3. knappar – att utföra några åtgärder därefter.
4. växlar – att slå på och av apparater.
5. VÄXLINGSKNAPPAR – att utföra åtgärd på Växla på / Växla bort.
6. relativ LAYOUT – att ordna olika widgets på skärmen.
7. linjär LAYOUT – att ordna olika widgets på skärmen.
OLIKA API & metoder används-
1. findViewById
2. onClick
3. onPause
4. onResume
5. onKeyDown
6. onCheckedChange
7. setOnClickListener
8. setOnCheckedChangeListener
9. startActivity
10. putExtra
11. getExtra
12. och många fler
Mekanismer som används
SOCKETS - Sockets är en metod för IPC som tillåter uppgifter som skall utbytas mellan program, antingen på samma värd (dator) eller på olika värdar anslutna via ett nätverk.
Uttagen finns i meddelande-domänen som bestämmer:
1. metod för att identifiera en socket (dvs format för en socket "adress")
2. och spänna av kommunikation (dvs. antingen mellan program på samma värddator eller mellan program på olika värdar anslutna via ett nätverk).
SOCKET typer-är av två typer
1. TCP-Socket
2. UDP-Socket
Vi har använt TCP-Socket på grund-
TCP Sockets ger en tillförlitlig, dubbelriktad, byteström kommunikationskanal. Enligt villkoren i denna beskrivning, innebär följande: tillförlitligt sätt som vi är garanterat att antingen överförda data kommer intakt till det mottagande programmet, exakt så som de översänts av avsändaren (förutsatt att varken nätverkslänken eller mottagaren kraschar), eller att vi får anmälan av troliga fel i överföringen.
Dubbelriktad innebär att data kan överföras mellan två uttag. Byteström innebär att, som med rör, det är inget begrepp om meddelandegränser.
Trådar - All nätverk relaterade aktiviteten bör inte utföras i röda tråden eftersom då vår ansökan blir oansvariga. Därför bör vi använda
1. asynkron uppgift eller
2. trådar
Vi har använt här trådar, för varje klick att utföra en nätverksåtgärd kommer att skapas en tråd som kommer att ansvara för dataöverföring. För varje tråd måste vi också genomföra en hanterare och en runnable metod.
HANDLER - Handlers används för att schemalägga åtgärder i tråd, i vid mening kan vi säga att det i kö listan över åtgärder som ska utföras. Eller till enqueue en åtgärd som ska utföras på en annan tråd.
RUNNABLE – dessa körs någon gång i framtiden, från en hanterare som vi direkt kan inte våra användargränssnitt för att vi behöver runnables.