Mündəricat:
- Addım 1: Bluetooth mayaklarını sındırın
- Addım 2: Alexa Bacarıq və Tətbiqinin Yaradılması
- Addım 3: Bacarıqlarımızı daha ağıllı etmək
- Addım 4: Hamısını bir yerə yığın
Video: Alexa, açarlarım haradadır ?: 4 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Alexa, simsiz ev şəbəkələrindən istifadə edərək məlumat axtarış vəzifələri və aktivlərin monitorinqi üçün xüsusilə uyğundur. Qiymətli əşyaları sürətli bir şəkildə əldə etmək üçün onları şəbəkəyə qoymağı düşünmək təbiidir. Şəbəkə aralığı və batareyanın uzunömürlülüyü üçün ucuz bluetooth aşağı enerji mayaklarını sındırırıq və ağıllı bir tətbiq qururuq ki, Alexa düymələri harada qoyduğumuzu bilsin.
Necə etmək olar…
Addım 1: Bluetooth mayaklarını sındırın
3 mayak dəsti 15 dollardan aşağı qiymətə alına bilər və Android/iOS tətbiqləri ilə dəstəklənir, lakin məxfiliyi seçəcəyik. Üstəlik, açarlarımızı tapmaq telefonumuzu axtarmağa çevrilməməlidir.
Tərs mühəndislik ağıllı işıqlar haqqında bu adafruit dərsliyi, mayaklara nəzarət etməyimizə kömək etdi. İşlətməklə cihaz ünvanı üçün mayak taramasını işə salın:
sudo hcitool lescan
'İTag' etiketli ünvanı tapın və kopyalayın, sonra işləyin:
sudo gatttool -Mən
Çalışaraq cihaza interaktiv olaraq qoşulun:
birləşdirin AA: BB: CC: DD: EE: FF
Seçimlərə baxmaq üçün 'yardım' və ya xidmətləri görmək üçün 'əsas' işləməyə çalışın:
Yuxarıda göstərilən xidmət dəstəyinin ardınca 'char-desc' işləyərkən, gatt xarakteristik xüsusiyyətlərinə və xidmət xüsusiyyətlərinə istinad edərək axtardığımız UUID-ləri tapırıq. Wireshark ilə əlaqəli trafikə baxanda 0100111000000001 siqnalizasiyanı işə salır və məntiqi olaraq 0000111000000001 söndürür. İndi sadə bir python funksiyasına sahibik:
idxal pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Bağlantı uğurlu', zaman aşımı = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Sonra, düymələri axtararkən mayak tetiklemek üçün Alexa bacarığını yaratmağa diqqət edirik.
Addım 2: Alexa Bacarıq və Tətbiqinin Yaradılması
Yerli bir serverlə əlaqəli bir bacarıq yaradırıq. Sonra serverimizi istədiyimiz hər hansı bir hərəkəti etmək üçün konfiqurasiya edirik, bu halda düymələrin harada yerləşə biləcəyini və Bluetooth mayakının səs siqnalı verməsini təmin edirik. Flask, bir tətbiqə xidmət etmək üçün sadə və istifadəsi asan bir python kitabxanası təqdim edir. Flask-ask istifadə edərək, serveri daha sonra quracağımız Alexa bacarıqlarımızla ünsiyyət qura bilərik. Ngrok ilə tətbiqə xidmət edin, bu da bizə Alexa bacarıqlarımız üçün lazım olan bir https bağlantısı verəcəkdir. Əvvəlcə tətbiqi ən sadə funksionallıqla qurduq: tetiklendiğinde BLE beacon bipimizi etmək.
#!/usr/bin/env pythonfrom qabdan idxal Flask_ask importundan Şüşə, bəyanat idxalı pexpect app = Flask (_ name_) ask = Ask (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Bluetooth mayak idiniz burada @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Açarlarınız burada bir yerdədir." return ifadəsi (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}' formatı (BD_ADDR)) child.expect ('Bağlantı uğurlu', zaman aşımı = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') əgər _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Daha əvvəl yazdığımız sound_alarm () funksiyasından BLE bip səsi çıxarmaq üçün istifadə etdik. Niyyət üçün istifadə ediləcək funksiya üçün "findkeys" niyyətimizlə sorğu dekorativini əlavə edirik. Amazon geliştirici tablosunda Alexa bacarığı qazandıqda bu addan məqsədimiz üçün istifadə edəcəyik. Bu skripti app.py adlı bir fayla yazın və işə salın
python app.py
Bu tətbiqinizə https:// localhost: 5000 ünvanında xidmət edəcək. Bir ngrok serverini işə salın və yaradılan https bağlantısını kopyalayın. Alexa bacarığını konfiqurasiya edərkən buna ehtiyacınız olacaq. Daha ətraflı məlumat üçün bu yazını yoxlayın. Sadə bir tətbiq qurduq, indi Alexa bacarıqlarını yazacağıq. Amazon geliştirici tablosuna gedin və daxil olun. Alexa düyməsini basın və Alexa Bacarıq dəsti ilə işə başlayın.
Gui tərəfindən verilən təlimatlara əməl edin.
Interation Model sekmesinin altında Intent Schema qutusunu aşağıdakılarla doldurmaq istəyəcəksiniz:
Nümunə ifadələr qutusunda, bir şəxsin bacarıq əldə etmək üçün istifadə edə biləcəyi bəzi nümunə əmrləri yazmaq istəyirsiniz. Bunları yazdıq:
tapma düymələri açarlarımı tapır açarlarımı tapdığım yerlərdə açarlarımı tapıram açarlarımı itirmişəm
- Konfiqurasiya sekmesinde, HTTPS üçün xidmət son nöqtəsini seçdiyinizə əmin olun. Https bağlantınızı kopyalayın və altındakı Varsayılan qutusuna yapışdırın. Hesab əlaqələndirmə nömrəsinə buraxıla bilər.
- SSL Sertifikatında "İnkişaf son nöqtəm bir sertifikat orqanından bir joker sertifikatı olan bir domenin alt sahəsidir" orta variantını seçin.
- Test nişanı, nümunə əmrlərinizdən birini yazaraq yeni bacarığı sınamağa imkan verəcək.
Bütün onay işarələri yaşıl olana qədər son iki nişanı doldurmağı bitirin. Sonra Beta Testi xüsusiyyəti ilə bacarıqlarınızı işə salın. Bu, dərc etməzdən əvvəl bacarıqlarınızı hər hansı bir eko cihazda yerləşdirməyə imkan verir. Bacarığı əks -səda cihazınıza quraşdırmaq üçün e -poçt bağlantısındakı təlimatları izləyin.
Addım 3: Bacarıqlarımızı daha ağıllı etmək
Evin hər tərəfinə yayılan boş kompüterləri RSSI siqnal gücünü bildirmək üçün bluetooth mayakını sorğulamaq üçün işə qoyduq.
Birdən çox maşından oxu alaraq siqnal gücünü məsafə üçün bir proxy olaraq istifadə edə bilərik. Evin mayak tapmaq üçün ən çox ehtimal olunan hissəsini hesablamaq üçün bundan necə istifadə edəcəyimizi anlamalıyıq.
Maşın öyrənməsinə müraciət edirik. Hər 2 dəqiqədə bir crontab işi, RSSI tuples məlumat bazası qurur. Fənəri fərqli yerlərdə yerləşdiririk: 'Yataq otağı', 'Hamam', 'Mətbəx', 'Yaşayış sahəsi' kimi RSSI qeydlərini etiketləyirik. Evin xəritəsini hazırladıqdan sonra, xgboost-un XGBClassifier kimi ağac əsaslı modellərindən istifadə edə bilərik.
Gradient artırmanın xgboost tətbiqi, bir neçə saniyə ərzində təhsildən çıxan itkin məlumatları idarə edəcək. Təlim edilmiş modeli davam etdirmək və alexa retrievr tətbiqimizə yükləmək üçün python turşusundan istifadə edin. Bacarıq çağırıldıqda, proqram bluetooth RSSI oxunuşuna baxır və proqnozlaşdırılan bir yer yaradır, alexa 'banyoda baxmağa çalış' deyə cavab verə bilər.
Addım 4: Hamısını bir yerə yığın
Açarların son yerini təxmini bir modelə sahib olaraq, Alexa tərəfindən qaytarılmış ifadəni yaxşılaşdırmaq üçün onu tətbiqə əlavə edə bilərik. Ssenarini oxumaq üçün dəyişdirdik:
flask_ask idxalından Şüşə idxal et, sorğu idxalı pexpect idxal turşusu idxal pandalar pd olaraq np kimi koleksiyonlardan idxal defaultdict, reverse_read idxalından sayıcı reverse_readline app = Flask (_ name_) ask = Ask (tətbiq, '/') @ 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.startswith ('Host') ilə: ln = next (line_gen): _, ip, _, reading = ln.split () read_dict [ip] = oxu res_lst.append (read_dict) əgər ip == 'ip.of.one.computer': read_dict = {} başqa: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Dəyərlər 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 = 'Tahmin varsa == 1' ə baxmağa çalışın: reply_str += 'yataq otağı' elif guess == 2: reply_str += 'vanna otağı' elif tahmin == 3: reply_str += 'mətbəx' elif tahmin == 4: reply_str += 'qonaq otağı' _name_ == "_main_" olarsa reply_str: app.run (ev sahibi = '127.0.0.1', liman = '5000')
En son qeydə alınan rssi siqnal gücünə malik bir fayl götürən guess_locate () adlı yeni bir funksiya yaratdıq. Daha sonra nümunələri turşu xgboost modelimizə qarşı işlədəcək və ən çox ehtimal olunan yer simini qaytaracaq. Alexa istənildikdə bu yer geri qaytarılacaq. Bir mayakla əlaqə qurmaq bir neçə saniyə çəkə biləcəyi üçün sound_alarm.py -də bu funksiyanı çağıran ayrı bir proses həyata keçiririk.
Tövsiyə:
Alexa əsaslı səsli idarə olunan raket atıcısı: 9 addım (şəkillərlə)
Alexa əsaslı səsli idarə olunan raket buraxıcı: qış mövsümü yaxınlaşdıqca; İşıqlar bayramının qeyd olunduğu ilin o vaxtı gəlir. Bəli, bütün dünyada qeyd olunan əsl Hindistan festivalı olan Diwali haqqında danışırıq. Bu il Diwali artıq bitdi və insanları görür
Alexa IoT TV nəzarətçisi ESP8266: 10 addım (şəkillərlə)
Alexa IoT TV Nəzarətçisi ESP8266: Bu yaxınlarda Amazon Prime günündə ~ 20 avroya Amazon Echo Dot aldım. Bu kiçik səs köməkçiləri, nəyin mümkün olduğunu və ağıllı cihazların necə qurulacağını bilirsinizsə, DIY Ev Otomasyonu üçün ucuz və əladır. Samsung Smart TV -yə sahibəm, amma istədim
Alexa və ya IFTTT ilə nəzarət LEDləri (SINRIC PRO TUTORIAL): 6 addım
Alexa və ya IFTTT (SINRIC PRO TUTORIAL) ilə idarəedici LEDlər: Deməli, "Alexa işığı yandırır?" Bu layihə sizin üçündür! Bu təlimatların sonunda bir Alexa cihazı və IFTTT ilə bir RGB zolağını idarə edə biləcəksiniz
Alexa Arduino Esp8266 ilə idarə olunan qaraj qapısı: 6 addım
Alexa Arduino Esp8266 ilə İdarəli Qaraj Qapısı: Bu layihənin ideyası bir müddət əvvəl üzərində işlədiyim köhnə bir layihədən gəldi. Qaraj qapısı tərəfindən bir düyməyə basıldıqda LED -i yandıracaq sadə bir düyməni bağladım. Bu üsul etibarsız və faydalı olmadığı ortaya çıxdı
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)