Tartalomjegyzék:
- 1. lépés: A Bluetooth -jelzők feltörése
- 2. lépés: Alexa készség és alkalmazás létrehozása
- 3. lépés: Készségünk okosabbá tétele
- 4. lépés: Összerakni
Videó: Alexa, Hol vannak a kulcsaim?: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Az Alexa különösen alkalmas információ-visszakeresési feladatokra és eszközök figyelésére vezeték nélküli otthoni hálózatok használatával. Természetes, hogy fontolóra veszi az értékek rácsra helyezését a gyors visszakeresés érdekében. Feltörjük az olcsó, alacsony energiafogyasztású Bluetooth -jelzőfényeket a hálózati tartomány és az akkumulátor élettartama érdekében, és intelligens alkalmazást építünk, hogy Alexa tudja, hol hagytuk a kulcsokat.
Hogyan kell csinálni…
1. lépés: A Bluetooth -jelzők feltörése
3 jelzőkészlet 15 dollárnál alacsonyabb áron vásárolható meg, és az Android/iOS alkalmazások támogatják őket, de lemondunk az adatvédelemről. Ezenkívül a kulcsok megtalálása nem válhat a telefonunk megtalálásává.
Ez az adafruit oktatóanyag a fordított mérnöki intelligens fényekről segített nekünk a jelzők irányításában. Kezdje azzal, hogy bekapcsolja a jelzőfény -keresést az eszköz címére a következő futtatással:
sudo hcitool lescan
Keresse meg és másolja az „iTag” névvel ellátott címet, majd futtassa:
sudo gatttool -I
Csatlakozzon az eszközhöz interaktív módon a következő módon:
csatlakoztassa AA: BB: CC: DD: EE: FF
Próbálja meg futtatni a „súgót” a lehetőségek megtekintéséhez, vagy az „elsődlegeset” a szolgáltatások megtekintéséhez:
Futtatva a „char-desc” parancsot, majd a szerviz fogantyút a fentiek szerint, megtaláljuk az UUID-ket, amelyeket a gatt jellemző specifikációira és a szolgáltatás specifikációira hivatkozva keresünk meg. Ha többet szeretne megtudni ezekről a szolgáltatásokról, nézze meg ezt. Ha a Wireshark segítségével ellenőrzi a forgalmat, azt találjuk, hogy a 0100111000000001 aktiválja a riasztást, és logikusan a 0000111000000001 kikapcsolja. Most megkapjuk az egyszerű python függvényt:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('A kapcsolat sikeres', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Ezután az Alexa készség létrehozására összpontosítunk, amely elindítja a jelzőfényt, amikor a kulcsokat keressük.
2. lépés: Alexa készség és alkalmazás létrehozása
Létrehozunk egy készséget, amelyet összekapcsolunk egy helyi szerverrel. Ezután konfiguráljuk szerverünket, hogy végrehajtsa a kívánt műveletet, ebben az esetben közelítést adunk a kulcsok elhelyezkedéséről, és hangjelzést adunk a Bluetooth -jelzőfénynek. A Lombik egyszerű és könnyen használható python könyvtárat biztosít egy alkalmazás kiszolgálásához. A flask-ask használatával konfigurálhatjuk a szervert, hogy kommunikáljon a később felépített Alexa-készségeinkkel. Jól szolgálja ki az alkalmazást az Ngrokkal, amely megad egy https linket, amelyre szükségünk lesz Alexa készségeinkhez. Először a legegyszerűbb funkcióval rendelkező alkalmazást építettük fel: hogy a BLE jelzőfényünk sípoljon, amikor aktiválódik.
#!/usr/bin/env pythonfrom lombik import Lombik lombikból ' #A bluetooth jelzőfényed azonosítója itt @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "A kulcsaid itt vannak valahol." return utasítás (beszéd_szöveg) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('A kapcsolat sikeres', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001'), ha _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
A BLE hangjelzéshez a korábban írt sound_alarm () függvényt használtuk. A szándékhoz használni kívánt függvényhez hozzáadjuk az ask dekorátort a „findkeys” szándékkal. Amikor elkészítjük az Alexa készséget az Amazon fejlesztői irányítópulton, ezt a nevet használjuk szándékunkhoz. Írja be ezt a szkriptet egy app.py nevű fájlba, és futtassa
python app.py
Ez kiszolgálja az alkalmazást a https:// localhost: 5000 címen. Futtasson egy ngrok szervert, és másolja a létrehozott https linket. Szüksége lesz rá az Alexa készség konfigurálásakor. További részletekért tekintse meg ezt a bejegyzést. Sikeresen beállítottunk egy egyszerű alkalmazást, most megírjuk az Alexa készséget. Keresse meg az Amazon fejlesztői irányítópultját, és jelentkezzen be. Kattintson az Alexára, és kezdje el az Alexa Skill készletet
Kövesse a gui utasításait.
Az Interakciómodell lapon töltse ki az Intent Schema mezőt a következőkkel:
A Minta kijelentések mezőbe néhány mintaparancsot szeretne írni, amelyeket egy személy használhat a készség meghívásához. Ezeket írtuk:
a findkeys megtalálja a kulcsomat
- A Konfiguráció lapon válassza ki a HTTPS szolgáltatás végpontját. Másolja ki a https linket, és illessze be az alapértelmezett mezőbe. A fiókok összekapcsolását nemre lehet hagyni.
- Az SSL-tanúsítványban válassza a középső opciót: "A fejlesztési végpontom egy tartomány altartománya, amely rendelkezik egy tanúsító hatóság helyettesítő tanúsítványával".
- A Teszt fül lehetővé teszi az új készség kipróbálását, ha beír egy mintaparancsot.
Fejezze be az utolsó két fül kitöltését, amíg az összes pipa zöld lesz. Ezután indítsa el készségét a bétatesztelés funkcióval. Ez lehetővé teszi, hogy a készségeit bármilyen visszhangosító eszközön tárolja, mielőtt közzéteszi. Kövesse az e -mail linken található utasításokat a készség telepítéséhez echo eszközére.
3. lépés: Készségünk okosabbá tétele
Az egész házban elterjedt üresjáratú számítógépeket elkezdtük lekérdezni a Bluetooth jelzőfénytől, hogy jelezze az RSSI jelerősségét.
Több gépről leolvasva a jel erősségét a távolság proxyként használhatjuk fel. Ki kell találnunk, hogyan használhatjuk ezt a ház valószínű részének kiszámításához, hogy megtaláljuk a jelzőt.
Rátérünk a gépi tanulásra. Egy crontab feladat 2 percenként RSSI sorok adathalmazát építi fel. A jelzőfényt különböző helyekre helyezve, például: „Hálószoba”, „Fürdőszoba”, „Konyha”, „Nappali”, megjelöljük az RSSI naplókat. Miután feltérképeztük az otthont, használhatunk fa alapú modelleket, mint például az xgboost XGBClassifier.
A gradiens növelés xgboost megvalósítása az időzített leolvasásokból hiányzó adatokat kezeli, néhány másodperc alatt. Használja a python savanyúságot a betanított modell megőrzéséhez, és töltse be az alexa retrievr alkalmazásunkba. Amikor a készséget meghívják, az alkalmazás megkeresi a Bluetooth RSSI -leolvasást, és előállít egy előre jelzett helyet, az alexa válaszolhat, és azt javasolja, hogy „próbálkozzon a fürdőszobában”.
4. lépés: Összerakni
Miután rendelkeztünk a kulcsok utolsó helyének megközelítő modelljével, hozzáadhatjuk az alkalmazáshoz, hogy javítsuk az Alexa által visszaadott nyilatkozatot. A szkriptet a következőre módosítottuk:
import osfrom lombik import Lombik a flask_ask importból Kérdés, utasítás import pexpect import savanyúság import panda mint pd import numpy as np from gyűjtemények 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 utasítás (beszéd_szöveg) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = míg len (res_lst)! = 20: ln = next (line_gen) if ln.startswith ('Host'): _, ip, _, reading = ln.split () read_dict [ip] = olvasás res_lst.append (read_dict), ha ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Értékek mdl_ = savanyúság.load (nyitott (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] answer_str = 'Próbálja meg keresni a' if guess == 1: answer_str += 'bedroom' elif találgatást == 2: answer_str += 'bathroom' elif guess == 3: answer_str += 'kitchen' elif guess == 4: answer_str += 'nappali' return answer_str if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Létrehoztunk egy új, guess_locate () nevű függvényt, amely a legújabb rögzített rssi jelerősségű fájlt veszi fel. Ezután lefuttatja a mintákat a pácolt xgboost modellünkkel szemben, és visszaadja a legvalószínűbb helyszínt. Ezt a helyet visszaadjuk, amikor Alexa megkéri. Mivel a kapcsolat létrehozása egy jelzőfényhez néhány másodpercet vehet igénybe, ezért külön folyamatot futtatunk a sound_alarm.py fájlban.
Ajánlott:
NYÚL NYÚL, HOL VAN?: 3 lépés
NYÚL NYÚL, HOL VAGY? Szeret a kanapé melletti sarokban bújni, de mivel a látványt eltakarja a kanapé, gyakran nem találjuk. S
Fred! Hol vagy?: 3 lépés
Fred! Hol vagy?: Ez a projekt arról szól, hogy hány km -re van a házától. A Fred akkumulátorát egy okostelefonhoz hasonlóan újratöltheti, így magával viheti. Ez nagyon könnyen felépíthető, de lehet, hogy elakad a kódolásnál. Ebben a projektben
A Windows módosítása úgy, hogy megmutassa, hol készült a fotó: 4 lépés
A Windows módosítása, hogy megmutassa, hol készült a fotó: Bevezetés Előfordult már, hogy végignézte az utazási fényképeit, és azon kezdett tűnődni, hogy hol készítette őket? Hogy hívták azt a kis várost, ahol öt évvel ezelőtt megálltál, ahol a legcsodálatosabb kávét ittad? Miután módosította a Szélt
Honnan lehet tudni, hogy a Yahoo! A felhasználók láthatatlan módban vannak bejelentkezve: 6 lépés
Honnan lehet tudni, hogy a Yahoo! A felhasználók láthatatlan módban vannak bejelentkezve: ez megmutatja, hogyan lehet megtudni, hogy a yahoo felhasználók láthatatlan módban vannak -e bejelentkezve, és valóban működik a yahoo messenger 8 rendszerben, de nem próbáltam 9 -re (béta) … hogyan működik: a firka akkor indul el, ha a barátja láthatatlan módban van, így: :: "JOHN" ki van kapcsolva
Hol található az elérhető 5 legjobb Mac -alkalmazás: 5 lépés
Hol található az elérhető 5 legjobb Mac -alkalmazás: Azok az alkalmazások, amelyek segítségével a lehető legtöbbet hozhatja ki az Apple Mac számítógépről