Isi kandungan:
- Langkah 1: Meretas Beacon Bluetooth
- Langkah 2: Membuat Kemahiran dan Aplikasi Alexa
- Langkah 3: Menjadikan Kemahiran Kita Lebih Cerdas
- Langkah 4: Menggabungkan Semuanya
Video: Alexa, Di mana kunci saya ?: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Alexa sangat sesuai untuk tugas pencarian maklumat dan memantau aset menggunakan rangkaian rumah tanpa wayar. Adalah wajar untuk mempertimbangkan meletakkan barang berharga di grid untuk pengambilan cepat. Kami meretas suar rendah tenaga bluetooth untuk jangkauan rangkaian dan jangka hayat bateri dan membina aplikasi pintar sehingga Alexa tahu di mana kami meninggalkan kunci.
Bagaimana hendak melakukannya…
Langkah 1: Meretas Beacon Bluetooth
Satu set 3 suar boleh dibeli dengan harga kurang dari $ 15 dan disokong dengan aplikasi Android / iOS tetapi kami akan memilih untuk privasi. Selain itu, mencari kunci kita tidak boleh berubah menjadi mencari telefon kita.
Tutorial iklan ini mengenai lampu pintar kejuruteraan terbalik membantu kami mengawal suar. Mulakan dengan mengaktifkan suar suar untuk alamat peranti dengan menjalankan:
sudo hcitool lescan
Cari & salin alamat yang berlabel dengan nama 'iTag,' kemudian jalankan:
sudo gatttool -I
Sambungkan ke peranti secara interaktif dengan menjalankan:
sambungkan AA: BB: CC: DD: EE: FF
Cuba jalankan 'help' untuk melihat pilihan atau 'utama' untuk melihat perkhidmatan:
Menjalankan 'char-desc' diikuti oleh pemegang perkhidmatan seperti di atas, kami menjumpai UUID yang kami cari dengan merujuk spesifikasi ciri gatt dan spesifikasi perkhidmatan. Untuk maklumat lanjut mengenai perkhidmatan ini, periksa ini. Memeriksa lalu lintas dengan Wireshark, kami mendapati bahawa 0100111000000001 mencetuskan penggera dan secara logik, 0000111000000001 mematikannya. Sekarang kita mempunyai fungsi python yang mudah:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Connection berjaya', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Seterusnya, kami memberi tumpuan untuk mencipta kemahiran Alexa untuk mencetuskan suar ketika kami mencari kunci.
Langkah 2: Membuat Kemahiran dan Aplikasi Alexa
Kami membuat kemahiran yang akan dihubungkan ke pelayan tempatan. Kemudian kami mengkonfigurasi pelayan kami untuk mengambil tindakan yang kami mahukan, dalam hal ini, memberikan perkiraan di mana kunci mungkin berada dan membuat bip suar Bluetooth. Flask menyediakan perpustakaan python yang mudah dan senang digunakan untuk melayani aplikasi. Dengan menggunakan flask-ask, kami dapat mengkonfigurasi pelayan untuk berkomunikasi dengan kemahiran Alexa kami yang akan kami bina nanti. Layan aplikasi dengan baik dengan Ngrok, yang akan memberi kami pautan https yang kami perlukan untuk kemahiran Alexa kami. Mula-mula kami membina aplikasi dengan fungsi paling mudah: untuk menjadikan beep beacon BLE kami semasa dicetuskan.
#! / usr / bin / env pythonfrom flas import import Flask from flask_ask import Ask, statement import pexpect app = Flask (_ name_) ask = Ask (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '# ID suar bluetooth anda di sini @ ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Kunci anda ada di sini di suatu tempat." penyataan kembali (ucapan_teks) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Connection berjaya', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') jika _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Kami menggunakan fungsi sound_alarm () yang kami tulis sebelumnya untuk membuat bunyi BLE. Untuk fungsi yang akan digunakan untuk maksud, kami menambahkan penghias tanya dengan maksud kami "findkeys". Apabila kita membuat kemahiran Alexa di papan pemuka Amazon, kita akan menggunakan nama ini untuk tujuan kita. Tulis skrip ini ke fail bernama app.py dan jalankan
python app.py
Ini akan melayani aplikasi anda di https:// localhost: 5000. Jalankan pelayan ngrok dan salin pautan https yang dihasilkan. Anda memerlukannya semasa anda mengkonfigurasi kemahiran Alexa. Untuk maklumat lebih lanjut, lihat siaran ini. Kami berjaya menyiapkan aplikasi sederhana, sekarang kami akan menulis kemahiran Alexa. Arahkan ke papan pemuka Amazon dan log masuk. Klik pada Alexa dan mulakan dengan Alexa Skill kit
Ikut arahan yang diberikan oleh gui.
Di bawah tab Model Perantaraan anda ingin mengisi kotak Skema Maksud dengan yang berikut:
Dalam kotak Sampel Ucapan, anda ingin menulis beberapa contoh arahan yang mungkin digunakan seseorang untuk menggunakan kemahiran. Kami menulis ini:
keykeys mencari kunci sayafindkeys di mana kunci saya mencari kunci saya kehilangan kunci saya
- Di tab Konfigurasi, pastikan untuk memilih titik akhir perkhidmatan ke HTTPS. Salin pautan https anda dan tampal di kotak Lalai di bawahnya. Pautan akaun boleh ditinggalkan ke No.
- Dalam Sijil SSL pilih pilihan tengah, "Titik akhir pengembangan saya adalah sub-domain domain yang mempunyai sijil wildcard dari pihak berkuasa sijil".
- Tab Ujian akan membolehkan anda menguji kemahiran baru dengan memasukkan salah satu contoh arahan anda.
Selesaikan mengisi dua tab terakhir sehingga semua tanda semak berwarna hijau. Kemudian lancarkan kemahiran anda dengan ciri Pengujian Beta. Ini membolehkan anda mengehadkan kemahiran anda di mana-mana peranti gema sebelum menerbitkannya. Ikuti arahan pada pautan e-mel untuk memasang kemahiran pada alat gema anda.
Langkah 3: Menjadikan Kemahiran Kita Lebih Cerdas
Kami meletakkan komputer terbiar yang tersebar di seluruh rumah untuk bekerja dalam pertanyaan suar bluetooth untuk melaporkan kekuatan isyarat RSSI.
Mengambil bacaan dari beberapa mesin, kita dapat menggunakan kekuatan isyarat sebagai proksi untuk jarak. Kita perlu memikirkan cara menggunakan ini untuk mengira bahagian rumah yang paling mungkin untuk mencari suar.
Kami beralih kepada pembelajaran mesin. Pekerjaan crontab setiap 2 minit, membina kumpulan data tupel RSSI. Menempatkan suar di tempat yang berlainan seperti: 'Bilik Tidur', 'Bilik Mandi', 'Dapur', 'Kawasan Hidup' kami melabelkan log RSSI. Sebaik sahaja kami memetakan rumah, kami dapat menggunakan model berasaskan pokok seperti XgClost Xgboost.
Pelaksanaan xgboost peningkatan gradien akan menangani data yang hilang dari pembacaan masa, latihan dalam beberapa saat. Gunakan acar python untuk mengekalkan model terlatih dan muatkan ke aplikasi pengambilan alexa kami. Apabila kemahiran dipanggil, aplikasi mencari bacaan RSSI bluetooth dan menghasilkan lokasi yang diramalkan, alexa dapat membalas yang menyarankan untuk 'cuba melihat di bilik mandi.'
Langkah 4: Menggabungkan Semuanya
Memiliki model untuk menghampiri lokasi terakhir kunci, kita dapat menambahkannya ke aplikasi untuk memperbaiki pernyataan yang dikembalikan oleh Alexa. Kami telah mengubah suai skrip untuk membaca:
import osfrom flask import Flask from flask_ask import Ask, statement import pexpect import pickle import panda as pd import numpy as np from collects 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 = kira_lokasi () penyataan kembali (ucapan_teks) def menebak_lokasi (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = sementara len (res_lst)! = 20: ln = seterusnya (line_gen) jika ln.startswith ('Host'): _, ip, _, membaca = ln.split () read_dict [ip] = read 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}).) [0] [0] reply_str = 'Cuba cari di' if teka == 1: reply_str + = 'bilik tidur' tekaan elif == 2: reply_str + = 'bilik mandi' elif tekaan == 3: balas_str + = 'dapur' elif meneka == 4: reply_str + = 'ruang tamu' balas balas_str jika _nama_ == "_main_": app.run (hos = '127.0.0.1', port = '5000')
Kami membuat fungsi baru yang disebut menebak_lokasi () yang mengambil fail dengan kekuatan isyarat rssi yang direkodkan terkini. Ia kemudian akan menjalankan sampel terhadap model xgboost acar kami dan mengembalikan rentetan lokasi yang paling mungkin. Lokasi ini akan dikembalikan apabila Alexa diminta. Sejak membuat sambungan ke suar dapat memakan waktu beberapa saat, kami menjalankan proses terpisah yang memanggil fungsi tersebut di sound_alarm.py.
Disyorkan:
Cara Membersihkan Hampir Mana-mana Pengawal Permainan: 5 Langkah
Cara Membersihkan Hampir Mana-mana Pengawal Permainan: Saya mempunyai sebilangan kecil pengawal Logitech Dual Action yang saya gunakan untuk emulator Raspberry Pi yang akan saya muat naik Instructable untuk segera. Setelah cuba menggunakan pengawal ini (ia telah disimpan untuk lebih dari setahun), kebanyakan butang pada
Tarik dan Paparkan Data dengan Ambiently Dari Mana-mana Laman Web Melalui Wifi (Petunjuk Lampu Utara) Dengan NodeMcu: 6 Langkah
Tarik dan Paparkan Data Secara Ambien Dari Mana-mana Laman Web Melalui Wifi (Petunjuk Lampu Utara) Dengan NodeMcu: Motivasi Saya: Saya telah melihat BANYAK arahan untuk menyiapkan / menggunakan NodeMCU (dibina pada modul ESP8266) untuk membuat projek IoT (internet of things) . Walau bagaimanapun, sangat sedikit tutorial ini yang mempunyai semua butiran / kod / rajah untuk orang baru yang sangat
Cara Mengaktifkan Multiwindow di Mana-mana Telefon Android: 6 Langkah
Cara Mengaktifkan Multiwindow di Mana-mana Telefon Android: Mod Multiwindow adalah mod rahsia atau beta pada Android 6.0 Marshmallow. Fungsi ini tidak tersedia untuk semua telefon bimbit. Tetapi ada teknik untuk mengaktifkan mod multiwindow di Android 6.0 Marshmallow. Keperluan: 1. Telefon mesti di-root.2. Versi Android
Bangun di LAN Mana-mana Komputer Melalui Rangkaian Tanpa Wayar: 3 Langkah
Bangun di LAN Mana-mana Komputer Melalui Rangkaian Tanpa Wayar: Tutorial ini tidak lagi terkini kerana perubahan pada gambar Raspbpian. Sila ikuti tutorial yang dikemas kini di sini: https://www.instructables.com/id/Raspberry-Pi-As-Wake-on-LAN-ServerWOL kini terdapat hampir di semua port Ethernet. Ini bukan
Tukar (hanya Tentang) Mana-mana Fail Media ke (hanya Tentang) Mana-mana Fail Media Lain Secara Percuma !: 4 Langkah
Tukar (Hanya Tentang) Mana-mana Fail Media ke (hanya Tentang) Mana-mana Fail Media Lain Secara Percuma! lebih universal, seperti. wmv atau.mov. Saya mencari banyak forum dan laman web dan kemudian menemui program yang dipanggil