Sadržaj:
- Korak 1: Hakiranje Bluetooth Beacons -a
- Korak 2: Stvaranje Alexa vještine i aplikacije
- Korak 3: Učinimo našu vještinu pametnijom
- Korak 4: Sve spojite
Video: Alexa, gdje su mi ključevi?: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Alexa je posebno pogodna za zadatke pronalaženja informacija i nadgledanje imovine pomoću bežičnih kućnih mreža. Prirodno je razmisliti o stavljanju dragocjenosti na mrežu radi brzog pronalaska. Hakiramo jeftine bluetooth niskoenergetske svjetionike za raspon mreže i trajanje baterije te izrađujemo pametnu aplikaciju tako da Alexa zna gdje smo ostavili ključeve.
Kako to učiniti…
Korak 1: Hakiranje Bluetooth Beacons -a
Skup od 3 svjetionika može se kupiti za manje od 15 USD i podržani su Android/iOS aplikacijama, ali ćemo se isključiti zbog privatnosti. Osim toga, pronalaženje ključeva ne bi se trebalo pretvoriti u pronalaženje našeg telefona.
Ovaj adafruit vodič o pametnim svjetlima za obrnuti inženjering pomogao nam je u kontroli svjetionika. Počnite tako da uključite beacon scan za adresu uređaja pokretanjem:
sudo hcitool lescan
Pronađite i kopirajte adresu označenu imenom "iTag", a zatim pokrenite:
sudo gatttool -Ja
Interaktivno se povežite s uređajem tako što ćete pokrenuti:
spojite AA: BB: CC: DD: EE: FF
Pokušajte pokrenuti "pomoć" za pregled opcija ili "primarnu" za pregled usluga:
Pokretanjem 'char-desc' nakon kojeg slijedi uslužni rukohvat kao gore, pronalazimo UUID-ove koje tražimo pozivanjem na specifikacije karakterističnih za gatt i specifikacije usluge. Za više informacija o ovim uslugama provjerite ovo. Istražujući promet putem Wiresharka, otkrivamo da 0100111000000001 aktivira alarm i logično ga isključuje 0000111000000001. Sada imamo jednostavnu funkciju python:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Veza je uspješna', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Zatim se usredotočujemo na stvaranje Alexa vještine za aktiviranje svjetionika kada tražimo ključeve.
Korak 2: Stvaranje Alexa vještine i aplikacije
Stvaramo vještinu koja će biti povezana s lokalnim poslužiteljem. Zatim konfiguriramo naš poslužitelj da poduzme bilo koju radnju koju želimo, u ovom slučaju dajemo približnu informaciju o tome gdje bi se ključevi mogli nalaziti i oglašava zvučni signal Bluetooth signala. Flask pruža jednostavnu i laku za korištenje python knjižnicu za posluživanje aplikacije. Pomoću flask-ask možemo konfigurirati poslužitelj za komunikaciju s našom Alexa vještinom koju ćemo izgraditi kasnije. Dobro poslužite aplikaciju s Ngrokom, koji će nam dati https vezu koja će nam trebati za našu Alexa vještinu. Najprije smo izgradili aplikaciju s najjednostavnijom funkcionalnošću: kako bi naš BLE beacon pustio zvuk kada se aktivira.
#!/usr/bin/env pythoniz importa tikvice Boca iz flask_ask uvoz Pitaj, uvoz izvoda pexpect app = Flask (_ name_) ask = Pitaj (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Vaš bluetooth beacon id ovdje @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Vaši ključevi su tu negdje." return statement (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Veza je uspješna', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Upotrijebili smo funkciju sound_alarm () koju smo ranije napisali kako bismo pojačali BLE zvučni signal. Za funkciju koja će se koristiti za namjeru, dodajemo dekorater upita s našom namjerom "findkeys". Kad steknemo Alexa vještinu na nadzornoj ploči za programere Amazona, koristit ćemo ovo ime za svoju namjeru. Napišite ovu skriptu u datoteku pod nazivom app.py i pokrenite je
python app.py
Ovo će poslužiti vašu prijavu na https:// localhost: 5000. Pokrenite ngrok poslužitelj i kopirajte generiranu https vezu. Trebat će vam kada konfigurirate Alexa vještinu. Za više detalja pogledajte ovaj post. Uspješno smo postavili jednostavnu aplikaciju, sada ćemo napisati Alexa vještinu. Idite na nadzornu ploču za programere Amazona i prijavite se. Kliknite na Alexa i počnite s korištenjem Alexa Skill kompleta
Slijedite upute koje je dao gui.
Na kartici Model interakcije želite ispuniti okvir Shema namjere sa sljedećim:
U okvir Sample Utterances želite napisati neke uzorke naredbi koje bi osoba mogla upotrijebiti za dozivanje vještine. Napisali smo ovo:
findkeys find my keysfindkeys where my keys findkeys izgubio sam ključeve
- Na kartici Konfiguracija svakako odaberite krajnju točku usluge na HTTPS. Kopirajte svoju https vezu i zalijepite je u okvir Zadano ispod. Povezivanje računa možete ostaviti na No.
- U SSL certifikatu odaberite srednju opciju, "Moja razvojna krajnja točka je poddomena domene koja ima zamjenski certifikat od tijela za izdavanje certifikata".
- Kartica Test omogućit će vam da isprobate novu vještinu upisivanjem jedne od vaših oglednih naredbi.
Popunite posljednje dvije kartice dok sve kvačice ne postanu zelene. Zatim pokrenite svoju vještinu pomoću značajke Beta testiranja. To vam omogućuje da svoju vještinu ugostite na bilo kojem eho uređaju prije objavljivanja. Slijedite upute na vezi s e -poštom da biste instalirali vještinu na svoj echo uređaj.
Korak 3: Učinimo našu vještinu pametnijom
Računala u stanju mirovanja raširila smo se po cijeloj kući da rade na upitima za bluetooth beacon kako bi izvijestili o jačini RSSI signala.
Uzimajući očitanja s više strojeva, možemo upotrijebiti jačinu signala kao zamjenu za udaljenost. Moramo smisliti kako to iskoristiti za izračunavanje najvjerojatnijeg dijela kuće za pronalaženje svjetionika.
Okrećemo se strojnom učenju. Posao crontab svake 2 minute stvara skup podataka RSSI tuplea. Postavljanjem svjetionika na različita mjesta, poput: 'Spavaća soba', 'Kupaonica', 'Kuhinja', 'Dnevni prostor' označavamo RSSI zapise. Nakon što smo kartirali dom, možemo koristiti modele zasnovane na drvetu poput xgboostovog XGBClassifier-a.
Implementacija povećanja gradijenta xgboost obradit će podatke koji nedostaju iz vremenski ograničenih očitanja, trening za nekoliko sekundi. Upotrijebite python pickle da biste ustrajali u obučenom modelu i učitali ga u našu aplikaciju alexa retrievr. Kada se pozove vještina, aplikacija traži bluetooth RSSI čitanje i generira predviđeno mjesto, alexa može odgovoriti sugerirajući mu da "pokuša pogledati u kupaonici."
Korak 4: Sve spojite
Imajući model za približnu zadnju lokaciju ključeva, možemo ga dodati u aplikaciju kako bismo poboljšali izjavu koju je vratila Alexa. Skriptu smo izmijenili tako da glasi:
import osfrom flask import Flask from flask_ask import Ask, izjava import pexpect import pickle import pande kao pd import numpy kao np iz zbirki import defaultdict, Brojač iz reverse_read import reverse_readline app = Flask (_ name_) ask = Pitaj (app, '/') @ ask.intent ('findkeys') def retrievr (): os.system ("/path/to/repo/sound_alarm.py &") speech_text = guess_locate () return statement (speech_text) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = dok je len (res_lst)! = 20: ln = next (line_gen) ako je ln.startswith ('Host'): _, ip, _, očitanje = ln.split () read_dict [ip] = čitanje res_lst.append (read_dict) ako je ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Vrijednosti mdl_ = pickle.load (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) pretpostavka = Counter (preds) pogodak = pogodak.most_common (1) [0] [0] reply_str = 'Pokušajte pogledati "if guess == 1: reply_str +=' spavaća soba" elif pogađanje == 2: reply_str += 'kupaonica' elif pogodak == 3: reply_str += 'kuhinja' elif pogodak == 4: reply_str += 'dnevna soba' povratak odgovor_str ako _ime_ == "_maj_": app.run (host = '127.0.0.1', port = '5000')
Napravili smo novu funkciju pod nazivom guess_locate () koja uzima datoteku s najnovijim zabilježenim jačinama rssi signala. Zatim će pokrenuti uzorke prema našem ukiseljenom modelu xgboost i vratiti najvjerojatniji niz lokacije. Ovo mjesto će biti vraćeno kada Alexa zatraži. Budući da uspostavljanje veze s beaconom može potrajati nekoliko sekundi, pokrećemo zaseban proces koji poziva tu funkciju u sound_alarm.py.
Preporučeni:
Ključevi upravljača na stereo adapteru za automobil (CAN sabirnica -> ključ1): 6 koraka
Ključevi upravljača na stereo adapteru za automobil (CAN sabirnica -> ključ 1): Nekoliko dana nakon kupnje rabljenog automobila, otkrio sam da ne mogu reproducirati glazbu sa svog telefona putem stereo uređaja u automobilu. Još je više frustriralo to što je automobil imao bluetooth, ali je dopuštao samo glasovne pozive, a ne i glazbu. Također je imao USB port za Windows Phone, ali ja
ZEČE ZEČE GDJE SI ?: 3 koraka
ZEČI ZEKO GDJE STE?: Ja sam s Tajvana i imam 13 godina, a moje ime je Chia-Ying Wu.Naša obitelj ima zeca, često se igra s nama u skrivača. Voli se skrivati u kutu pored sofe, ali budući da kauč zaklanja pogled, često ga ne možemo pronaći. S
Drveni Macbook ključevi (s funkcijom pozadinskog osvjetljenja): 7 koraka
Drveni Macbook ključevi (s funkcijom pozadinskog osvjetljenja): Uvod Mac računala su jako modificirana u posljednjih nekoliko godina. To se može razlikovati u promjenama boja, naljepnicama, gravurama i još mnogo toga. Drveni ključevi na macbooku uvijek su me impresionirali. Možete ih putem interneta s raznih mjesta kupiti za oko 70 USD ili
Malo i jeftino džepno računalo koje se može programirati bilo gdje .: 5 koraka
Malo i jeftino džepno računalo koje se može programirati bilo gdje: CardKB možete pretvoriti u džepno računalo! Potpuno džepno računalo za CardKB pomoću ArduinoBaisc, CardKB, I2C OLED zaslona. Budući da BASIC koristi ArduinoBasic (https://github.com/robinhedwards/ArduinoBASIC), podržava gotovo sve normalne funkcije, poput
Brzo punjenje bilo gdje: 5 koraka (sa slikama)
Brzo punjenje bilo gdje: Hej! svi Moje ime je Steve.Danas ću vam pokazati kako brzo napuniti telefon bilo gdje Ovo baš kao i DIY Project Kliknite ovdje da vidite VideoLet's Start