Projektni zadatak
Potrebno je projektovati i implementirati aplikaciju za upravljanje pametnom kućom pomoću glasov- nih komandi. Ključni zahtevi se odnose na projektovanje sledećih mogućnosti:
- Prepoznavanje korisničkog zahteva na osnovu glasa.
- Rad sa uređajima u okviru pametne kuće.
- Povezivanje sa društvenim mrežama.
- Objavljivanje statusa.
- Povezivanje sa servisom za vremensku prognozu.
Zahtev se sastoji u kreiranju aplikacije koja treba da omogući upravljanje uređajima u pametnoj kući pomoću Raspberry Pi mikroračunara. Pomoću ove aplikacije korisnik može da pali i gasi željene uređaje kao što su svetla, klima, televizor i drugi. Takođe, korisnik ima uvid u stanje uređaja u kući, odnosno u svakom trenutku može da proveri da li je neki uređaj upaljen ili ugašen. Još neke opcije koje aplikacija nudi su uvid u trenutnu temperaturu u kući na osnovu koje korisnik može da upali ili ugasi klima uređaj. Takođe, korisnik može da sazna trenutnu temperaturu u svome gradu.
Aplikacija takođe treba da omogući povezivanje sa nekim od društvenih mreža kao što su Fejsbuk i Tviter. Nakon povezivanja sa društvenim mrežama korisnik može da pogleda dosadašnje objave, da proveri da li ima novih obaveštenja na Fejsbuku, i da objavi novi status na izabranoj mreži.
U okviru rešenja, potrebno je definisati modele uređaja i njihov scenario rada u pametnoj kući. Svaki pametni uređaj treba da ima opis specifikacije.
Projektovanje
Aplikacija za upravljanje pametnom kućom pomoću glasovnih komandi napravljena je iz tri dela. Prvi deo je Android aplikacija koji predstavlja vezu između korisnika i Raspberry Pi mikroračunara. Drugi deo je server čiji je zadatak da prihvata zahtev od klijenta i prosledi ga do kontrolera. Treći deo je kontroler koji na osnovu zahteva određuje naredne korake.
Glavni deo aplikacije je kontroler. On prihvata zahtev od klijenta, koji je u ovom slučaju prosleđen preko Android aplikacije i servera koji je pokrenut na Raspberry Pi mikroračunaru. Kada kontroler dobije zahtev, on proverava da li u njemu postoje ključne reči. Na osnovu ključnih reči kontroler odlučuje o sledećem koraku.
Aplikacija omogućava paljenje svetla u željenim delovima kuće, gašenje svetala i provere da li je svetlo upaljeno ili ugašeno. Ovo se obavlja kontrolisanjem odgovarajućih pinova koji su povezani sa svetlima u kući. Skripta Pin.py na osnovu zahteva klijenta odlučuje šta da radi. Pomoću skripti pali.py, gasi.py i provera.py obavlja odgovarajuće funkcije.
Još neke od funkcionalnosti koje aplikacija nudi su merenje trenutne temperature u kući i u gradu. Merenje trenutne temperature u kući vrši se pomoću 18B20 senzora koji je povezan sa Raspbery Pi mikroračunarom. Pomoću kôda koji se nalazi u skripti pristupa se senzoru i očitava temperatura. Druga operacija je merenje trenutne temperature u gradu. Ovo se vrši pomoću API-a koji se nudi na openweathermap sajtu.
Aplikacija omogućava povezivanje sa društvenim mrežama. Korisnik može proveriti da li ima novih notifikacija na Fejsbuku i objaviti status na Tviteru. Da bi se proverile notifikacije na Fejsbuku potrebno je naći adresu RSS feed-a notifikacija na nalogu korisnika. Do njega se dolazi tako što se klikne na notifikacije, pa na sve notifikacije, onda na RSS i zatim se kopira ta adresa.
Objavljivanje statusa na Tviteru obavlja se pomoću biblioteke koja se može preuzeti sa adrese https:// github.com/bear/python-twitter. Potrebno je prethodno pribaviti odgovarajuće tokene sa sajta https:// dev.twitter.com/overview/documentation. Sledi skripta Twitter.py koja prikazuje objavljivanje statusa na Tviteru.
Jedna od najvažnijih skripti u ovom rešenju je ona koja omogućava Text-to-Speech, odnosno omogućava pretvaranje teksta u govor.
Android aplikacija koja predstavlja vezu između korisnika i aplikacije koja upravlja Raspberry Pi mikroračunarom napravljena je u Android studiju. Kako Android već sadrži ugrađenu funkcionalnost „Speech to Text“ odnosno, pretvaranje govora u tekst, ta funkcionalnost je ovde iskorišćena. U pozadini se zvuk šalje do servera gde se vrši konverzija u tekst i zatim se vraća do aplikacije. Aplikacija dalje taj tekst šalje do servera koji je pokrenut na Raspebrry Pi mikroračunaru koji zatim prosleđuje tekst do kontrolera na obradu, a zatim se izvršava odgovarajuća operacija. Android aplikacija realizovana je u tri klase MainActivity, Kontroler i Podesavanja. MainActivity je glavna klasa preko koje se sve izvršava, odnosno korisnik na njoj izgovara ključne reči. Nakon toga, pomoću klase Kontroler, Android aplikacija šalje tekst serveru. Adresa na koju se šalje se čuva u okviru „SharedPreferences“ gde se ubacuje pomoću klase Podesavanja.
Za realizaciju ovog rešenja možete koristiti temp.fzz .
Reči ili fraze na koje se aktivira izvršavanje određenih skripti:
o Trenutna temperatura u kući
o Trenutna temperatura u Beogradu
o Koliko je sati
o Proveri Fejsbuk
o Objavi Tviter
o Upali crven/žut/zelen
o Ugasi crven/žut/zelen
o Da li je upaljeno crven/žut/zelen