Kazalo:
- 1. korak: Vdor v svetilnike Bluetooth
- 2. korak: Ustvarite Alexa spretnost in aplikacijo
- 3. korak: naredimo naše sposobnosti pametnejše
- 4. korak: Združite vse skupaj
Video: Alexa, kje so moji ključi?: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Alexa je še posebej primerna za naloge iskanja informacij in spremljanje sredstev z uporabo brezžičnih domačih omrežij. Naravno je razmisliti o dajanju dragocenosti na mrežo za hiter priklic. Vdremo v poceni bluetooth nizkoenergijske svetilnike za doseg omrežja in dolgo življenjsko dobo baterije ter izdelamo pametno aplikacijo, tako da Alexa ve, kje smo pustili ključe.
Kako narediti…
1. korak: Vdor v svetilnike Bluetooth
Komplet 3 svetilnikov je mogoče kupiti za manj kot 15 USD in jih podpirajo aplikacije za Android/iOS, vendar se bomo zaradi zasebnosti odločili. Poleg tega iskanje ključev ne bi smelo prerasti v iskanje telefona.
Ta vadnica adafruit o pametnih lučeh za vzvratno inženiring nam je pomagala pri nadzoru svetilnikov. Začnite tako, da vklopite optično branje naslova naprave tako, da zaženete:
sudo hcitool lescan
Poiščite in kopirajte naslov z imenom 'iTag', nato zaženite:
sudo gatttool -I
Interaktivno se povežite z napravo tako, da zaženete:
povežite AA: BB: CC: DD: EE: FF
Poskusite zagnati "help" za ogled možnosti ali "primary" za ogled storitev:
Če zaženete "char-desc", ki mu sledi servisni ročaj, kot je opisano zgoraj, najdemo UUID-je, ki jih poiščemo s sklicevanjem na specifikacije značilnosti gatt in specifikacije storitev. Za več informacij o teh storitvah si oglejte to. Ko pregledamo promet z Wiresharkom, ugotovimo, da 0100111000000001 sproži alarm in ga logično izklopi 0000111000000001. Zdaj imamo preprosto funkcijo python:
uvoz pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Povezava uspešna', časovna omejitev = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Nato se osredotočimo na ustvarjanje spretnosti Alexa, ki sproži svetilnik, ko iščemo ključe.
2. korak: Ustvarite Alexa spretnost in aplikacijo
Ustvarjamo veščino, ki bo povezana z lokalnim strežnikom. Nato konfiguriramo naš strežnik za izvajanje kakršnih koli dejanj, ki jih želimo, v tem primeru podamo približek, kje se lahko nahajajo ključi, in oddaja signalni svetilnik Bluetooth. Flask ponuja preprosto in enostavno uporabo knjižnice python za serviranje aplikacije. S pomočjo flask-ask lahko strežnik konfiguriramo tako, da komunicira z našimi veščinami Alexa, ki jih bomo zgradili kasneje. Vročite aplikacijo z Ngrokom, ki nam bo dal povezavo https, ki jo potrebujemo za naše znanje Alexa. Najprej smo sestavili aplikacijo z najpreprostejšo funkcionalnostjo: tako, da bo naš svetilnik BLE piskal, ko se sproži.
#!/usr/bin/env python iz uvoza bučke Flask iz flask_ask import Vprašaj, uvoz stavka pexpect app = Flask (_ name_) ask = Vprašaj (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#You bluetooth beacon id here @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Vaši ključi so tukaj nekje." return statement (govorni_tekst) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Povezava uspešna', časovna omejitev = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001'), če je _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Za pisk BLE smo uporabili funkcijo sound_alarm (), ki smo jo napisali prej. Za funkcijo, ki bo uporabljena za namen, dodamo dekoraterja ask z našo namero "findkeys". Ko na nadzorni plošči za razvijalce Amazon razvijemo znanje Alexa, bomo to ime uporabili za svoj namen. Ta skript zapišite v datoteko z imenom app.py in zaženite
python app.py
To bo vaši prijavi posredovano na https:// localhost: 5000. Zaženite strežnik ngrok in kopirajte ustvarjeno povezavo https. Potrebovali boste, ko konfigurirate spretnost Alexa. Za več podrobnosti si oglejte to objavo. Uspešno smo nastavili preprosto aplikacijo, zdaj bomo napisali spretnost Alexa. Pomaknite se na nadzorno ploščo razvijalca Amazon in se prijavite. Kliknite Alexa in začnite uporabljati komplet Alexa Skill
Sledite navodilom gui.
Na zavihku Interation Model boste želeli polje Intent Schema izpolniti z naslednjim:
V polje Sample Utterances želite vnesti nekaj vzorčnih ukazov, ki jih lahko oseba uporabi za priklic spretnosti. Napisali smo tole:
findkeys find my keysfindkeys where my keys findkeys izgubil sem ključe
- Na zavihku Konfiguracija izberite končno točko storitve na HTTPS. Kopirajte svojo povezavo https in jo prilepite v polje Privzeto pod njo. Povezovanje računov lahko pustite na št.
- V potrdilu SSL izberite srednjo možnost: "Moja razvojna končna točka je poddomena domene, ki ima nadomestni certifikat organa za potrdila".
- Zavihek Test vam bo omogočil, da preizkusite novo spretnost tako, da vnesete enega od vzorčnih ukazov.
Zadnja dva zavihka dokončajte, dokler vse kljukice ne postanejo zelene. Nato zaženite svoje znanje s funkcijo Beta Testing. To vam omogoča, da pred objavo svoje spretnosti gostite na kateri koli odmevni napravi. Sledite navodilom na e -poštni povezavi, da namestite spretnost v svojo odmevno napravo.
3. korak: naredimo naše sposobnosti pametnejše
Neaktivne računalnike, razpršene po hiši, smo spraševali po bluetooth svetilniku za poročanje o jakosti signala RSSI.
Če beremo odčitke z več naprav, lahko moč signala uporabimo kot približek za razdaljo. Ugotoviti moramo, kako to uporabiti za izračun najverjetnejšega dela hiše za iskanje svetilnika.
Obrnili se bomo na strojno učenje. Delo crontab vsake 2 minuti ustvari nabor naborov RSSI. Če svetilnik postavimo na različna mesta, kot so 'Spalnica', 'Kopalnica', 'Kuhinja', 'Bivalni prostor', označimo dnevnike RSSI. Ko smo kartirali dom, lahko uporabimo drevesne modele, kot je xgboost XGBClassifier.
Izvajanje povečanja gradienta xgboost bo obravnavalo manjkajoče podatke iz časovno omejenih odčitkov in usposabljanja v nekaj sekundah. Uporabite python pickle za vztrajanje usposobljenega modela in naložite v našo aplikacijo alexa retrievr. Ko je spretnost poklicana, aplikacija poišče bralnik RSSI bluetooth in ustvari predvideno lokacijo, alexa pa lahko odgovori in predlaga, da "poskusite pogledati v kopalnico."
4. korak: Združite vse skupaj
Ker imamo model za približevanje zadnje lokacije ključev, ga lahko dodamo v aplikacijo za izboljšanje izjave, ki jo vrne Alexa. Skript smo spremenili tako, da se glasi:
import osfrom flask import Flask from flask_ask import Ask, stavek import pexpect uvoz pickle uvoz pand kot pd import numpy kot np iz zbirk import defaultdict, števec iz reverse_read import reverse_readline app = Flask (_ name_) ask = Vprašaj (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 = medtem ko je len (res_lst)! = 20: ln = naslednji (line_gen), če je ln.startswith ('Host'): _, ip, _, branje = ln.split () read_dict [ip] = branje res_lst.append (read_dict), če je ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Vrednosti mdl_ = pickle.load (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] reply_str = 'Poskusi poiskati' če ugibam == 1: reply_str += 'spalnica' elif uganka == 2: reply_str += 'kopalnica' elif uganka == 3: reply_str += 'kuhinja' elif uganka == 4: reply_str += 'dnevna soba' vrnitev reply_str če _name_ == "_maj_": app.run (gostitelj = '127.0.0.1', port = '5000')
Ustvarili smo novo funkcijo, imenovano guess_locate (), ki vzame datoteko z najnovejšo močjo signala rssi. Nato bo vzorce izvedel proti našemu vloženemu modelu xgboost in vrnil najverjetnejši niz lokacije. Ta lokacija bo vrnjena, ko bo Alexa pozvan. Ker vzpostavitev povezave z svetilnikom lahko traja nekaj sekund, zaženemo ločen postopek, ki to funkcijo pokliče v sound_alarm.py.
Priporočena:
KENEC ZUNEC KJE SI?: 3 koraki
ZAJEC KENEC KJE STE?: Jaz sem s Tajvana in sem star 13 let in moje ime je Chia-Ying Wu. Naša družina ima zajca, z nami se pogosto igra skrivalnice. Rad se skriva v kotu poleg kavča, a ker pogled zamaši kavč, ga pogosto ne najdemo. S
Fred! Kje ste?: 3 koraki
Fred! Kje ste ?: Ta projekt govori o tem, koliko kilometrov od vaše hiše ste. Fred se napaja iz baterije, ki se lahko polni kot pametni telefon, zato jo lahko prinesete s seboj. To je zelo enostavno zgraditi, vendar se morda zataknete pri kodiranju. V tem projektu boste
Spremenite sistem Windows, da prikažete, kje je bila fotografija posneta: 4 koraki
Spremenite sistem Windows, da bo prikazano, kje je bila fotografija posneta: Uvod Ali ste že kdaj pogledali svoje potovalne fotografije in se začeli spraševati, kam ste jih posneli? Kako se je imenovalo tisto mestece, v katerem ste se ustavili pred petimi leti, v katerem ste pili najbolj neverjetno kavo? Ko spremenite Wind
LED POPLAVNA LUČ V MOJI DNEVNI SOBI !!!: 6 korakov
LED POPLAVNA SVETILKA V MOJI DNEVNI SOBI !!!: 18 LED žarnica za " dodatno " svetlost
Skrivaj gledajte, kaj se dogaja, ni važno, kje ste.: 4 koraki
Na skrivaj opazujte, kaj se dogaja, ni pomembno, kje ste. Ta navodila vam bodo pokazala, kako z aplikacijo iCom/ipod na dotik "iCam" in računalnikom vidite, kaj se dogaja s spletno kamero, kjer koli že ste. To je moj prvi pouk, zato prosim brez ostrih kritik. Ne motim nobenih povratnih informacij