Агуулгын хүснэгт:

Alexa, Миний түлхүүрүүд хаана байна?: 4 алхам
Alexa, Миний түлхүүрүүд хаана байна?: 4 алхам

Видео: Alexa, Миний түлхүүрүүд хаана байна?: 4 алхам

Видео: Alexa, Миний түлхүүрүүд хаана байна?: 4 алхам
Видео: Очень красивое чтение СУРА Аль Ихлас 🌺📿🕌🕋🏵️ #Quran #Quran_online #shorts 2024, Арваннэгдүгээр
Anonim
Image
Image
Bluetooth дохиог хакердах
Bluetooth дохиог хакердах

Alexa нь утасгүй гэрийн сүлжээг ашиглан мэдээлэл хайх, хөрөнгийг хянах ажилд маш сайн тохирдог. Үнэ цэнэтэй зүйлийг сүлжээнд хурдан оруулахын тулд сүлжээнд оруулах талаар бодох нь зүйн хэрэг юм. Бид сүлжээний хүрээ болон батерейны ашиглалтын хугацааг хэмнэсэн хямд Bluetooth бага эрчим хүчийг цохиж, ухаалаг програм бүтээдэг бөгөөд ингэснээр Alexa түлхүүрээ хаана үлдээсэнээ мэддэг болно.

Үүнийг хэрхэн хийх вэ…

Алхам 1: Bluetooth дохиог хакердах

3 ширхэг гэрэлт цамхагийг 15 доллараас бага үнээр худалдаж авах боломжтой бөгөөд үүнийг Android/iOS аппликейшнд дэмждэг боловч бид нууцлалыг сонгохоос татгалзах болно. Үүнээс гадна түлхүүрээ олох нь утсыг хайж олох ёсгүй.

Энэхүү урвуу инженерчлэлийн ухаалаг гэрлийн талаархи adafruit заавар нь гэрэлт цамхагуудыг удирдахад бидэнд тусалсан юм. Төхөөрөмжийн хаягийг хайж олохын тулд гэрэлтүүлэгчийг асаана уу.

sudo hcitool lescan

'ITag' гэсэн хаягтай хаягийг олоод хуулж аваад дараа нь ажиллуулна уу.

sudo gatttool -Би

Төхөөрөмжийг дараах байдлаар ажиллуулж интерактив холбоно уу.

холбох AA: BB: CC: DD: EE: FF

Сонголтуудыг үзэхийн тулд 'тусламж' эсвэл үйлчилгээг үзэхийн тулд 'үндсэн' ажиллуулж үзээрэй:

"Char-desc" -ийг ажиллуулсны дараа үйлчилгээний бариулыг дээр дурдсаны дагуу бид gatt-ийн онцлог шинж чанар, үйлчилгээний тодорхойлолтыг ашиглан хайж олох боломжтой UUID-ийг олдог. Wireshark -ийн урсгалыг шалгаж үзэхэд 0100111000000001 нь дохиоллыг асааж, логикийн хувьд 0000111000000001 унтраадаг болохыг олж мэдээрэй. Одоо бидэнд энгийн питон функц байна:

pexpectdef sound_alarm (BD_ADDR) импортлох: хүүхэд = pexpect.spawn ('gatttool -I') child.sendline ('холбох {}'. формат (BD_ADDR)) child.expect ('Холболт амжилттай', хугацаа дууссан = 30) хүүхэд.sendline ('char-write-cmd 0x000b 0100111000000001')

Дараа нь бид түлхүүр хайж байхдаа гэрэлт цамхгийг ажиллуулахын тулд Alexa ур чадварыг бий болгоход анхаарлаа төвлөрүүлдэг.

Алхам 2: Alexa ур чадвар, програмыг бий болгох

Alexa ур чадвар, програмыг бий болгох
Alexa ур чадвар, програмыг бий болгох
Alexa ур чадвар, програмыг бий болгох
Alexa ур чадвар, програмыг бий болгох

Бид локал сервертэй холбогдох ур чадварыг бий болгодог. Дараа нь бид серверээ хүссэн бүх арга хэмжээг авахаар тохируулдаг бөгөөд энэ тохиолдолд түлхүүрүүд хаана байрлаж болох талаар ойролцоогоор өгч, Bluetooth дохио өгөх дохио өгдөг. Flask нь програмд үйлчлэх энгийн, ашиглахад хялбар питон номын санг өгдөг. Колбаны тусламжийг ашиглан бид серверээ дараа нь бүтээх Alexa ур чадвараараа харилцахаар тохируулах боломжтой болно. Ngrok програмыг ашиглаарай, энэ нь бидэнд Alexa ур чадварын хувьд бидэнд хэрэгтэй https линкийг өгөх болно. Эхлээд бид програмыг хамгийн энгийн функцээр бүтээсэн: ажиллуулах үед BLE дохио дохио өгөх.

#!/usr/bin/env pythonfrom колбоос импортлох колбыг колбоос оруулах ' #Таны блютүүт дохио энд байна @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Таны түлхүүрүүд хаа нэгтээ хаа нэгтээ байна." буцах мэдэгдэл (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Холболт амжилттай боллоо', хугацаа дууссан = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') бол _name_ == "_main_": app.run (хост = '127.0.0.1', порт = '5000')

Бид өмнө нь бичсэн sound_alarm () функцийг ашиглан BLE дохио өгчээ. Зорилгод ашиглагдах функцын хувьд бид "Findkeys" гэсэн санаа бүхий гоёл чимэглэлийн элементийг нэмж өгдөг. Амазоны хөгжүүлэгчийн хяналтын самбар дээр Alexa -ийн ур чадварыг бий болгосноор бид энэ нэрийг зорилгодоо ашиглах болно. Энэ скриптийг app.py нэртэй файлд бичээд ажиллуулна уу

python програм.py

Энэ нь таны програмыг https:// localhost: 5000 дээр ашиглах болно. Ngrok сервер ажиллуулж, үүсгэсэн https линкийг хуулж ав. Alexa ур чадварыг тохируулах үед танд хэрэгтэй болно. Дэлгэрэнгүй мэдээллийг энэ бичлэгээс үзнэ үү. Бид энгийн програмыг амжилттай суулгалаа, одоо бид Alexa ур чадварыг бичих болно. Амазоны хөгжүүлэгчийн хяналтын самбар руу очоод нэвтэрнэ үү. Alexa дээр дарж Alexa Skill иж бүрдлийг ашиглаж эхлээрэй.

Gui -ийн өгсөн зааврыг дагана уу.

Interation Model табын доор та Intent Schema хайрцгийг дараах байдлаар бөглөхийг хүсч байна

Sample Utterances хайрцагт та ур чадвараа өдөөхийн тулд ашиглаж болох зарим жишээ тушаалуудыг бичихийг хүсч байна. Бид эдгээрийг бичсэн:

findkeys миний түлхүүрийг олдог түлхүүрүүд миний түлхүүрийг олдог түлхүүрүүд миний түлхүүрийг алдсан

  • Тохиргооны таб дээрээс HTTPS -ийн үйлчилгээний төгсгөлийн цэгийг сонгохоо мартуузай. Https линкээ хуулж, доорх Анхдагч хайрцагт буулгана уу. Дансны холбоосыг Үгүй гэж үлдээж болно.
  • SSL гэрчилгээнд "Миний хөгжлийн төгсгөлийн цэг бол гэрчилгээжүүлэх байгууллагаас орлуулагдсан тэмдэг бүхий гэрчилгээтэй домэйны дэд домэйн юм" гэсэн дунд сонголтыг сонгоно уу.
  • Туршилтын таб нь дээжийн нэг командыг бичиж шинэ ур чадвараа шалгах боломжийг танд олгоно.

Бүх шалгах тэмдэг ногоон өнгөтэй болтол сүүлийн хоёр табыг бөглөж дуусгана уу. Дараа нь ур чадвараа Бета тестийн онцлогоор эхлүүлээрэй. Энэ нь хэвлэхээсээ өмнө ямар ч цуурай төхөөрөмж дээр өөрийн ур чадвараа байршуулах боломжийг олгодог. Ур чадвараа цуурай төхөөрөмж дээрээ суулгахын тулд имэйлийн холбоос дээрх зааврыг дагана уу.

Алхам 3: Бидний ур чадварыг илүү ухаалаг болгох

Бидний ур чадварыг илүү ухаалаг болгох
Бидний ур чадварыг илүү ухаалаг болгох
Бидний ур чадварыг илүү ухаалаг болгох
Бидний ур чадварыг илүү ухаалаг болгох
Бидний ур чадварыг илүү ухаалаг болгох
Бидний ур чадварыг илүү ухаалаг болгох

Бид RSSI дохионы хүчийг мэдээлэхийн тулд блютүүт гэрэлтүүлгийг хайж олохын тулд байшин даяар тархсан сул зогсолт бүхий компьютеруудыг ажиллуулав.

Олон машинаас уншилт авснаар бид дохионы хүчийг зайн прокси болгон ашиглаж болно. Үүнийг ашиглан гэрэлт цамхгийг олохын тулд байшингийн хамгийн их магадлалтай хэсгийг хэрхэн яаж тооцоолохоо олж мэдэх хэрэгтэй.

Бид машин сурах руу шилждэг. Crontab -ийн ажил 2 минут тутамд RSSI файлуудын мэдээллийн санг бүрдүүлж өгдөг. Гэрэлт цамхагийг 'Унтлагын өрөө', 'Угаалгын өрөө', 'Гал тогоо', 'Зочны өрөө' гэх мэт өөр өөр газар байрлуулснаар бид RSSI бүртгэлийг тэмдэглэдэг. Гэрийн зураглалыг хийсний дараа бид xgboost-ийн XGBClassifier гэх мэт модонд суурилсан загваруудыг ашиглаж болно.

Градиент өргөлтийн xgboost хэрэгжилт нь хэдхэн секундын дотор цаг тухайд нь уншсан өгөгдлийг алдах болно. Python даршилсан ногоо ашиглан бэлтгэгдсэн загвараа хадгалж, манай alexa retrievr програм руу ачаална уу. Ур чадварыг дуудах үед програм нь bluetooth RSSI уншилтыг хайж, урьдчилан таамагласан байршлыг бий болгодог.

Алхам 4: Бүгдийг нэгтгэх

Түлхүүрүүдийн сүүлчийн байршлыг ойролцоогоор тодорхойлох загвартай бол бид үүнийг Alexa -ийн буцааж өгсөн мэдэгдлийг сайжруулахын тулд програмд нэмж болно. Бид скриптийг дараах байдлаар өөрчилсөн.

колбыг импортлох колбыг flask_ask импортоос авах Асуулт, мэдэгдэл импорт pexpect импортлох даршилсан ногоо импортлох панда pd импорт numpy гэж цуглуулгаас импортлох defaultdict ask.intent ('findkeys') def retrievr (): os.system ("/path/to/repo/sound_alarm.py &") speech_text = guess_locate () return statement (speech_text) def tahmin_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] = унших res_lst. A ': np.nan}). Утгууд 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 = 'Хэрэв таавар == 1: reply_str +=' унтлагын өрөө 'elif таамаглалыг хайж үзээрэй == 2: reply_str += 'угаалгын өрөө' elif таамаг == 3: reply_str += 'гал тогоо' elif таамаглах == 4: reply_str += 'зочны өрөө' _name_ == "_main_" байвал буцах reply_str: app.run (хост = '127.0.0.1', порт = '5000')

Бид guess_locate () нэртэй шинэ функцийг үүсгэсэн бөгөөд энэ нь хамгийн сүүлийн үеийн rssi дохионы хүчийг агуулсан файлыг авдаг. Дараа нь энэ нь бидний даршилсан xgboost загварын эсрэг дээжийг ажиллуулж, хамгийн магадлалтай байршлын мөрийг буцаана. Alexa -г асуухад энэ байрлалыг буцааж өгөх болно. Гэрэлт цамхагтай холбоо тогтооход хэдэн секунд шаардагдах тул бид sound_alarm.py дотор энэ функцийг дуудах тусдаа процессыг явуулдаг.

Зөвлөмж болгож буй: