Cuprins:
- Pasul 1: piratarea semnalelor Bluetooth
- Pasul 2: Crearea unei abilități și aplicații Alexa
- Pasul 3: Îmbunătățirea abilităților noastre
- Pasul 4: Puneți totul împreună
Video: Alexa, Unde sunt cheile mele ?: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Alexa este deosebit de potrivit pentru sarcinile de recuperare a informațiilor și pentru monitorizarea activelor folosind rețelele wireless de acasă. Este firesc să luați în considerare punerea obiectelor de valoare pe grilă pentru recuperarea rapidă. Hackem balize ieftine cu consum redus de energie Bluetooth pentru gama de rețea și longevitatea bateriei și construim o aplicație inteligentă, astfel încât Alexa să știe unde am lăsat tastele.
Cum să o facă…
Pasul 1: piratarea semnalelor Bluetooth
Un set de 3 balize poate fi achiziționat pentru mai puțin de 15 USD și sunt acceptate cu aplicațiile Android / iOS, dar vom renunța la confidențialitate. În plus, găsirea cheilor noastre nu ar trebui să se transforme în găsirea telefonului nostru.
Acest tutorial adafruit despre luminile inteligente de inginerie inversă ne-a ajutat să controlăm balizele. Începeți prin activarea scanării balizei pentru adresa dispozitivului executând:
sudo hcitool lescan
Găsiți și copiați adresa etichetată cu numele „iTag”, apoi rulați:
sudo gatttool -I
Conectați-vă la dispozitiv interactiv executând:
conectați AA: BB: CC: DD: EE: FF
Încercați să rulați „ajutor” pentru a vizualiza opțiunile sau „principal” pentru a vizualiza serviciile:
Rulând „char-desc” urmat de mânerul de service ca mai sus, găsim UUID-uri pe care le căutăm făcând referire la specificațiile caracteristice gatt și specificațiile de service. Pentru mai multe informații despre aceste servicii, consultați acest lucru. Inspectând traficul cu Wireshark, constatăm că 0100111000000001 declanșează alarma și, logic, 0000111000000001 o oprește. Acum avem funcția python simplă:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Conexiune reușită', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Apoi, ne concentrăm pe crearea abilității Alexa pentru a declanșa baliza atunci când căutăm tastele.
Pasul 2: Crearea unei abilități și aplicații Alexa
Creăm o abilitate care va fi legată de un server local. Apoi ne configurăm serverul pentru a face orice acțiune dorim, în acest caz, oferim o aproximare a locului în care ar putea fi localizate cheile și vom face semnalul sonor Bluetooth. Flask oferă o bibliotecă Python simplă și ușor de utilizat pentru a servi o aplicație. Folosind flask-ask, putem configura serverul pentru a comunica cu abilitățile noastre Alexa pe care le vom construi mai târziu. Serviți bine aplicația cu Ngrok, care ne va oferi un link https de care vom avea nevoie pentru abilitatea noastră Alexa. Mai întâi am construit aplicația cu cea mai simplă funcționalitate: să facem semnalul sonor BLE atunci când este declanșat.
#! / usr / bin / env pythonfrask flask import Flask from flask_ask import Ask, statement statement pexpect app = Flask (_ name_) ask = Ask (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Il dvs. id de baliză bluetooth aici @ ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Cheile dvs. sunt aici undeva." return statement (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Conexiune reușită', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Am folosit funcția sound_alarm () pe care am scris-o mai devreme pentru a face sonorul BLE. Pentru funcția care va fi utilizată pentru intenție, adăugăm decoratorul ask cu intenția noastră „findkeys”. Când vom crea abilitatea Alexa pe tabloul de bord al dezvoltatorului Amazon, vom folosi acest nume pentru intenția noastră. Scrieți acest script într-un fișier numit app.py și rulați
python app.py
Aceasta va servi aplicația dvs. pe https:// localhost: 5000. Rulați un server ngrok și copiați linkul https generat. Veți avea nevoie de ea atunci când configurați abilitatea Alexa. Pentru mai multe detalii, consultați această postare. Am configurat cu succes o aplicație simplă, acum vom scrie abilitatea Alexa. Navigați la tabloul de bord al dezvoltatorului Amazon și conectați-vă. Faceți clic pe Alexa și începeți cu kitul Alexa Skill
Urmați instrucțiunile date de gui.
În fila Model de interacțiune veți dori să completați caseta Schemă de intenție cu următoarele:
În caseta Exemple de probe, doriți să scrieți câteva exemple de comenzi pe care o persoană le-ar putea folosi pentru a invoca abilitatea. Am scris acestea:
findkeys find my keysfindkeys where my keys findkeys Mi-am pierdut cheile
- În fila Configurare, asigurați-vă că alegeți punctul final al serviciului către HTTPS. Copiați linkul https și lipiți-l în caseta implicită dedesubt. Conectarea contului poate fi lăsată la nr.
- În certificatul SSL alegeți opțiunea din mijloc, „Punctul meu final de dezvoltare este un subdomeniu al unui domeniu care are un certificat cu metacaracter de la o autoritate de certificare”.
- Fila Test vă va permite să testați noua abilitate tastând una dintre comenzile dvs. de probă.
Finalizați completarea ultimelor două file până când toate bifele sunt verzi. Apoi lansați-vă abilitățile cu funcția de testare beta. Acest lucru vă permite să vă găzduiți abilitățile pe orice dispozitiv ecou înainte de ao publica. Urmați instrucțiunile de pe linkul de e-mail pentru a instala abilitățile pe dispozitivul dvs. ecou.
Pasul 3: Îmbunătățirea abilităților noastre
Am pus computerele inactive răspândite în toată casa să lucreze la interogarea semnalizatorului bluetooth pentru a raporta puterea semnalului RSSI.
Luând citiri de pe mai multe mașini, putem utiliza puterea semnalului ca proxy pentru distanță. Trebuie să ne dăm seama cum să folosim acest lucru pentru a calcula cea mai probabilă parte a casei pentru a găsi farul.
Trecem la învățarea automată. O lucrare crontab la fiecare 2 minute, creează un set de date de tupluri RSSI. Plasând baliza în diferite locuri, cum ar fi: „Dormitor”, „Baie”, „Bucătărie”, „Spațiu de locuit”, etichetăm jurnalele RSSI. Odată ce am cartografiat casa, putem folosi modele bazate pe copaci, cum ar fi XGBClassifier-ul xgboost.
Implementarea xgboost a creșterii gradientului va gestiona datele lipsă din citirile expirate, antrenându-se în câteva secunde. Utilizați murătura python pentru a persista modelul instruit și pentru a încărca în aplicația noastră Alexa Retrievr. Când este apelată abilitatea, aplicația caută citirea RSSI bluetooth și generează o locație prezisă, Alexa poate răspunde sugerând să „încercați să căutați în baie”.
Pasul 4: Puneți totul împreună
Având un model care să aproximeze ultima locație a tastelor, îl putem adăuga în aplicație pentru a îmbunătăți declarația returnată de Alexa. Am modificat scriptul pentru a citi:
import osfrom flask import Flask from flask_ask import Ask, statement import pexpect import pickle import pandas as pd import numpy as np from collections import defaultdict, Counter from reverse_read import reverse_readline app = Flask (_ name_) ask = Ask (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 = while len (res_lst)! = 20: ln = next (line_gen) if ln.startswith ('Host'): _, ip, _, reading = ln.split () read_dict [ip] = reading 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}). Valori 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 = 'Încercați să căutați în' if guess == 1: reply_str + = 'bedroom' elif guess == 2: reply_str + = 'baie' elif guess == 3: reply_str + = 'bucătărie' elif guess == 4: reply_str + = 'living' return reply_str if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Am creat o nouă funcție numită guess_locate () care preia un fișier cu cele mai recente puteri ale semnalului rssi înregistrate. Apoi va rula mostrele pe modelul nostru xgboost murat și va returna șirul de locație cel mai probabil. Această locație va fi returnată când vi se solicită Alexa. Deoarece stabilirea unei conexiuni la un far poate dura câteva secunde, executăm un proces separat care apelează acea funcție în sound_alarm.py.
Recomandat:
Cheile volanului la adaptorul stereo auto (CAN Bus -> Key1): 6 pași
Tastele volanului la adaptorul stereo auto (CAN Bus -> Key1): La câteva zile după ce am cumpărat o mașină uzată, am descoperit că nu pot reda muzică de pe telefon prin intermediul stereo-ului auto. Și mai frustrant a fost că mașina avea bluetooth, dar permitea doar apelurile vocale, nu muzica. Avea și un port USB Windows Phone, dar eu
IEPURI IEPURI UNDE ESTI ?: 3 Pași
IEPURI IEPURI UNDE EȘTI ?: Sunt din Taiwan și am 13 ani și mă cheamă Chia-Ying Wu. Familia noastră are un iepure, el joacă adesea ascunzătoarea cu noi. Îi place să se ascundă în colțul de lângă canapea, dar pentru că vederea este blocată de canapea, de multe ori nu o putem găsi. S
Generator de unde sinusoidale cu 3 faze bazat pe Arduino Due: 5 pași
Generator de valuri sinusoidale cu 3 faze bazat pe Arduino Due: scopul acestei partajări este de a ajuta pe cineva care încearcă să utilizeze performanța mai mare a lui Due + lipsa de referință + foaie de date ne-utilă. probe / ciclu la frecvență scăzută (< 1kHz) și 16 s
Fred! Unde ești ?: 3 pași
Fred! Unde ești ?: Acest proiect se referă la câți Km ești de casa ta. Fred este alimentat de o baterie care este reîncărcabilă ca un smartphone, astfel încât să o puteți aduce cu dvs. Acesta este un lucru foarte ușor de construit, dar s-ar putea să rămâneți blocat pe codare. În acest proiect, veți
Keyminder! Dispozitivul care te face să nu-ți pierzi cheile !: 3 pași (cu imagini)
Keyminder! dispozitivul care te face să nu-ți pierzi cheile !: Acest dispozitiv te ajută să nu-ți pierzi cheile! Dacă ești ca mine, atunci când ajungi acasă de la serviciu, îți pierzi imediat cheile după ce ți-ai descuiat ușa și aștepți până a doua zi chiar înainte de a trebui să pleci pentru a le căuta. Da, poate ai