Mundarija:
- 1 -qadam: Bluetooth mayoqlarini buzish
- 2 -qadam: Alexa ko'nikmalari va ilovalarini yaratish
- 3 -qadam: Bizning mahoratimizni aqlli qilish
- 4 -qadam: Hammasini bir joyga to'plash
Video: Alexa, mening kalitlarim qayerda ?: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Alexa, ayniqsa, simsiz uy tarmoqlari yordamida ma'lumotlarni qidirish va aktivlarni kuzatish vazifalariga juda mos keladi. Qimmatbaho narsalarni tezda qidirish uchun tarmoqqa qo'yishni o'ylash tabiiy. Biz tarmoq diapazoni va batareyaning ishlash muddati uchun arzon bluetooth kam quvvatli mayoqlarni buzamiz va Alexa kalitlarni qaerda qoldirganimizni bilishi uchun aqlli dastur yaratamiz.
Buni qanday qilish kerak…
1 -qadam: Bluetooth mayoqlarini buzish
3 mayoqni 15 dollardan kamroq narxda sotib olish mumkin va ularni Android/iOS ilovalari qo'llab -quvvatlaydi, lekin biz maxfiylikdan voz kechamiz. Qolaversa, kalitlarni topish telefonimizni topishga aylanmasligi kerak.
Bu aqlli chiroqlar teskari muhandisligi bo'yicha qo'llanma bizga mayoqlarni boshqarishga yordam berdi. Qurilmaning manzilini tekshirishni yoqish bilan boshlang:
sudo hcitool lescan
"ITag" nomi bilan ko'rsatilgan manzilni toping va nusxa oling, so'ngra ishga tushiring:
sudo gatttool -Men
Qurilmaga interaktiv tarzda ulang:
AA: BB: CC: DD: EE: FF ulang
Variantlarni ko'rish uchun "yordam" yoki xizmatlarni ko'rish uchun "asosiy" ni ishlatib ko'ring:
"Char-desc" ni ishga tushirgandan so'ng, yuqoridagi kabi xizmat ko'rsatish dastagidan, biz UAT-larni topamiz, ular gatt xarakteristikasi va xizmat ko'rsatish xususiyatlariga havola qilinadi. Wireshark -da trafikni tekshirganda, biz 0100111000000001 signalni ishga tushiradi va mantiqan, 0000111000000001 uni o'chiradi. Endi bizda oddiy python funktsiyasi mavjud:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('ulanish {}'. format (BD_ADDR)) child.expect ('Ulanish muvaffaqiyatli', vaqt tugashi = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Keyinchalik, biz kalitlarni qidirayotganimizda mayoqni ishga tushirish uchun Alexa mahoratini yaratishga e'tibor qaratamiz.
2 -qadam: Alexa ko'nikmalari va ilovalarini yaratish
Biz mahalliy server bilan bog'lanadigan mahoratni yaratamiz. Keyin biz serverimizni xohlagan harakatlarni bajarishga sozlaymiz, bu holda kalitlar qaerda joylashganligi haqida taxminiy ma'lumot beramiz va bluetooth -mayoq signalini beramiz. Flask dasturga xizmat ko'rsatish uchun oddiy va ishlatish uchun qulay bo'lgan python kutubxonasini taqdim etadi. Flask-ask yordamida biz serverni keyinchalik ishlab chiqaradigan Alexa mahoratimiz bilan bog'lanishini sozlashimiz mumkin. Ilovaga Ngrok bilan xizmat qiling, bu bizga Alexa mahoratimiz uchun kerak bo'lgan https havolasini beradi. Birinchidan, biz dasturni eng oddiy funktsiyaga ega qilib yaratdik: ishga tushirilganda BLE mayoq signalini berish.
#!/usr/bin/env pythonfrom dan flask import dan Flask_ask import Ask, bayonot import pexpect app = Flask (_ name_) ask = Ask (ilova, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Sizning bluetooth chirog'ingiz identifikatori bu erda @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Sizning kalitlaringiz bu erda bir joyda". qaytarish bayonoti (nutq_teksti) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('ulanish {}'. format (BD_ADDR)) child.expect ('Ulanish muvaffaqiyatli', vaqt tugashi = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') agar _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Biz ilgari yozgan sound_alarm () funktsiyasidan BLE signalini chiqarish uchun foydalanganmiz. Niyat uchun ishlatiladigan funktsiya uchun biz "qidiruv kalitlari" so'rovi bilan bezatuvchini qo'shamiz. Biz Amazon dasturchilar panelida Alexa mahoratini yaratganimizda, biz bu nomni o'z maqsadimiz uchun ishlatamiz. Bu skriptni app.py nomli faylga yozing va ishga tushiring
python dasturi.py
Bu sizning arizangizga https:// localhost: 5000 da xizmat qiladi. Ngrok serverini ishga tushiring va yaratilgan https havolasini nusxalash. Alexa mahoratini sozlashda sizga kerak bo'ladi. Batafsil ma'lumot uchun ushbu postni tekshiring. Biz oddiy dasturni muvaffaqiyatli o'rnatdik, endi biz Alexa mahoratini yozamiz. Amazon dasturchilar paneliga o'ting va kiring. Alexa -ni bosing va Alexa Skill to'plamini ishga tushiring.
Gui tomonidan berilgan ko'rsatmalarga amal qiling.
"Interation Model" yorlig'i ostida siz "Intent Schema" maydonini to'ldirishingiz kerak bo'ladi:
Namunaviy so'zlar oynasida, siz mahoratga ega bo'lish uchun odam ishlatishi mumkin bo'lgan ba'zi namunali buyruqlarni yozmoqchisiz. Biz bularni yozdik:
topish kalitlari mening kalitlarimni topadi
- Konfiguratsiya yorlig'ida HTTPS xizmatining oxirgi nuqtasini tanlaganingizga ishonch hosil qiling. Https havolasini nusxa ko'chiring va ostidagi standart maydonga joylashtiring. Hisob qaydnomasini bog'lashni "No" ga qoldirish mumkin.
- SSL sertifikatida "Mening rivojlanish nuqtam-bu sertifikat idorasining joker belgisiga ega bo'lgan domenning pastki domeni" o'rta variantini tanlang.
- Test yorlig'i sizga namunaviy buyruqlaringizdan birini kiritish orqali yangi mahoratni sinab ko'rishga imkon beradi.
So'nggi ikkita varaqni to'ldirishni tugatish, barcha tasdiq belgilari yashil bo'lguncha. Keyin Beta Testing yordamida o'z mahoratingizni ishga soling. Bu sizga o'z mahoratingizni nashr etishdan oldin har qanday echo qurilmasida joylashtirish imkonini beradi. Qobiliyatni echo qurilmangizga o'rnatish uchun elektron pochta havolasidagi ko'rsatmalarga amal qiling.
3 -qadam: Bizning mahoratimizni aqlli qilish
Biz RSSI signal kuchini xabar qilish uchun bluetooth -mayoqni so'rash uchun butun uyga tarqalgan bo'sh kompyuterlarni ishga joylashtirdik.
Bir nechta mashinadan o'qishni qabul qilib, biz signal kuchini masofa uchun proksi sifatida ishlatishimiz mumkin. Biz buni mayakni topish uchun uyning eng katta qismini hisoblash uchun qanday ishlatishni aniqlashimiz kerak.
Biz mashinani o'rganishga o'tamiz. Crontab ishi har 2 daqiqada RSSI to'plamlarining ma'lumotlar bazasini yaratadi. Mayoqni turli joylarga joylashtiring: "Yotoq xonasi", "Hammom", "Oshxona", "Yashash maydoni", biz RSSI jurnallarini belgilaymiz. Uyni xaritaga kiritganimizdan so'ng, biz xgboost XGBClassifier kabi daraxtga asoslangan modellardan foydalanishimiz mumkin.
Gradientni kuchaytirishning xgboost ilovasi bir necha soniya ichida o'tkazilgan o'qishlar bo'yicha yo'qolgan ma'lumotlarni qayta ishlaydi. Tayyorlangan modelni saqlab qolish va alexa retriever dasturimizga yuklash uchun python tuzlanganidan foydalaning. Qachonki, mahorat chaqirilsa, ilova bluetooth RSSI o'qilishini qidiradi va bashorat qilingan joyni yaratadi, alexa "hammomga qarab ko'ring" degan javobni berishi mumkin.
4 -qadam: Hammasini bir joyga to'plash
Kalitlarning oxirgi joylashuvini taxmin qiladigan modelga ega bo'lib, biz uni Alexa tomonidan qaytarilgan bayonotni yaxshilash uchun ilovaga qo'shishimiz mumkin. Biz skriptni o'qish uchun o'zgartirdik:
kolbadan import qilish shishasi flask_ask importdan so'rash, bayonot import pexpect import tuzlangan import pandalar pd import numpy sifatida np to'plamlar import defaultdict, reverse_read import reverse_readline app = Flask (_ name_) ask = Ask (ilova, '/') @ 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 = len (res_lst)! = 20: ln = keyingi (line_gen) agar ln.startswith ('Xost'): _, ip, _, o'qish = ln.split () read_dict [ip] = o'qish res_lst.append (read_dict) agar ip == 'ip.of.one.kompyuter' bo'lsa: read_dict = {} boshqa: pass val = pd. DataFrame (res_lst).qaytar ({'N/ A ': np.nan}). Qadriyatlar mdl_ = pickle.load (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) tahmin = guess.most_common (1)) [0] [0] reply_str = 'Agar tahmin == 1: reply_str +=' yotoqxona 'elif taxminiga qarang == 2: reply_str += 'hammom' elif taxmin == 3: reply_str += 'oshxona' elif tahmin == 4: reply_str += 'yashash xonasi' agar _name_ == "_main_" bo'lsa, javob rep_str: app.run (xost) = '127.0.0.1', port = '5000')
Biz guess_locate () deb nomlangan yangi funktsiyani yaratdik, u oxirgi yozilgan rssi signal kuchiga ega bo'lgan faylni oladi. Keyin u namunalarni bizning tuzlangan xgboost modeliga qarshi ishga tushiradi va ehtimol joylashuv satrini qaytaradi. Bu joy Alexa so'ralganda qaytariladi. Mayoqqa ulanish bir necha soniya davom etishi mumkinligi sababli, biz bu funktsiyani sound_alarm.py da chaqiradigan alohida jarayonni bajaramiz.
Tavsiya:
Mening CR10 yangi hayotim: SKR anakarti va Marlin: 7 qadam
Mening CR10 yangi hayotim: SKR anakarti va Marlin: Mening standart MELZI kartam o'lik edi va men CR10 -ni tirik saqlash uchun zudlik bilan almashtirishga muhtoj edim, birinchi navbatda, almashtirish kartasini tanlang, shuning uchun men Bigtreetech skr v1.3 ni tanladim. TMC2208 drayverlari bilan 32 bitli taxta (UART rejimini qo'llab -quvvatlaydi
Mening lazer bilan kesilgan Ray-Gun yig'ish yo'riqnomam: 10 qadam
Mening lazer bilan kesilgan Ray-Gun yig'ish bo'yicha yo'riqnomam: Kechiktirganim uchun uzr so'rayman, mana menda lazer ko'rsatgichi Ray-Gunni yig'ish bo'yicha uzoq vaqtdan buyon ko'rsatma berilgan, siz vektor chizish rejalarini sotib olishingiz mumkin … CNC-da Lazer-kesuvchi! Https: //cults3d.com/en/3d-model/gadget/ray-gun mana shunday
Mening Diy Peltier sovutgichim! - Qabul qilinmagan: 9 qadam (rasmlar bilan)
Mening Diy Peltier sovutgichim! - QABUL QILINMADI: Men har doim uyga muzlatgichimga shoshilmasdan, mashinamda oziq -ovqat mahsulotlarini etarlicha salqin ushlab turishni xohlardim. Men bir necha yil oldin ishlab chiqarilgan eski Peltier issiqlik almashtirgichidan foydalanishga qaror qildim. Men Peltierni ikkita alyuminiy issiqlik moslamasi orasiga joylashtirdim. Katta
DIMP (Mening cho'ntagimda desulfator): 22 qadam (rasmlar bilan)
DIMP (Mening cho'ntagimdagi desulfator): Mikey Sklar Jorj Vizemanning " Kapasitiv batareya zaryadlagichi " va saxiylik bilan uni ochiq apparat hamjamiyatiga tarqatdi, u zaryadlash va tushirish qobiliyatiga ega
Tsiklop 3d skaner "Mening yo'limda qadam: 16 qadam" (rasmlar bilan)
Ciclop 3d skaner - bu mening qadamim, asta -sekin: barchaga salom, men mashhur Ciclop 3D skanerini amalga oshirmoqchiman, asl loyihada yaxshi tushuntirilgan barcha qadamlar mavjud emas, men avval jarayonni soddalashtirish uchun tuzatish kiritdim. Men bazani chop etaman va PCBni qayta tiklayman, lekin davom eting