Sisällysluettelo:

Alexa, missä avaimet ovat?: 4 vaihetta
Alexa, missä avaimet ovat?: 4 vaihetta

Video: Alexa, missä avaimet ovat?: 4 vaihetta

Video: Alexa, missä avaimet ovat?: 4 vaihetta
Video: How to Connect Alexa to WiFi - 4th generation 2024, Heinäkuu
Anonim
Image
Image
Hakkerointi Bluetooth -majakat
Hakkerointi Bluetooth -majakat

Alexa soveltuu erityisen hyvin tiedonhakuun ja resurssien seurantaan langattomien kotiverkkojen avulla. On luonnollista harkita arvoesineiden asettamista verkkoon nopeaa hakua varten. Hakkeroimme halpoja Bluetooth -energiatehokkaita majakoita verkon kantaman ja akun kestävyyden kannalta ja rakennamme älykkään sovelluksen, jotta Alexa tietää, mihin jätimme avaimet.

Kuinka tehdä se…

Vaihe 1: Bluetooth -majakkien hakkerointi

Kolmen majakan sarjan voi ostaa alle 15 dollarilla, ja niitä tuetaan Android-/iOS -sovelluksilla, mutta poistamme yksityisyyden käytöstä. Lisäksi avainten löytämisen ei pitäisi muuttua puhelimen löytämiseksi.

Tämä käänteisen suunnittelun älykkäitä valoja käsittelevä adafruit -opetusohjelma auttoi meitä hallitsemaan majakoita. Aloita ottamalla käyttöön laitteen osoitteen majakkahaku suorittamalla:

sudo hcitool lescan

Etsi ja kopioi osoite, jossa on nimi 'iTag', ja suorita sitten:

sudo gatttool -I

Muodosta yhteys laitteeseen vuorovaikutteisesti suorittamalla:

yhdistä AA: BB: CC: DD: EE: FF

Kokeile käynnistää 'help' nähdäksesi vaihtoehdot tai 'ensisijainen' nähdäksesi palvelut:

Suorittamalla 'char-desc' ja sen jälkeen yllä oleva huoltokahva, löydämme UUID-tunnuksia, joita etsimme viittaamalla gatt-ominaisuuksiin ja palvelumäärityksiin. Lisätietoja näistä palveluista saat tästä. Nyt meillä on yksinkertainen python -toiminto:

tuo pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Yhteys onnistui', aikakatkaisu = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')

Seuraavaksi keskitymme luomaan Alexa -taidon, joka käynnistää majakan, kun etsimme avaimia.

Vaihe 2: Alexa -taidon ja -sovelluksen luominen

Alexa -taidon ja -sovelluksen luominen
Alexa -taidon ja -sovelluksen luominen
Alexa -taidon ja -sovelluksen luominen
Alexa -taidon ja -sovelluksen luominen

Luomme taidon, joka linkitetään paikalliseen palvelimeen. Sitten määritämme palvelimemme toteuttamaan haluamamme toimenpiteet, tässä tapauksessa antamaan likimääräiset tiedot avainten sijainnista ja antamaan Bluetooth -majakkaäänen. Flask tarjoaa yksinkertaisen ja helppokäyttöisen python -kirjaston sovelluksen palvelemiseen. Käyttämällä flask-askia voimme määrittää palvelimen kommunikoimaan myöhemmin rakennettavan Alexa-taitomme kanssa. Palvele sovellusta hyvin Ngrokin kanssa, joka antaa meille https -linkin, jota tarvitsemme Alexa -taitollemme. Aluksi rakensimme sovelluksen, jolla on yksinkertaisin toiminto: saada BLE -majakka piippaamaan, kun se laukaistaan.

#!/usr/bin/env pythonfolkista ' #Bluetooth -majakkasi tunnus täällä @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Avaimesi ovat täällä jossain." return lausunto (puheteksti) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Yhteys onnistui', aikakatkaisu = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001'), jos _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')

Käytimme BLE -äänimerkkiä aikaisemmin kirjoittamallamme sound_alarm (). Toimintoa varten, jota käytetään tarkoitukseen, lisäämme ask decoratorin "etsintäavaimilla". Kun teemme Alexa -taitoa Amazon -kehittäjien hallintapaneelissa, käytämme tätä nimeä tarkoitukseemme. Kirjoita tämä komentosarja tiedostoon nimeltä app.py ja suorita

python app.py

Tämä palvelee sovellustasi osoitteessa https:// localhost: 5000. Suorita ngrok -palvelin ja kopioi luotu https -linkki. Tarvitset sitä, kun määrität Alexa -taitoa. Jos haluat lisätietoja, tutustu tähän viestiin. Olemme onnistuneesti perustaneet yksinkertaisen sovelluksen, nyt kirjoitamme Alexa -taidon. Siirry Amazon -kehittäjien hallintapaneeliin ja kirjaudu sisään. Napsauta Alexaa ja aloita Alexa Skill Kit

Noudata guin antamia ohjeita.

Täytä Vuorovaikutusmalli -välilehden Intent Schema -ruutu seuraavasti:

Sample Utterances -ruutuun haluat kirjoittaa joitain esimerkkikomentoja, joita henkilö voi käyttää taidon viemiseen. Kirjoitimme nämä:

findkeys löytää avaimeni avaimen avaimet jossa avaimet findkeys olen kadottanut avaimeni

  • Varmista Määritykset -välilehdessä, että palvelun päätepiste on HTTPS. Kopioi https -linkki ja liitä se alla olevaan Oletus -ruutuun. Tilin linkitys voidaan jättää arvoon Ei.
  • Valitse SSL-varmenteessa keskimmäinen vaihtoehto "Oma kehityspäätepiste on sen verkkotunnuksen aliverkkotunnus, jolla on varmenneviranomaisen yleismerkki".
  • Testi -välilehden avulla voit testata uutta taitoa kirjoittamalla jonkin esimerkkikomennoistasi.

Viimeistele kahden viimeisen välilehden täyttäminen, kunnes kaikki valintamerkit ovat vihreitä. Käynnistä sitten taitosi betatestaustoiminnolla. Tämän avulla voit isännöidä taitojasi millä tahansa kaikulaitteella ennen sen julkaisemista. Asenna taito echo -laitteellesi noudattamalla sähköpostilinkin ohjeita.

Vaihe 3: Taidostamme älykkäämpi

Tekemällä taidostamme älykkäämpiä
Tekemällä taidostamme älykkäämpiä
Tekemällä taidostamme älykkäämpiä
Tekemällä taidostamme älykkäämpiä
Tekemällä taidostamme älykkäämpiä
Tekemällä taidostamme älykkäämpiä

Laitoimme käyttämättömät tietokoneet ympäri taloa työskentelemään kyselemällä Bluetooth -majakasta raportoimaan RSSI -signaalin voimakkuuden.

Kun otamme lukemia useilta koneilta, voimme käyttää signaalin voimakkuutta etäisyyden välityspalvelimena. Meidän on selvitettävä, kuinka käyttää tätä laskettaessa todennäköisin osa talosta majakan löytämiseksi.

Siirrymme koneoppimiseen. Crontab -työ 2 minuutin välein muodostaa RSSI -korttien tietojoukon. Sijoittamalla majakka eri paikkoihin, kuten 'Makuuhuone', 'Kylpyhuone', 'Keittiö', 'Olohuone', merkitsemme RSSI -lokit. Kun olemme kartoittaneet kodin, voimme käyttää puupohjaisia malleja, kuten xgboostin XGBClassifier.

Kaltevuuden tehostamisen xgboost -toteutus käsittelee puuttuvat tiedot aikakatkaisuista lukemista ja harjoittelee parissa sekunnissa. Käytä python -suolakurkkua säilyttääksesi koulutetun mallin ja lataa se alexa retrievr -sovellukseemme. Kun taitoa kutsutaan, sovellus etsii Bluetooth -RSSI -lukeman ja luo ennustetun sijainnin, alexa voi vastata ehdottaen "yritä katsoa kylpyhuoneessa".

Vaihe 4: Yhdistä kaikki

Kun meillä on malli, joka arvioi avainten viimeisen sijainnin, voimme lisätä sen sovellukseen Alexan palauttaman lausunnon parantamiseksi. Olemme muuttaneet käsikirjoituksen seuraavasti:

tuoda osfrom pullosta tuonti Pullo pullosta_ask tuonti Kysy, lausunto tuonti pexpect tuonti suolakurkku tuonti pandat pd tuonti numeroina np kokoelmista tuonti oletusarvo, laskuri käänteislukujen tuonnista reverse_readline app = Pullo (_ name_) ask = Ask (sovellus, '/') @ ask.intent ('findkeys') def retrievr (): os.system ("/path/to/repo/sound_alarm.py &") speech_text = guess_locate () return lauseke (puheen_teksti) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = kun taas len (res_lst)! = 20: ln = next (line_gen) if ln.startswith ('Host'): _, ip, _, reading = ln.split () read_dict [ip] = lukeminen res_lst.append (read_dict) if ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Arvot mdl_ = suolakurkku (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] answer_str = 'Kokeile etsiä jos arvaus == 1: answer_str +=' makuuhuone 'elif -arvaus == 2: answer_str += 'kylpyhuone' elif -arvaus == 3: answer_str += 'kitchen' elif guess == 4: answer_str += 'olohuone' return answer_str if _name_ == "_main_": app.run (host = '127.0.0.1', portti = '5000')

Loimme uuden funktion nimeltä guess_locate (), joka ottaa tiedoston, jolla on viimeisimmät tallennetut rssi -signaalin vahvuudet. Sitten se suorittaa näytteet peitattua xgboost -mallia vastaan ja palauttaa todennäköisimmän sijaintimerkkijonon. Tämä sijainti palautetaan, kun Alexaa pyydetään. Koska yhteyden muodostaminen majakkaan voi kestää muutaman sekunnin, suoritamme erillisen prosessin, joka kutsuu tätä toimintoa sound_alarm.py -tiedostossa.

Suositeltava: