Სარჩევი:
- ნაბიჯი 1: Bluetooth შუქურების გატეხვა
- ნაბიჯი 2: შექმენით Alexa უნარი და აპლიკაცია
- ნაბიჯი 3: გახადეთ ჩვენი უნარი უფრო ჭკვიანი
- ნაბიჯი 4: ყველაფერი ერთად ააწყვეთ
ვიდეო: ალექსია, სად არის ჩემი გასაღებები?: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
Alexa განსაკუთრებით კარგად ერგება ინფორმაციის მოპოვების ამოცანებს და უკაბელო სახლის ქსელების გამოყენებით აქტივების მონიტორინგს. ბუნებრივია განიხილოს ძვირფასი ნივთების ბადეზე სწრაფი მოძიების მიზნით. ჩვენ ვტეხავთ დაბალ bluetooth დაბალი ენერგიის შუქურებს ქსელის დიაპაზონისა და ბატარეის ხანგრძლივობისთვის და ვქმნით ჭკვიან პროგრამას ისე, რომ ალექსამ იცოდეს სად დავტოვეთ გასაღებები.
Როგორ გავაკეთო ეს…
ნაბიჯი 1: Bluetooth შუქურების გატეხვა
3 შუქურის ნაკრები შეგიძლიათ შეიძინოთ 15 დოლარზე ნაკლებ ფასად და მხარდაჭერილია Android/iOS პროგრამებით, მაგრამ ჩვენ კონფიდენციალურობაზე უარს ვიტყვით. გარდა ამისა, ჩვენი გასაღებების პოვნა არ უნდა იქცეს ჩვენი ტელეფონის პოვნაში.
ეს ადაფრუტის გაკვეთილი საპირისპირო ინჟინერიის ჭკვიანი შუქების შესახებ დაგვეხმარა შუქურების კონტროლში. დაიწყეთ მოწყობილობის მისამართის შუქის სკანირების ჩართვით გაშვებით:
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 suksess', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
შემდეგი, ჩვენ ყურადღებას ვაქცევთ Alexa უნარის შექმნას შუქურის გაშვებისას, როდესაც ჩვენ ვეძებთ გასაღებებს.
ნაბიჯი 2: შექმენით Alexa უნარი და აპლიკაცია
ჩვენ ვქმნით უნარს, რომელიც იქნება დაკავშირებული ადგილობრივ სერვერთან. შემდეგ ჩვენ ვაკონფიგურირებთ ჩვენს სერვერს, რომ განახორციელოს ნებისმიერი ქმედება, რაც ჩვენ გვსურს, ამ შემთხვევაში, მივაწოდოთ მიახლოება, თუ სად შეიძლება განთავსდეს გასაღებები და გამოვაჩინოთ Bluetooth შუქურის სიგნალი. Flask გთავაზობთ მარტივ და ადვილად გამოსაყენებელ პითონის ბიბლიოთეკას, რომელიც ემსახურება პროგრამას. Flask-ask– ის გამოყენებით, ჩვენ შეგვიძლია კონფიგურაცია გავუწიოთ სერვერს, რომ დაუკავშირდეს ჩვენს Alexa უნარს, რომელსაც ჩვენ მოგვიანებით ავაშენებთ. კარგად ემსახურეთ პროგრამას Ngrok– ით, რომელიც მოგვცემს https ბმულს, რომელიც დაგვჭირდება Alexa უნარისთვის. პირველ რიგში ჩვენ შევქმენით პროგრამა უმარტივესი ფუნქციონირებით: რომ ჩვენი BLE შუქურის სიგნალი იყოს ჩართვისას.
#!/usr/bin/env პითონი ფლაკონის იმპორტიდან კოლბა flask_ask იმპორტი ითხოვეთ, განაცხადი იმპორტი pexpect app = Flask (_ name_) ask = ask (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF ' #შენი bluetooth შუქურის id აქ @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "შენი გასაღებები აქ არის სადმე." დაბრუნების განცხადება (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_ == "_ ძირითადი_": app.run (მასპინძელი = '127.0.0.1', პორტი = '5000')
ჩვენ გამოვიყენეთ ფუნქცია sound_alarm (), რომელიც ადრე დავწერეთ BLE სიგნალის გასაკეთებლად. იმ ფუნქციისთვის, რომელიც გამოყენებული იქნება განზრახვისთვის, ჩვენ ვამატებთ შეკითხვის დეკორატორს ჩვენი განზრახვით "findkeys". როდესაც ჩვენ ვაკეთებთ Alexa უნარს ამაზონის დეველოპერების დაფაზე, ჩვენ ვიყენებთ ამ სახელს ჩვენი განზრახვისთვის. ჩაწერეთ ეს სკრიპტი ფაილში სახელწოდებით app.py და გაუშვით
პითონის აპლიკაცია. py
ეს მოემსახურება თქვენს აპლიკაციას https:// localhost: 5000. გაუშვით გათბობის სერვერი და დააკოპირეთ გენერირებული https ბმული. თქვენ დაგჭირდებათ, როდესაც დააკონფიგურირებთ Alexa უნარს. დამატებითი დეტალებისთვის, გადახედეთ ამ პოსტს. ჩვენ წარმატებით შევქმენით მარტივი პროგრამა, ახლა ჩვენ დავწერთ Alexa უნარს. გადადით ამაზონის დეველოპერების საინფორმაციო დაფაზე და შედით სისტემაში. დააწკაპუნეთ Alexa– ზე და დაიწყეთ Alexa Skill ნაკრებით
მიჰყევით გიის მითითებებს.
ჩანართის ინტეგრაციის მოდელის ქვეშ თქვენ გსურთ შეავსოთ ინტენსიური სქემის ყუთი შემდეგით:
Sample Utterances ყუთში, თქვენ გინდათ დაწეროთ რამოდენიმე ბრძანება, რომელიც ადამიანმა შეიძლება გამოიყენოს უნარის გამოსაძახებლად. ჩვენ დავწერეთ ეს:
findkeys იპოვეთ ჩემი გასაღებები findkeys სადაც ჩემი გასაღებები findkeys მე დავკარგე ჩემი გასაღებები
- კონფიგურაციის ჩანართში, დარწმუნდით, რომ აირჩიეთ სერვისის ბოლო წერტილი HTTPS– ზე. დააკოპირეთ თქვენი https ბმული და ჩასვით ნაგულისხმევი ყუთში ქვემოთ. ანგარიშის ბმული შეიძლება დარჩეს ნომერზე.
- SSL სერთიფიკატში შეარჩიეთ საშუალო ვარიანტი: "ჩემი განვითარების საბოლოო წერტილი არის დომენის ქვე-დომენი, რომელსაც აქვს wildcard სერთიფიკატი სერტიფიკატის ორგანოსგან".
- ტესტის ჩანართი საშუალებას მოგცემთ შეამოწმოთ ახალი უნარი თქვენი ერთ -ერთი ნიმუშის ბრძანების აკრეფით.
დაასრულეთ ბოლო ორი ჩანართის შევსება, სანამ ყველა გამშვები ნიშანი არ გახდება მწვანე. შემდეგ გაუშვით თქვენი უნარი ბეტა ტესტირების ფუნქციით. ეს საშუალებას მოგცემთ უმასპინძლოთ თქვენს უნარებს ექოს მოწყობილობაზე გამოქვეყნებამდე. მიჰყევით მითითებებს ელ.ფოსტის ბმულზე, რათა დააინსტალიროთ უნარი თქვენს ექოს მოწყობილობაზე.
ნაბიჯი 3: გახადეთ ჩვენი უნარი უფრო ჭკვიანი
ჩვენ დავუშვით უსაქმური კომპიუტერები, რომლებიც მთელს სახლშია გავრცელებული, რათა ვიმუშაოთ bluetooth შუქურის გამოძიებაზე RSSI სიგნალის სიძლიერის შესახებ.
რამოდენიმე აპარატის კითხვისას, ჩვენ შეგვიძლია გამოვიყენოთ სიგნალის სიძლიერე, როგორც პროქსი დისტანციისთვის. ჩვენ უნდა გავარკვიოთ როგორ გამოვიყენოთ ეს სახლის ყველაზე სავარაუდო ნაწილის გამოსათვლელად შუქურის მოსაძებნად.
ჩვენ მივმართავთ მანქანათმცოდნეობას. Crontab სამუშაო ყოველ 2 წუთში, ქმნის RSSI tuples მონაცემთა ნაკრებს. შუქურის განთავსება სხვადასხვა ადგილას, როგორიცაა: "საძინებელი", "აბაზანა", "სამზარეულო", "საცხოვრებელი ფართი" ჩვენ ვნიშნავთ RSSI ჟურნალებს. მას შემდეგ, რაც ჩვენ დავსახეთ სახლი, ჩვენ შეგვიძლია გამოვიყენოთ ხეზე დაფუძნებული მოდელები, როგორიცაა xgboost's XGBClassifier.
გრადიენტის გაზრდის xgboost განხორციელება გაუმკლავდება დაკარგული მონაცემების დროულ კითხვას, ვარჯიშს რამდენიმე წამში. გამოიყენეთ პითონის მწნილი, რომ გააგრძელოთ გაწვრთნილი მოდელი და ჩატვირთოთ ჩვენს Alexa retrievr პროგრამაში. როდესაც უნარი იძახის, აპლიკაცია ეძებს bluetooth RSSI კითხვას და ქმნის წინასწარ განსაზღვრულ ადგილს, ალექსას შეუძლია უპასუხოს "აბაზანაში ძიების მცდელობას".
ნაბიჯი 4: ყველაფერი ერთად ააწყვეთ
ჩვენ გვაქვს მოდელი გასაღებების ბოლო მდებარეობის დასადგენად, ჩვენ შეგვიძლია დავამატოთ ის განაცხადს Alexa– ს მიერ დაბრუნებული განცხადების გასაუმჯობესებლად. ჩვენ შევცვალეთ სკრიპტი წასაკითხად:
იმპორტი osfrom flask იმპორტი კოლბა flask_ask იმპორტი ითხოვეთ, განაცხადი იმპორტი pexpect იმპორტი მწნილი იმპორტი pandas როგორც 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 ('მასპინძელი'): _, ip, _, კითხვა = 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 (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] answer_str = 'სცადეთ ნახოთ' if guess == 1: answer_str += 'საძინებელი' elif გამოცნობა == 2: reply_str += 'აბაზანა' elif გამოცნობა == 3: reply_str += 'სამზარეულო' elif გამოცნობა == 4: reply_str += 'მისაღები ოთახი' reply_str თუ _name_ == "_ მთავარი_": app.run (მასპინძელი = '127.0.0.1', პორტი = '5000')
ჩვენ შევქმენით ახალი ფუნქცია სახელწოდებით guess_locate () რომელიც იღებს ფაილს უახლესი ჩაწერილი rssi სიგნალის სიძლიერით. შემდეგ ის გაუშვებს ნიმუშებს ჩვენი დამწნილებული xgboost მოდელის წინააღმდეგ და დააბრუნებს მდებარეობის ყველაზე სავარაუდო სტრიქონს. ეს ადგილმდებარეობა დაბრუნდება, როდესაც Alexa მოთხოვნილი იქნება. ვინაიდან შუქურასთან კავშირის დამყარებას შეიძლება რამდენიმე წამი დასჭირდეს, ჩვენ ვაწარმოებთ ცალკე პროცესს, რომელიც ამ ფუნქციას ეძახის sound_alarm.py.
გირჩევთ:
FinduCar: ჭკვიანი მანქანის გასაღები, რომელიც უძღვება ხალხს სად არის მანქანა გაჩერებული: 11 ნაბიჯი (სურათებით)
FinduCar: ჭკვიანი მანქანის გასაღები, რომელიც უხელმძღვანელებს ხალხს იქ, სადაც მანქანა გაჩერებულია: ზემოაღნიშნული პრობლემების გადასაჭრელად, ეს პროექტი გვთავაზობს გონიერი მანქანის გასაღების შემუშავებას, რომელიც ხალხს მიმართავს იქ, სადაც ისინი გააჩერებენ მანქანას. და ჩემი გეგმა არის GPS– ის ინტეგრირება მანქანის გასაღებში. სმარტფონის აპლიკაციის გამოყენება არ არის საჭირო
კარგად არის ჩემი სული, Sonic Pi– ით: 4 ნაბიჯი
ეს კარგად არის ჩემი სულით, Sonic Pi– ით: ამ ინსტრუქციებში მე ვაჩვენებ როგორ გავაკეთო ლამაზი, მაგრამ მარტივი, ეს კარგად არის ჩემი Soul სიმღერით Sonic Pi– ს გამოყენებით. ქვემოთ მოვიყვან სრულ კოდის კოდს. Sonic Pi არის მარტივი ცოცხალი პროგრამირების Synth. სწავლის მხოლოდ სამ დღეში
შექმენით ჩემი საკუთარი გრაფიკები ჩემი IOT მონაცემებისთვის ჟოლოს PI– ზე: 3 ნაბიჯი
შექმენით ჩემი საკუთარი გრაფიკები ჩემი IOT მონაცემებისთვის ჟოლოს PI- ზე: გთხოვთ წაიკითხოთ, თუ გინდათ რომ შეგეძლოთ შექმნათ თქვენი საკუთარი IOT გრაფიკები კოდის 7 ხაზის გამოყენებით. მე მინდოდა შემექმნა სქემები, რომ აჩვენო მონაცემები გრაფიკული ფორმატით ჩემი IOT სენსორებიდან ვებ გვერდზე. ადრე, ამისათვის მე ვიყენებდი მესამე მხარის მომსახურებებს (ზოგი
შეცვალეთ Windows, რომ ნახოთ სად არის გადაღებული ფოტო: 4 ნაბიჯი
შეცვალეთ Windows იმის საჩვენებლად, თუ სად არის გადაღებული ფოტო: შესავალი ოდესმე დაათვალიერეთ თქვენი სამოგზაურო ფოტოები და დაინტერესდით, სად გადაიღეთ ისინი? რა ერქვა იმ პატარა ქალაქს, სადაც ხუთი წლის წინ გააჩერე, ის, სადაც ყველაზე საოცარი ყავა დალიე? მას შემდეგ რაც შეცვლი ქარს
ჩემი კლავიატურა ჩემი ხელები: 8 ნაბიჯი (სურათებით)
ჩემი კლავიატურა ჩემი ხელები: მე გამოვიყენე ახალი Epilog ლაზერული საჭრელი, რომელიც Instructables– მა ახლახან მიიღო ლაზერულად და ჩემი ხელების გამოსახულება ლეპტოპის კლავიატურაზე … მუდმივად. ახლა ეს გააუქმებს თქვენს გარანტიას წვრილმანების სტილში! მე ლაზერულად დავწერე უფრო მეტი ლაპტოპი ვიდრე უმეტესობა მას შემდეგ რაც მე დამეხმარა