Turinys:
- 1 veiksmas: įsilaužimas į „Bluetooth“švyturėlius
- 2 veiksmas: sukurkite „Alexa“įgūdį ir programą
- 3 žingsnis: Padarykite mūsų įgūdžius protingesnius
- 4 žingsnis: sudėkite viską kartu
Video: Alexa, kur yra mano raktai?: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
„Alexa“ypač tinka informacijos paieškos užduotims ir turto stebėjimui naudojant belaidžius namų tinklus. Natūralu apsvarstyti galimybę vertingus daiktus įdėti į tinklą, kad juos būtų galima greitai atgauti. Nulaužame pigius „Bluetooth“mažai energijos naudojančius švyturėlius, skirtus tinklo diapazonui ir baterijos ilgaamžiškumui, ir sukuriame išmanią programą, kad „Alexa“žinotų, kur palikome raktus.
Kaip tai padaryti…
1 veiksmas: įsilaužimas į „Bluetooth“švyturėlius
3 švyturių rinkinį galima įsigyti už mažiau nei 15 USD ir jie palaikomi naudojant „Android“/„iOS“programas, tačiau mes atsisakysime privatumo. Be to, raktų paieška neturėtų virsti mūsų telefono paieška.
Ši „Adafruit“pamoka apie atvirkštinės inžinerijos išmaniuosius žibintus padėjo mums valdyti švyturėlius. Pradėkite įjungdami įrenginio adreso švyturėlio nuskaitymą vykdydami:
sudo hcitool lescan
Raskite ir nukopijuokite adresą, pažymėtą pavadinimu „iTag“, tada paleiskite:
sudo gatttool -I
Interaktyviai prisijunkite prie įrenginio vykdydami:
prijunkite AA: BB: CC: DD: EE: FF
Pabandykite paleisti „help“, kad peržiūrėtumėte parinktis, arba „pirminį“, kad peržiūrėtumėte paslaugas:
Vykdydami „char-desc“, o po to aptarnavimo rankenėlę, kaip nurodyta aukščiau, randame UUID, kurių ieškome remdamiesi gatt charakteristikomis ir paslaugų specifikacijomis. Norėdami sužinoti daugiau apie šias paslaugas, patikrinkite tai. Tikrindami srautą naudodami „Wireshark“, nustatome, kad 0100111000000001 suaktyvina aliarmą ir logiškai 0000111000000001 jį išjungia. Dabar turime paprastą python funkciją:
importuoti pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Ryšys sėkmingas', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Toliau mes sutelkiame dėmesį į „Alexa“įgūdžių kūrimą, kad suaktyvintų švyturėlį, kai ieškome raktų.
2 veiksmas: sukurkite „Alexa“įgūdį ir programą
Sukuriame įgūdį, kuris bus susietas su vietiniu serveriu. Tada mes sukonfigūruojame savo serverį atlikti bet kokius norimus veiksmus, šiuo atveju pateikiame apytikslę informaciją apie tai, kur gali būti raktai, ir pypsime „Bluetooth“švyturėlį. „Flask“suteikia paprastą ir lengvai naudojamą „python“biblioteką, skirtą programai aptarnauti. Naudodami „flask-ask“, mes galime sukonfigūruoti serverį bendrauti su mūsų „Alexa“įgūdžiais, kuriuos sukursime vėliau. Gerai aptarkite programą su „Ngrok“, kuri suteiks mums https nuorodą, kurios mums reikės norint įgyti „Alexa“įgūdžių. Pirmiausia mes sukūrėme programą su paprasčiausiomis funkcijomis: kad mūsų BLE švyturys pyptelėtų, kai suaktyvinamas.
#!/usr/bin/env pythonfrom kolbos importavimas Kolba iš kolbos_ask importas Klausti, teiginio importavimas pexpect app = Kolba (_ name_) ask = Klausti (programa, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Jūsų „Bluetooth“švyturėlio ID čia @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Jūsų raktai yra kažkur čia." grąžinimo teiginys (kalbos_tekstas) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Ryšys sėkmingas', skirtasis laikas = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001'), jei _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
BLE pyptelėjimui panaudojome anksčiau parašytą funkciją sound_alarm (). Funkcijai, kuri bus naudojama ketinimui, pridedame „ask decorator“su savo ketinimais „findkeys“. Kai atliksime „Alexa“įgūdžius „Amazon“kūrėjų prietaisų skydelyje, šį pavadinimą naudosime savo tikslui. Įrašykite šį scenarijų į failą pavadinimu app.py ir paleiskite
python app.py
Tai pateiks jūsų programą https:// localhost: 5000. Paleiskite „ngrok“serverį ir nukopijuokite sukurtą https nuorodą. Jums to reikės, kai sukonfigūruosite „Alexa“įgūdžius. Norėdami gauti daugiau informacijos, peržiūrėkite šį įrašą. Sėkmingai sukūrėme paprastą programą, dabar parašysime „Alexa“įgūdžius. Eikite į „Amazon“kūrėjų prietaisų skydelį ir prisijunkite. Spustelėkite „Alexa“ir pradėkite naudoti „Alexa Skill Kit“
Vykdykite gui nurodymus.
Skirtuke „Interakcijos modelis“norite užpildyti langelį „Intent Schema“, nurodydami:
Lauke Pavyzdžių išraiškos norite parašyti keletą komandų pavyzdžių, kuriuos asmuo galėtų panaudoti įgūdžiams įgyti. Mes parašėme šiuos:
Findkeys suranda mano raktus
- Skirtuke Konfigūracija būtinai pasirinkite paslaugos pabaigos tašką HTTPS. Nukopijuokite https nuorodą ir įklijuokite ją žemiau esančiame laukelyje Numatytasis. Paskyros susiejimą galima palikti ne.
- SSL sertifikate pasirinkite vidurinę parinktį „Mano kūrimo galutinis taškas yra domeno, turinčio sertifikato institucijos pakaitos simbolių sertifikatą, padomenis“.
- Skirtuke Testas galėsite išbandyti naujus įgūdžius įvesdami vieną iš pavyzdinių komandų.
Užbaikite užpildyti paskutinius du skirtukus, kol visos varnelės bus žalios. Tada paleiskite savo įgūdžius naudodami beta testavimo funkciją. Tai leidžia prieš paskelbiant savo įgūdžius bet kuriame aido įrenginyje. Vykdykite el. Pašto nuorodoje pateiktas instrukcijas, kad įdiegtumėte įgūdžius savo echo įrenginyje.
3 žingsnis: Padarykite mūsų įgūdžius protingesnius
Įdėjome nenaudojamus kompiuterius, išplitusius po visą namą, atlikti užklausą dėl „Bluetooth“švyturėlio ir pranešti apie RSSI signalo stiprumą.
Imdami rodmenis iš kelių mašinų, mes galime panaudoti signalo stiprumą kaip atstumo įgaliotinį. Turime išsiaiškinti, kaip tai panaudoti norint apskaičiuoti labiausiai tikėtiną namo dalį švyturiui rasti.
Mes kreipiamės į mašinų mokymąsi. „Crontab“užduotis kas 2 minutes sukuria RSSI kartotekų duomenų rinkinį. Įdėdami švyturėlį į skirtingas vietas, tokias kaip „Miegamasis“, „Vonios kambarys“, „Virtuvė“, „Gyvenamasis plotas“, pažymime RSSI žurnalus. Sukūrę namų žemėlapį, galime naudoti medžio modelius, tokius kaip „xgboost“XGBClassifier.
„Xgboost“diegimas gradiento didinimui apdoros trūkstamus duomenis, gautus iš skirtojo laiko, ir išmokys per kelias sekundes. Naudokite „Python“marinatą, kad išlaikytumėte apmokytą modelį ir įkelkite į mūsų „alexa retrievr“programą. Paskambinus įgūdžiams, programa suranda „Bluetooth“RSSI rodmenis ir sukuria numatytą vietą. „Alexa“gali atsakyti ir pasiūlyti „pabandyti ieškoti vonios kambaryje“.
4 žingsnis: sudėkite viską kartu
Turėdami modelį, kuris apytiksliai nurodo paskutinę raktų vietą, galime jį pridėti prie programos, kad pagerintume „Alexa“pateiktą teiginį. Mes pakeitėme scenarijų taip:
importuoti osfrom iš kolbos importuoti Kolba iš kolbos_ask importas Klausti, pareiškimas importuoti pexpect importuoti marinuotą agurką importuoti pandas kaip pd importuoti numpy kaip np iš kolekcijų importuoti defaultdict, skaitiklis iš reverse_read importuoti reverse_readline app = Kolba (_ name_) ask = Klausti (programa, '/') @ ask.intent ('findkeys') def retrievr (): os.system ("/path/to/repo/sound_alarm.py &") speech_text = guess_locate () grąžinimo teiginys (kalbos_tekstas) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = o len (res_lst)! = 20: ln = next (line_gen) if ln.startswith ('Host'): _, ip, _, reading = ln.split () read_dict [ip] = skaitymas res_lst.append (read_dict), jei ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Reikšmės mdl_ = marinatas.load (atviras (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] answer_str = 'Pabandykite pažvelgti į' if guess == 1: answer_str += 'bedroom' elif guess == 2: answer_str += 'bathroom' elif guess == 3: answer_str += 'kitchen' elif guess == 4: answer_str += 'living room' return answer_str if _name_ == "_main_": app.run (host = '127.0.0.1', prievadas = '5000')
Mes sukūrėme naują funkciją, pavadintą guess_locate (), kuri paima failą su naujausiais užfiksuotais rssi signalo stiprumais. Tada jis paims pavyzdžius prieš mūsų marinuotą „xgboost“modelį ir grąžins labiausiai tikėtiną vietos eilutę. Ši vieta bus grąžinta, kai bus paraginta „Alexa“. Ryšio su švyturėliu užmezgimas gali užtrukti kelias sekundes, todėl vykdome atskirą procesą, iškviečiantį šią funkciją „sound_alarm.py“.
Rekomenduojamas:
Mediniai „Macbook“raktai (su foninio apšvietimo funkcijomis): 7 žingsniai
Mediniai „Macbook“raktai (su foninio apšvietimo funkcijomis): Įvadas Pastaraisiais metais „Mac“kompiuteriai buvo labai modifikuoti. Tai gali skirtis dėl spalvų pakeitimų, lipdukų, graviūrų ir kt. Mediniai „MacBook“raktai mane visada sužavėjo. Juos galite įsigyti internetu iš įvairių vietų už maždaug 70 USD arba
Kas yra prie durų, „Alexa“valdoma kamerų sistema: 3 žingsniai
Kas yra prie durų, „Alexa“valdoma fotoaparato sistema: Kartais žiūrėdami televizorių nenorite atsakyti į duris, nebent tai svarbu. Šis projektas leidžia jums pamatyti asmenį prie durų, tiesiog pasakius „Amazon“„Echo“įrenginiui „Alexa, įjunkite durų monitorių“. Jūs žiūrite, kas pasirodo
Kas yra prie mano durų? PIR judesio jutiklio/diapazono jutiklio projektas: 5 žingsniai
Kas yra prie mano durų? PIR judesio jutiklio/diapazono jutiklio projektas: Mūsų projekto tikslas yra pajusti judesį per PIR ir atstumo jutiklius. „Arduino“kodas skleis vaizdo ir garso signalą, kad vartotojui būtų pranešta, kad kažkas yra šalia. MATLAB kodas atsiųs el. Pašto signalą, kad įspėtų vartotoją, kad kažkas yra šalia. Šis įrenginys
Žiūrėkite arba klausykitės savo žiniasklaidos bet kur, kai yra interneto ryšys: 5 veiksmai
Žiūrėkite arba klausykitės savo žiniasklaidos bet kur, kai yra interneto ryšys: ši pamoka parodys, kaip sukurti mp3 serverį ir svetainę, kurioje yra „Flash“vaizdo įrašų (FLV), panašių į tuos, kuriuos matote „Youtube.com“
Mano klaviatūra Mano rankos: 8 žingsniai (su paveikslėliais)
Mano klaviatūra Mano rankos: Aš naudoju visiškai naują „Epilog“lazerinį pjoviklį, kurį „Instructables“neseniai gavo lazeriu, kad ant mano nešiojamojo kompiuterio klaviatūros būtų išgraviruotas mano rankų vaizdas … visam laikui. Dabar tai panaikina jūsų „pasidaryk pats“stiliaus garantiją! Aš padėjau lazeriu daugiau nešiojamųjų kompiuterių nei dauguma, nes padedu