Përmbajtje:
- Hapi 1: Hacking Bluetooth Beacons
- Hapi 2: Krijimi i një Aftësie dhe Aplikacioni Alexa
- Hapi 3: Duke e bërë Aftësinë Tonë Më të Zgjuar
- Hapi 4: Vendosja e të gjitha së bashku
Video: Alexa, Ku janë çelësat e mi?: 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Alexa është veçanërisht i përshtatshëm për detyrat e marrjes së informacionit dhe monitorimin e aseteve duke përdorur rrjetet shtëpiake pa tel. Naturalshtë e natyrshme të merret parasysh vendosja e sendeve me vlerë në rrjet për marrje të shpejtë. Ne hakojmë fenerë të lirë bluetooth me energji të ulët për gamën e rrjetit dhe jetëgjatësinë e baterisë dhe ndërtojmë një aplikacion të zgjuar në mënyrë që Alexa të dijë se ku i kemi lënë çelësat.
Si ta bëni…
Hapi 1: Hacking Bluetooth Beacons
Një grup prej 3 fenerësh mund të blihen për më pak se 15 dollarë dhe mbështeten me aplikacione Android/iOS, por ne do të zgjedhim privatësinë. Për më tepër, gjetja e çelësave tanë nuk duhet të kthehet në gjetjen e telefonit tonë.
Ky mësim adafruit mbi dritat inteligjente inxhinierike të kundërta na ndihmoi të kontrollonim fenerët. Filloni duke aktivizuar skanimin e fenerit për adresën e pajisjes duke ekzekutuar:
sudo hcitool lescan
Gjeni dhe kopjoni adresën e etiketuar me emrin 'iTag', pastaj ekzekutoni:
sudo gatttool -I
Lidhuni me pajisjen në mënyrë interaktive duke ekzekutuar:
lidhni AA: BB: CC: DD: EE: FF
Provoni të përdorni "ndihmë" për të parë opsionet ose "parësore" për të parë shërbimet:
Duke ekzekutuar 'char-desc' e ndjekur nga doreza e shërbimit si më sipër, gjejmë UUID të cilat i shikojmë duke iu referuar specifikimeve karakteristike të gatt dhe specifikimeve të shërbimit. Për më shumë mbi këto shërbime, shikoni këtë. Duke kontrolluar trafikun me Wireshark, zbulojmë se 0100111000000001 shkakton alarmin dhe logjikisht, 0000111000000001 e fik atë. Tani kemi funksionin e thjeshtë python:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('Connect {}'. format (BD_ADDR)) child.expect ('Lidhja e suksesshme', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Tjetra, ne përqëndrohemi në krijimin e aftësisë Alexa për të ndezur fenerin kur po kërkojmë çelësat.
Hapi 2: Krijimi i një Aftësie dhe Aplikacioni Alexa
Ne krijojmë një aftësi që do të lidhet me një server lokal. Pastaj ne konfigurojmë serverin tonë që të ndërmarrë çdo veprim që ne dëshirojmë, në këtë rast, të sigurojë një përafrim se ku mund të vendosen çelësat dhe të bëjë sinjalin e sinjalit Bluetooth. Flask siguron një bibliotekë python të thjeshtë dhe të lehtë për t'u përdorur për t'i shërbyer një aplikacioni. Duke përdorur flask-ask, ne mund të konfigurojmë serverin që të komunikojë me aftësinë tonë Alexa që do të ndërtojmë më vonë. Shërbejeni mirë aplikacionin me Ngrok, i cili do të na japë një lidhje https që do të na duhet për aftësinë tonë Alexa. Së pari ne ndërtuam aplikacionin me funksionalitetin më të thjeshtë: ta bëjmë sinjalin tonë sinjalizues BLE kur aktivizohet.
#!/usr/bin/env python nga importi i balonës Flaska nga importi i shisheve Pyetni, importoni deklaratën pexpect app = Flask (_ name_) pyet = Pyetni (aplikacion, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF ' #Identifikuesi yt bluetooth këtu @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Çelësat e tu janë këtu diku." deklarata e kthimit (fjalimi_tekst) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('Connect {}'. format (BD_ADDR)) child.expect ('Lidhja e suksesshme', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') nëse _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Ne përdorëm funksionin sound_alarm () që kemi shkruar më herët për të bërë bip BLE. Për funksionin që do të përdoret për qëllimin, shtojmë dekoratorin e pyetjes me qëllimin tonë "findkeys". Kur krijojmë aftësinë Alexa në pultin e zhvilluesve të Amazon, ne do ta përdorim këtë emër për qëllimin tonë. Shkruani këtë skenar në një skedar të quajtur app.py dhe ekzekutoni
aplikacioni python.py
Kjo do t'i shërbejë aplikacionit tuaj në https:// localhost: 5000. Drejtoni një server ngrok dhe kopjoni lidhjen https të krijuar. Do t'ju duhet kur konfiguroni aftësinë Alexa. Për më shumë detaje, shikoni këtë postim. Ne kemi krijuar me sukses një aplikacion të thjeshtë, tani do të shkruajmë aftësinë Alexa. Shkoni te pulti i zhvilluesve të Amazon dhe regjistrohuni. Klikoni në Alexa dhe filloni me kompletin Alexa Skill
Ndiqni udhëzimet e dhëna nga gui.
Nën skedën Modeli i Integrimit do të dëshironi të plotësoni kutinë e Skemës së Qëllimit me sa vijon:
Në kutinë Sample Utterances, ju doni të shkruani disa komanda shembull që një person mund të përdorë për të thirrur aftësinë. Ne i kemi shkruar këto:
findkeys gjejnë tastet e mia keywords ku çelësat e mi findkeys kam humbur çelësat e mi
- Në skedën Konfigurimi, sigurohuni që të zgjidhni pikën përfundimtare të shërbimit në HTTPS. Kopjoni lidhjen tuaj https dhe ngjiteni në kutinë e Parazgjedhur poshtë. Lidhja e llogarisë mund të lihet në Nr.
- Në Certifikatën SSL zgjidhni opsionin e mesëm, "Pika përfundimtare e zhvillimit tim është një nën-domen i një domeni që ka një çertifikatë të egër nga një autoritet certifikate".
- Skeda Test do t'ju lejojë të provoni aftësinë e re duke shtypur një nga komandat tuaja të mostrës.
Përfundoni plotësimin e dy skedave të fundit derisa të gjitha shenjat e kontrollit të jenë jeshile. Pastaj filloni aftësitë tuaja me veçorinë e Testimit Beta. Kjo ju lejon të mbani aftësinë tuaj në çdo pajisje jehonë para se ta publikoni. Ndiqni udhëzimet në lidhjen e postës elektronike për të instaluar aftësinë në pajisjen tuaj jehonë.
Hapi 3: Duke e bërë Aftësinë Tonë Më të Zgjuar
Ne i vendosëm kompjuterët boshe të shpërndarë në të gjithë shtëpinë për të punuar në kërkimin e fenerit bluetooth për të raportuar fuqinë e sinjalit RSSI.
Duke marrë lexime nga makina të shumta, ne mund të përdorim fuqinë e sinjalit si një përfaqësues për distancën. Ne duhet të kuptojmë se si ta përdorim këtë për të llogaritur pjesën më të mundshme të shtëpisë për të gjetur fenerin.
Ne i drejtohemi mësimit të makinerisë. Një punë crontab çdo 2 minuta, krijon një grup të dhënash të tupleve RSSI. Duke e vendosur fenerin në pika të ndryshme si: 'Dhoma gjumi', 'Banjo', 'Kuzhina', 'Zona e jetesës' i etiketojmë regjistrat RSSI. Pasi të kemi hartëzuar shtëpinë, mund të përdorim modele të bazuara në pemë si XGBClassifier i xgboost.
Zbatimi xgboost i rritjes së gradientit do të trajtojë të dhënat e munguara nga leximet e skaduara, duke u stërvitur në disa sekonda. Përdorni turshi python për të vazhduar modelin e stërvitur dhe ngarkuar në aplikacionin tonë të marrjes së alexa. Kur të thirret aftësia, aplikacioni shikon leximin e RSSI bluetooth dhe gjeneron një vendndodhje të parashikuar, alexa mund të përgjigjet duke sugjeruar që të "provoni të shikoni në banjo".
Hapi 4: Vendosja e të gjitha së bashku
Duke pasur një model për të përafruar vendndodhjen e fundit të çelësave, ne mund ta shtojmë atë në aplikacion për të përmirësuar deklaratën e kthyer nga Alexa. Ne kemi modifikuar skenarin për të lexuar:
import osfrom nga balona import Flask nga flask_ask import Pyet, deklaratë import pexpect import turshi turshi si pd import numpy si np nga koleksionet import defaultdict, Counter from reverse_read import reverse_readline app = Flask (_ name_) pyes = Pyet (aplikacion, '/') @ ask.intent ('findkeys') def retrievr (): os.system ("/path/to/repo/sound_alarm.py &") speech_text = guess_locate () deklarata e kthimit (speech_text) def guess_locate (): read_dict = {} line_gen = linja e kundërt ('YOUR_DATA_FILE.txt') res_lst = ndërsa len (res_lst)! = 20: ln = tjetër (line_gen) nëse ln.startswith ('Host'): _, ip, _, leximi = ln.split () read_dict [ip] = leximi i res_lst.append (read_dict) nëse ip == 'ip.of.one.computer': read_dict = {} tjetër: kaloni val = pd. DataFrame (res_lst).zëvendësim ({'N/ A ': np.nan}). Vlerat mdl_ = pickle.load (hapur (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] answer_str = 'Provo të shikosh në' if guess == 1: answer_str += 'dhoma gjumi' elif guess == 2: answer_str += 'banjo' elif guess == 3: answer_str += 'kuzhinë' elif guess == 4: reply_str += 'dhoma e ndenjes' kthehu reply_str nëse _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Ne krijuam një funksion të ri të quajtur guess_locate () i cili merr një skedar me fuqitë më të fundit të regjistruara rssi të sinjalit. Pastaj do të ekzekutojë mostrat kundër modelit tonë turshi xgboost dhe do të kthejë vargun më të mundshëm të vendndodhjes. Ky vend do të kthehet kur të kërkohet nga Alexa. Meqenëse krijimi i një lidhjeje me një fener mund të zgjasë disa sekonda, ne kryejmë një proces të veçantë duke e thirrur atë funksion në sound_alarm.py.
Recommended:
Robo-Dog i thjeshtë (i bërë nga çelësat e pianos, një armë lodër dhe një mi): 20 hapa (me fotografi)
Robo-qen i thjeshtë (i bërë nga çelësat e pianos, një armë lodrash dhe një mi): Oh, Azerbajxhan! Toka e zjarrit, mikpritja e madhe, njerëzit miqësorë dhe gratë e bukura (… më fal, grua! Sigurisht që kam sy për ty, gruaja ime gözəl balaca ana ördəkburun!). Por sinqerisht, ky është një vend shumë i vështirë për një prodhues, veçanërisht kur ju
Çelësat e timonit në përshtatësin stereo të makinës (CAN Bus -> Key1): 6 hapa
Çelësat e timonit për përshtatësin stereo të makinës (CAN Bus -> Key1): Disa ditë pasi bleva një makinë të përdorur, zbulova se nuk mund të luaj muzikë nga telefoni im përmes stereos së makinës. Edhe më zhgënjyese ishte se makina kishte bluetooth, por lejonte vetëm thirrje zanore, jo muzikë. Kishte gjithashtu një port USB të Windows Phone, por unë
Prerja dhe lidhja e rripave të lehta Phillips Hue (Për ata prej nesh që nuk janë shumë të aftë me saldim): 6 hapa
Prerja dhe lidhja e rripave të lehta të Phillips Hue (Për ata prej nesh që nuk janë shumë të aftë me saldim): Nëse jeni të aftë për saldim, këtu keni një postim të mirë nga 'ruedli' se si ta bëni këtë pa i prerë copat e saldimit në gjysmë .Këto hapa janë për ata prej nesh që jemi të njohur, por që nuk janë super të aftë me saldimin. Unë kam bërë shitje bazë
Stacioni i motit Acurite 5 në 1 duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): 5 hapa (me fotografi)
Stacioni i motit Acurite 5 në 1 Duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): Kur kisha blerë stacionin e motit Acurite 5 në 1 doja të isha në gjendje të kontrolloja motin në shtëpinë time ndërsa isha larg. Kur mbërrita në shtëpi dhe e vendosa, kuptova se ose duhej ta kisha ekranin të lidhur me një kompjuter ose të blija shpërndarësin e tyre të zgjuar,
Si të kuptoni nëse Yahoo! Përdoruesit janë nënshkruar në mënyrën si të padukshme: 6 hapa
Si të kuptoni nëse Yahoo! Përdoruesit janë nënshkruar në modalitetin si të padukshëm: kjo do t'ju tregojë se si ta dini nëse përdoruesit e yahoo janë të regjistruar në mënyrë të padukshme dhe me të vërtetë punon për yahoo messenger 8, por nuk e provova në 9 (beta) …. si funksionon: doodle do të fillojë nëse shoku juaj është në gjendje të padukshme si kjo ::: "JOHN" shfaqet jashtë