Բովանդակություն:
- Քայլ 1. Կոտրել Bluetooth փարոսները
- Քայլ 2: Ստեղծեք Alexa հմտություն և ծրագիր
- Քայլ 3. Մեր հմտությունները դարձնել ավելի խելացի
- Քայլ 4: Ամեն ինչ միասին դնել
Video: Ալեքսա, Որտե՞ղ են իմ բանալիները: 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Alexa- ն հատկապես լավ է համապատասխանում տեղեկատվության որոնման խնդիրներին և անլար տնային ցանցերի միջոցով ակտիվների մոնիտորինգին: Բնական է հաշվի առնել թանկարժեք իրերը ցանցի վրա արագ որոնման համար: Մենք կոտրում ենք էժան bluetooth ցածր էներգիայի լուսարձակներ ցանցի տիրույթի և մարտկոցի երկարակեցության համար և ստեղծում ենք խելացի ծրագիր, որպեսզի Alexa- ն իմանա, թե որտեղ ենք թողել բանալիները:
Ինչպես դա անել…
Քայլ 1. Կոտրել Bluetooth փարոսները
3 փարոսների հավաքածու կարելի է ձեռք բերել 15 դոլարից ցածր գնով և աջակցվում են Android/iOS ծրագրերին, սակայն մենք հրաժարվելու ենք գաղտնիությունից: Բացի այդ, մեր բանալիները գտնելը չպետք է վերածվի մեր հեռախոսը գտնելու:
Հակադարձ ինժեներական խելացի լուսարձակների այս adafruit ձեռնարկը մեզ օգնեց վերահսկել փարոսերը: Սկսեք ՝ միացնելով փարոսի սկան սարքի հասցեն ՝ գործարկելով.
sudo hcitool lescan
Գտեք և պատճենեք «iTag» անունով պիտակավորված հասցեն, այնուհետև գործարկեք.
sudo gatttool -I
Միացեք սարքին ինտերակտիվ ՝ գործարկելով.
միացնել AA: BB: CC: DD: EE: FF
Փորձեք գործարկել «օգնություն» ՝ ընտրանքները դիտելու կամ «հիմնական» ՝ ծառայությունները դիտելու համար.
Գործարկելով «char-desc»-ը, որին հաջորդում է ծառայության բռնակը, ինչպես վերևում, մենք գտնում ենք UUID- ներ, որոնք մենք փնտրում ենք ՝ հղում անելով gatt- ի բնութագրիչ բնութագրերին և ծառայության բնութագրերին: Այս ծառայությունների մասին ավելին իմանալու համար ստուգեք սա: Wireshark- ով երթևեկը դիտելով ՝ մենք գտնում ենք, որ 0100111000000001 -ը ազդանշան է առաջացնում և տրամաբանորեն, 0000111000000001 -ն անջատում է այն: Այժմ մենք ունենք պարզ պիթոնի գործառույթ.
ներմուծել pexpectdef sound_alarm (BD_ADDR). child = pexpect.spawn ('gatttool -I') child.sendline ('Connect {}'. format (BD_ADDR)) child.expect ('Connection հաջող', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Հաջորդը, մենք կենտրոնանում ենք այն բանի վրա, երբ փնտրում ենք փարոսը, Alexa հմտություն ստեղծելու համար:
Քայլ 2: Ստեղծեք Alexa հմտություն և ծրագիր
Մենք ստեղծում ենք հմտություն, որը կապված կլինի տեղական սերվերի հետ: Այնուհետև մենք կարգավորում ենք մեր սերվերը ՝ ցանկացած գործողություն կատարելու համար, որը մենք կցանկանայինք, այս դեպքում ՝ մոտավորություն այն բանի համար, թե որտեղ կարող են գտնվել բանալիները և Bluetooth ազդանշանի ազդանշանը հնչեցնել: Flask- ն ապահովում է պարզ և դյուրին օգտագործման համար նախատեսված Python գրադարան ՝ հավելվածը սպասարկելու համար: Օգտագործելով flask-ask, մենք կարող ենք կարգավորել սերվերը `մեր Alexa հմտությունների հետ հաղորդակցվելու համար, որոնք մենք հետագայում կկառուցենք: Դե, սպասարկեք ծրագիրը Ngrok- ի հետ, որը մեզ կտա https հղում, որը մեզ անհրաժեշտ կլինի մեր Alexa հմտության համար: Սկզբում մենք ստեղծեցինք հավելվածը ամենապարզ ֆունկցիոնալությամբ ՝ միացնելիս BLE փարոսի ազդանշանը հնչեցնելիս:
#!/usr/bin/env python շշալցված ներմուծումից Ֆլասկ flask_ask ներմուծում Հարցրեք, հայտարարություն ներմուծեք pexpect app = Ֆլասկ (_ անուն_) հարցրեք = Հարցրեք (ծրագիր, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF ' #Ձեր bluetooth փարոսի id այստեղ @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Ձեր բանալիները ինչ -որ տեղ այստեղ են": վերադարձի հայտարարություն (խոսքի_տեքստ) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('միացնել {}'. ձևաչափ (BD_ADDR)) child.expect ('Կապը հաջող է', ընդմիջում = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001'), եթե _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Մենք օգտագործել ենք sound_alarm () գործառույթը, որը գրել էինք ավելի վաղ ՝ BLE ազդանշանը հնչեցնելու համար: Ֆունկցիայի համար, որը կօգտագործվի մտադրության համար, մենք ավելացնում ենք հարցազարդիչին մեր մտադրությամբ «որոնման որոնումներ»: Երբ մենք պատրաստում ենք Alexa հմտությունը Amazon ծրագրավորողի վահանակում, մենք կօգտագործենք այս անունը մեր մտադրության համար: Գրեք այս սցենարը app.py անունով ֆայլում և գործարկեք
python app.py
Սա կծառայի ձեր հայտին https:// localhost: 5000 հասցեով: Գործարկեք ngrok սերվեր և պատճենեք ստեղծված https հղումը: Դա ձեզ հարկավոր կլինի, երբ կարգաբերեք Alexa հմտությունը: Լրացուցիչ մանրամասների համար ստուգեք այս գրառումը: Մենք հաջողությամբ ստեղծել ենք մի պարզ ծրագիր, այժմ մենք կգրենք Alexa հմտությունը: Գնացեք Amazon ծրագրավորողի վահանակ և մուտք գործեք: Կտտացրեք Alexa- ին և սկսեք Alexa Skill հավաքածուով
Հետևեք gui- ի կողմից տրված հրահանգներին:
Ինտեգրման մոդել ներդիրում կցանկանաք լրացնել Intent Schema տուփը հետևյալով
Sample Utterances տուփում դուք ցանկանում եք գրել որոշ օրինակելի հրամաններ, որոնք անձը կարող է օգտագործել հմտության համար: Մենք գրել ենք դրանք.
findkeys find my keysfindkeys որտեղ իմ բանալիները findkeys ես կորցրել եմ իմ բանալիները
- Կազմաձևման ներդիրում համոզվեք, որ ընտրեք ծառայության վերջնական կետը HTTPS- ին: Պատճենեք ձեր https հղումը և տեղադրեք ներքևի Default դաշտում: Հաշվի կապը կարելի է թողնել No.
- SSL վկայագրում ընտրեք միջին տարբերակը.
- «Թեստ» ներդիրը թույլ կտա փորձարկել նոր հմտությունը `մուտքագրելով ձեր ընտրանքային հրամաններից մեկը:
Ավարտեք վերջին երկու ներդիրների լրացումը, մինչև բոլոր ստուգման նշանները կանաչ լինեն: Այնուհետեւ գործարկեք ձեր հմտությունները Beta Testing գործառույթի միջոցով: Սա թույլ է տալիս տեղադրել ձեր հմտությունը ցանկացած echo սարքի վրա, նախքան այն հրապարակելը: Հետևեք էլփոստի հղման հրահանգներին `ձեր էխո սարքում հմտությունը տեղադրելու համար:
Քայլ 3. Մեր հմտությունները դարձնել ավելի խելացի
Մենք դնում ենք ամբողջ տանը սփռված անգործուն համակարգիչները, որոնք աշխատում են հարցնել bluetooth փարոսը `RSSI ազդանշանի հզորությունը հաղորդելու համար:
Բազմաթիվ մեքենաներից ընթերցումներ կատարելով ՝ մենք կարող ենք ազդանշանի ուժը օգտագործել որպես հեռավորության վստահված անձ: Մենք պետք է պարզենք, թե ինչպես օգտագործել սա ՝ փարոսը գտնելու համար տան ամենահավանական մասը հաշվարկելու համար:
Մենք դիմում ենք մեքենայական ուսուցման: Քրոնտաբի աշխատանքը յուրաքանչյուր 2 րոպեն մեկ կառուցում է RSSI բազմապատկերի հավաքածու: Փարոսը տեղադրելով տարբեր վայրերում ՝ «Ննջասենյակ», «Լոգարան», «Խոհանոց», «Բնակելի տարածք», մենք մակնշում ենք RSSI տեղեկամատյանները: Տունը քարտեզագրելուց հետո մենք կարող ենք օգտագործել ծառի վրա հիմնված մոդելներ, ինչպիսիք են xgboost- ի XGBClassifier- ը:
Գրադիենտի խթանման xgboost իրականացումը կկարգավորի ժամանակավրեպ ընթերցումների բացակայող տվյալները, ուսուցումը մի քանի վայրկյանում: Օգտագործեք python թթու ՝ վարժեցված մոդելը պահպանելու և մեր alexa retrievr ծրագրում բեռնելու համար: Երբ հմտությունը կոչվում է, ծրագիրը փնտրում է bluetooth RSSI ընթերցումը և առաջացնում կանխատեսված վայր:
Քայլ 4: Ամեն ինչ միասին դնել
Ունենալով բանալիների վերջին տեղադրության մոտավոր մոդել, մենք կարող ենք այն ավելացնել հավելվածում `Alexa- ի վերադարձած հայտարարությունը բարելավելու համար: Մենք փոփոխել ենք սցենարը ՝ կարդալու համար.
ներմուծում տափաշիշից ներմուծում Ֆլասկա flask_ask import Հարցրեք, հայտարարություն ներմուծեք pexpect ներմուծեք թթու ներմուծեք պանդաներ որպես pd ներմուծեք numpy ինչպես np հավաքածուներից 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 statement (speech_text) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = մինչդեռ len (res_lst)! = 20: ln = հաջորդ (line_gen) եթե ln.startswith ('Host'): _, ip, _, reading = ln.split () read_dict [ip] = res_lst.append (read_dict) if ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst). փոխարինել ({'N/ A ': np.nan}). Արժեքներ mdl_ = pickle.load (բաց (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] reply_str = 'Փորձիր փնտրել' if guess == 1: reply_str += 'ննջասենյակի' էլիֆ ենթադրությունը == 2: պատասխան_ստր = '127.0.0.1', նավահանգիստ = '5000')
Մենք ստեղծեցինք նոր գործառույթ, որը կոչվում է guess_locate (), որը վերցնում է rssi ազդանշանի վերջին գրանցված ուժերով ֆայլ: Այնուհետև այն կանցնի նմուշները մեր թթու xgboost մոդելի դեմ և կվերադարձնի ամենահավանական տեղանքի տողը: Այս վայրը կվերադառնա, երբ Alexa- ն հուշվի: Քանի որ փարոսի հետ կապ հաստատելը կարող է տևել մի քանի վայրկյան, մենք կատարում ենք առանձին գործընթաց, որը կանչում է այդ գործառույթը sound_alarm.py- ում:
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
Քայլ առ քայլ համակարգչային շենք. 9 քայլ
Քայլ առ քայլ համակարգչի կառուցում. Պարագաներ. Սարքավորումներ. Մայրական համակարգիչ CPU coolerPSU (Էներգամատակարարման միավոր) Պահեստավորում (HDD/SSD) RAMGPU (պարտադիր չէ) Գործ CaseTools: Պտուտակահան ESD ապարանջան/matsthermal paste w/aplikator
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
Ֆրեդ! Որտե՞ղ եք: 3 քայլ
Ֆրեդ! Որտե՞ղ եք: Այս նախագիծը վերաբերում է ձեր տնից քանի կմ հեռավորության վրա: Ֆրեդը սնուցվում է մարտկոցից, որը վերալիցքավորվում է սմարթֆոնի պես, որպեսզի կարողանաք այն ձեզ հետ բերել: Սա շատ հեշտ է կառուցել, բայց դուք կարող եք խրված լինել կոդավորման վրա: Այս նախագծում դուք կարող եք
Keyminder! այն սարքը, որը ստիպում է ձեզ չկորցնել ձեր բանալիները: 3 քայլ (նկարներով)
Keyminder! այն սարքը, որը ստիպում է ձեզ չկորցնել ձեր բանալիները. այս սարքը օգնում է ձեզ չկորցնել ձեր բանալիները: Եթե դու ինձ նման ես, երբ աշխատանքից տուն ես վերադառնում, դուռը բացելուց հետո անմիջապես կորցնում ես քո բանալիները և սպասում ես մինչև հաջորդ օրը, մինչև որ ստիպված լինես հեռանալ դրանք փնտրելու համար: Այո, դուք կարող եք ունենալ