Πίνακας περιεχομένων:
- Βήμα 1: Hacking Bluetooth Beacons
- Βήμα 2: Δημιουργία δεξιοτήτων και εφαρμογών Alexa
- Βήμα 3: Πιο έξυπνη η ικανότητά μας
- Βήμα 4: Το βάζουμε όλα μαζί
Βίντεο: Alexa, Where Are My Keys ;: 4 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Η Alexa είναι ιδιαίτερα κατάλληλη για εργασίες ανάκτησης πληροφοριών και παρακολούθηση στοιχείων χρησιμοποιώντας ασύρματα οικιακά δίκτυα. Είναι φυσικό να σκεφτείτε να βάλετε πολύτιμα αντικείμενα στο πλέγμα για γρήγορη ανάκτηση. Σπάμε φτηνούς φάρους χαμηλής κατανάλωσης bluetooth για το εύρος του δικτύου και τη μακροζωία της μπαταρίας και δημιουργούμε μια έξυπνη εφαρμογή, έτσι ώστε η Alexa να γνωρίζει πού αφήσαμε τα κλειδιά.
Πως να το κάνεις…
Βήμα 1: Hacking Bluetooth Beacons
Ένα σύνολο 3 φάρων μπορεί να αγοραστεί για λιγότερο από 15 $ και υποστηρίζεται με εφαρμογές Android/iOS, αλλά θα εξαιρεθούμε για την προστασία της ιδιωτικής ζωής. Εκτός αυτού, η εύρεση των κλειδιών μας δεν πρέπει να μετατραπεί σε εύρεση του τηλεφώνου μας.
Αυτό το σεμινάριο για τα έξυπνα φώτα αντίστροφης μηχανικής μας βοήθησε να ελέγξουμε τους φάρους. Ξεκινήστε ενεργοποιώντας τη σάρωση φάρου για τη διεύθυνση της συσκευής εκτελώντας:
sudo hcitool lescan
Βρείτε και αντιγράψτε τη διεύθυνση με την ετικέτα "iTag" και, στη συνέχεια, εκτελέστε:
sudo gatttool -Ι
Συνδεθείτε στη συσκευή διαδραστικά εκτελώντας:
συνδέστε AA: BB: CC: DD: EE: FF
Δοκιμάστε να εκτελέσετε "βοήθεια" για προβολή επιλογών ή "κύρια" για προβολή υπηρεσιών:
Εκτελώντας το «char-desc» ακολουθούμενο από το χειριστήριο υπηρεσίας όπως παραπάνω, βρίσκουμε UUID τα οποία αναζητούμε αναφέροντας τις χαρακτηριστικές προδιαγραφές και τις προδιαγραφές υπηρεσίας των gatt. Για περισσότερες πληροφορίες σχετικά με αυτές τις υπηρεσίες, ελέγξτε αυτό. Ελέγχοντας την κυκλοφορία με το Wireshark, διαπιστώνουμε ότι ο 0100111000000001 ενεργοποιεί τον συναγερμό και λογικά, ο 0000111000000001 τον απενεργοποιεί. Τώρα έχουμε την απλή συνάρτηση python:
εισαγωγή 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 beacon beep όταν ενεργοποιείται.
#!/usr/bin/env pythonαπό φιάλη εισαγωγής Φιάλη από flask_ask import Ρωτήστε, δήλωση εισαγωγής pexpect app = Φιάλη (_ name_) ask = Ρωτήστε (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF ' #Το αναγνωριστικό bluetooth beacon σας εδώ @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Τα κλειδιά σας βρίσκονται κάπου εδώ." statement child.sendline ('char-write-cmd 0x000b 0100111000000001') εάν _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Χρησιμοποιήσαμε τη λειτουργία sound_alarm () που γράψαμε νωρίτερα για να κάνουμε το ηχητικό σήμα BLE. Για τη συνάρτηση που θα χρησιμοποιηθεί για την πρόθεση, προσθέτουμε το διακοσμητικό ask με την πρόθεσή μας "findkeys". Όταν κάνουμε την ικανότητα Alexa στον πίνακα ελέγχου προγραμματιστών του Amazon, θα χρησιμοποιήσουμε αυτό το όνομα για την πρόθεσή μας. Γράψτε αυτό το σενάριο σε ένα αρχείο που ονομάζεται app.py και εκτελέστε
python app.py
Αυτό θα εξυπηρετήσει την εφαρμογή σας στο https:// localhost: 5000. Εκτελέστε έναν διακομιστή ngrok και αντιγράψτε τον σύνδεσμο https που δημιουργήθηκε. Θα το χρειαστείτε όταν διαμορφώσετε την ικανότητα Alexa. Για περισσότερες λεπτομέρειες, δείτε αυτήν την ανάρτηση. Δημιουργήσαμε με επιτυχία μια απλή εφαρμογή, τώρα θα γράψουμε την ικανότητα Alexa. Μεταβείτε στον πίνακα ελέγχου προγραμματιστών Amazon και συνδεθείτε. Κάντε κλικ στην Alexa και ξεκινήστε με το κιτ Alexa Skill
Ακολουθήστε τις οδηγίες που δίνονται από το gui.
Στην καρτέλα Μοντέλο ενσωμάτωσης θα θέλετε να συμπληρώσετε το πλαίσιο Σχέδιο πρόθεσης με τα ακόλουθα:
Στο πλαίσιο Sample Utterances, θέλετε να γράψετε μερικές εντολές δειγμάτων που μπορεί να χρησιμοποιήσει ένα άτομο για να επικαλεστεί την ικανότητα. Γράψαμε αυτά:
findkeys βρίσκω τα κλειδιά μου keyfinds όπου τα κλειδιά μου findkeys έχασα τα κλειδιά μου
- Στην καρτέλα Διαμόρφωση, βεβαιωθείτε ότι έχετε επιλέξει το τελικό σημείο της υπηρεσίας στο HTTPS. Αντιγράψτε τον σύνδεσμο https και επικολλήστε τον στο προεπιλεγμένο πλαίσιο από κάτω. Η σύνδεση λογαριασμού μπορεί να αφεθεί στο Αρ.
- Στο Πιστοποιητικό SSL επιλέξτε τη μεσαία επιλογή, "Το τελικό σημείο ανάπτυξης μου είναι ένας υποτομέας ενός τομέα που διαθέτει ένα πιστοποιητικό μπαλαντέρ από μια αρχή πιστοποιητικού".
- Η καρτέλα Δοκιμή θα σας επιτρέψει να δοκιμάσετε τη νέα δεξιότητα πληκτρολογώντας μία από τις εντολές σας.
Ολοκληρώστε τη συμπλήρωση των δύο τελευταίων καρτελών έως ότου όλα τα σημάδια ελέγχου είναι πράσινα. Στη συνέχεια, ξεκινήστε τις δεξιότητές σας με τη λειτουργία δοκιμής beta. Αυτό σας επιτρέπει να φιλοξενήσετε την ικανότητά σας σε οποιαδήποτε συσκευή ηχώ πριν τη δημοσίευσή της. Ακολουθήστε τις οδηγίες στο σύνδεσμο email για να εγκαταστήσετε την ικανότητα στη συσκευή σας ηχώ.
Βήμα 3: Πιο έξυπνη η ικανότητά μας
Βάζουμε τους αδρανείς υπολογιστές απλωμένους σε όλο το σπίτι για να εργαστούν στην αναζήτηση του φάρου bluetooth για να αναφέρουν την ισχύ του σήματος RSSI.
Λαμβάνοντας αναγνώσεις από πολλά μηχανήματα, μπορούμε να χρησιμοποιήσουμε την ισχύ του σήματος ως διακομιστή μεσολάβησης για απόσταση. Πρέπει να καταλάβουμε πώς να το χρησιμοποιήσουμε για να υπολογίσουμε το πιο πιθανό μέρος του σπιτιού για να βρούμε τον φάρο.
Περνάμε στη μηχανική μάθηση. Μια εργασία crontab κάθε 2 λεπτά, δημιουργεί ένα σύνολο πλειάδων RSSI. Τοποθετώντας τον φάρο σε διαφορετικά σημεία όπως: 'Υπνοδωμάτιο', 'Μπάνιο', 'Κουζίνα', 'Κατοικία' επισημαίνουμε τα αρχεία καταγραφής RSSI. Μόλις χαρτογραφήσουμε το σπίτι, μπορούμε να χρησιμοποιήσουμε μοντέλα που βασίζονται σε δέντρα, όπως το XGBClassifier του xgboost.
Η εφαρμογή xgboost της αύξησης της κλίσης θα χειριστεί τα δεδομένα που λείπουν από τις αναγνώσεις χρονικού ορίου, εκπαίδευση σε μερικά δευτερόλεπτα. Χρησιμοποιήστε python pickle για να διατηρήσετε το εκπαιδευμένο μοντέλο και να φορτώσετε στην εφαρμογή alexa retrievr. Όταν καλείται η δεξιότητα, η εφαρμογή αναζητά την ανάγνωση RSSI bluetooth και δημιουργεί μια προβλεπόμενη τοποθεσία, η alexa μπορεί να απαντήσει προτείνοντας να «δοκιμάσετε να κοιτάξετε στο μπάνιο».
Βήμα 4: Το βάζουμε όλα μαζί
Έχοντας ένα μοντέλο για την προσέγγιση της τελευταίας θέσης των κλειδιών, μπορούμε να το προσθέσουμε στην εφαρμογή για να βελτιώσουμε τη δήλωση που επέστρεψε η Alexa. Τροποποιήσαμε το σενάριο για να διαβάσουμε:
εισαγωγή osfrom φιάλη εισαγωγής Φιάλη από flask_ask import Ζητήστε, δήλωση εισαγωγής pexpect εισαγωγή τουρσί pandas ως pd import 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 () statement return (speech_text) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = ενώ len (res_lst)! = 20: ln = next (line_gen) if ln.startswith ('Host'): _, ip, _, read = 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).replace ({'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 guess == 2: reply_str += 'μπάνιο' elif guess == 3: answer_str += 'κουζίνα' elif guess == 4: reply_str += 'σαλόνι' επιστροφή reply_str αν _name_ == "_main_": app.run (host = '127.0.0.1', θύρα = '5000')
Δημιουργήσαμε μια νέα συνάρτηση που ονομάζεται guess_locate () η οποία λαμβάνει ένα αρχείο με τις πιο πρόσφατες καταγεγραμμένες δυνάμεις σήματος rssi. Στη συνέχεια, θα εκτελέσει τα δείγματα στο δικό μας μοντέλο xgboost και θα επιστρέψει την πιο πιθανή συμβολοσειρά τοποθεσίας. Αυτή η τοποθεσία θα επιστρέψει όταν σας ζητηθεί η Alexa. Δεδομένου ότι η δημιουργία σύνδεσης σε φάρο μπορεί να διαρκέσει μερικά δευτερόλεπτα, εκτελούμε μια ξεχωριστή διαδικασία κλήσης αυτής της λειτουργίας στο sound_alarm.py.
Συνιστάται:
Alexa Based Voice Controlled Rocket Launcher: 9 βήματα (με εικόνες)
Alexa Based Voice Controlled Rocket Launcher: Καθώς πλησιάζει η χειμερινή περίοδος. έρχεται εκείνη την εποχή του χρόνου που γιορτάζεται το φεστιβάλ των φώτων. Ναι, μιλάμε για το Diwali που είναι ένα πραγματικό ινδικό φεστιβάλ που γιορτάζεται σε όλο τον κόσμο. Φέτος, το Diwali έχει ήδη τελειώσει και βλέπει ανθρώπους
Σαλόνι ελέγχου με Alexa και Raspberry Pi: 12 βήματα
Έλεγχος σαλόνι με Alexa και Raspberry Pi: Ελέγξτε την τηλεόραση του σαλόνι σας, τα φώτα και τον ανεμιστήρα με Alexa (Amazon Echo ή Dot) και Raspberry Pi GPIO
Alexa IoT TV-Controller ESP8266: 10 βήματα (με εικόνες)
Alexa IoT TV-Controller ESP8266: Πρόσφατα αγόρασα ένα Amazon Echo Dot κατά τη διάρκεια της ημέρας του Amazon Prime για ~ 20 €. Αυτοί οι μικροί φωνητικοί βοηθοί είναι φθηνοί και εξαιρετικοί για DIY Home Automation, αν γνωρίζετε τι είναι δυνατό και πώς να φτιάξετε έξυπνες συσκευές. Έχω μια Samsung Smart TV, αλλά ήθελα να
LED ελέγχου με Alexa ή IFTTT (SINRIC PRO TUTORIAL): 6 βήματα
Έλεγχος LED με Alexa ή IFTTT (SINRIC PRO TUTORIAL): Θα θέλατε λοιπόν να είστε αυτό το άτομο που επιδεικνύεται κατά τη διάρκεια ενός κοσμικού δείπνου λέγοντας " Η Alexa ανάβει το φως; " Αυτό το έργο είναι για εσάς
Stereo Keys to Car Stereo Adapter (CAN Bus -> Key1): 6 βήματα
Stereo Keys to Car Stereo Adapter (CAN Bus -> Key1): Λίγες μέρες μετά την αγορά μεταχειρισμένου αυτοκινήτου, ανακάλυψα ότι δεν μπορώ να παίξω μουσική από το τηλέφωνό μου μέσω του στερεοφωνικού αυτοκινήτου. Ακόμα πιο απογοητευτικό ήταν ότι το αυτοκίνητο είχε bluetooth, αλλά επέτρεπε μόνο φωνητικές κλήσεις, όχι μουσική. Είχε επίσης θύρα USB για Windows Phone, αλλά