Mục lục:
- Bước 1: Lấy cắp dữ liệu báo hiệu Bluetooth
- Bước 2: Tạo kỹ năng và ứng dụng Alexa
- Bước 3: Làm cho kỹ năng của chúng tôi trở nên thông minh hơn
- Bước 4: Kết hợp tất cả lại với nhau
Video: Alexa, phím của tôi ở đâu ?: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Alexa đặc biệt phù hợp với các nhiệm vụ truy xuất thông tin và giám sát tài sản bằng mạng gia đình không dây. Việc cân nhắc đưa các vật có giá trị lên lưới để thu hồi nhanh là điều đương nhiên. Chúng tôi hack các đèn hiệu năng lượng thấp của bluetooth giá rẻ cho phạm vi mạng và tuổi thọ pin, đồng thời xây dựng một ứng dụng thông minh để Alexa biết chúng tôi đã để chìa khóa ở đâu.
Làm thế nào để làm nó…
Bước 1: Lấy cắp dữ liệu báo hiệu Bluetooth
Bạn có thể mua bộ 3 báo hiệu với giá dưới 15 đô la và được hỗ trợ với các ứng dụng Android / iOS nhưng chúng tôi sẽ chọn không tham gia vì quyền riêng tư. Bên cạnh đó, việc tìm chìa khóa của chúng ta không nên biến thành việc tìm kiếm điện thoại của chúng ta.
Hướng dẫn đặc biệt này về đèn thông minh kỹ thuật đảo ngược đã giúp chúng tôi kiểm soát các đèn hiệu. Bắt đầu bằng cách bật tính năng quét báo hiệu cho địa chỉ thiết bị bằng cách chạy:
sudo hcitool lescan
Tìm và sao chép địa chỉ được gắn nhãn với tên 'iTag', sau đó chạy:
sudo gatttool -Tôi
Kết nối tương tác với thiết bị bằng cách chạy:
kết nối AA: BB: CC: DD: EE: FF
Thử chạy 'trợ giúp' để xem các tùy chọn hoặc 'chính' để xem các dịch vụ:
Chạy 'char-desc' theo sau bởi xử lý dịch vụ như trên, chúng tôi tìm thấy các UUID mà chúng tôi tra cứu bằng cách tham khảo các thông số kỹ thuật đặc tính gatt và thông số kỹ thuật dịch vụ. Để biết thêm về các dịch vụ này, hãy kiểm tra phần này. Kiểm tra lưu lượng bằng Wireshark, chúng tôi thấy rằng 0100111000000001 kích hoạt cảnh báo và về mặt logic, 0000111000000001 sẽ tắt nó đi. Bây giờ chúng ta có hàm python đơn giản:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Kết nối thành công', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Tiếp theo, chúng tôi tập trung vào việc tạo kỹ năng Alexa để kích hoạt đèn hiệu khi chúng tôi đang tìm kiếm các phím.
Bước 2: Tạo kỹ năng và ứng dụng Alexa
Chúng tôi tạo ra một kỹ năng sẽ được liên kết với một máy chủ cục bộ. Sau đó, chúng tôi định cấu hình máy chủ của mình để thực hiện bất kỳ hành động nào chúng tôi muốn, trong trường hợp này, cung cấp ước tính về vị trí các phím có thể được đặt và phát ra tiếng bíp Bluetooth. Flask cung cấp một thư viện python đơn giản và dễ sử dụng để phục vụ một ứng dụng. Sử dụng flask-ask, chúng tôi có thể định cấu hình máy chủ để giao tiếp với kỹ năng Alexa mà chúng tôi sẽ xây dựng sau này. Phục vụ tốt ứng dụng với Ngrok, nó sẽ cung cấp cho chúng tôi liên kết https mà chúng tôi cần cho kỹ năng Alexa của mình. Đầu tiên, chúng tôi xây dựng ứng dụng với chức năng đơn giản nhất: để phát ra tiếng bíp BLE của chúng tôi khi được kích hoạt.
#! / usr / bin / env pythonfrom flask 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 beacon bluetooth của bạn tại đây @ ask.intent (' findkeys ') def Retrievr (): sound_alarm () speech_text = "Các chìa khóa của bạn ở đâu đó ở đây." câu lệnh return (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Kết nối thành công', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Chúng tôi đã sử dụng hàm sound_alarm () mà chúng tôi đã viết trước đó để tạo ra tiếng bíp BLE. Đối với hàm sẽ được sử dụng cho ý định, chúng tôi thêm trình trang trí hỏi với ý định của chúng tôi là "các phím tìm kiếm". Khi tạo kỹ năng Alexa trên bảng điều khiển dành cho nhà phát triển Amazon, chúng tôi sẽ sử dụng tên này cho mục đích của mình. Viết tập lệnh này vào tệp có tên app.py và chạy
python app.py
Điều này sẽ phục vụ ứng dụng của bạn trên https:// localhost: 5000. Chạy máy chủ ngrok và sao chép liên kết https được tạo. Bạn sẽ cần nó khi định cấu hình kỹ năng Alexa. Để biết thêm chi tiết, hãy xem bài đăng này. Chúng tôi đã thiết lập thành công một ứng dụng đơn giản, bây giờ chúng tôi sẽ viết kỹ năng Alexa. Điều hướng đến bảng điều khiển dành cho nhà phát triển Amazon và đăng nhập. Nhấp vào Alexa và bắt đầu với bộ kỹ năng Alexa
Làm theo hướng dẫn của gui.
Trong tab Mô hình Tương tác, bạn sẽ muốn điền vào hộp Lược đồ Ý định với thông tin sau:
Trong hộp Lệnh mẫu, bạn muốn viết một số lệnh mẫu mà một người có thể sử dụng để gọi kỹ năng. Chúng tôi đã viết những điều này:
các phím tìm kiếm tìm các phím tìm phím của tôi, nơi tìm các phím của tôi, tôi đã đánh mất chìa khóa của mình
- Trong tab Cấu hình, hãy đảm bảo chọn điểm kết thúc dịch vụ là HTTPS. Sao chép liên kết https của bạn và dán vào hộp Mặc định bên dưới. Liên kết tài khoản có thể được để không.
- Trong Chứng chỉ SSL, hãy chọn tùy chọn giữa, "Điểm cuối phát triển của tôi là miền phụ của miền có chứng chỉ ký tự đại diện từ tổ chức phát hành chứng chỉ".
- Tab Kiểm tra sẽ cho phép bạn kiểm tra kỹ năng mới bằng cách nhập một trong các lệnh mẫu của bạn.
Hoàn tất việc điền vào hai tab cuối cùng cho đến khi tất cả các dấu kiểm có màu xanh lá cây. Sau đó, khởi động kỹ năng của bạn với tính năng Thử nghiệm Beta. Điều này cho phép bạn lưu trữ kỹ năng của mình trên bất kỳ thiết bị echo trước khi xuất bản nó. Làm theo hướng dẫn trên liên kết email để cài đặt kỹ năng trên thiết bị echo của bạn.
Bước 3: Làm cho kỹ năng của chúng tôi trở nên thông minh hơn
Chúng tôi đặt các máy tính nhàn rỗi rải khắp nhà để truy vấn đèn hiệu bluetooth để báo cáo cường độ tín hiệu RSSI.
Lấy kết quả đọc từ nhiều máy, chúng tôi có thể sử dụng cường độ tín hiệu để làm đại diện cho khoảng cách. Chúng tôi cần tìm ra cách sử dụng điều này để tính toán phần có khả năng nhất của ngôi nhà để tìm ra đèn hiệu.
Chúng tôi chuyển sang học máy. Một công việc crontab cứ sau 2 phút, tạo ra một tập dữ liệu gồm các bộ RSSI. Đặt beacon ở các vị trí khác nhau như: 'Phòng ngủ', 'Phòng tắm', 'Nhà bếp', 'Khu vực sinh hoạt', chúng tôi gắn nhãn các bản ghi RSSI. Khi chúng tôi đã lập bản đồ ngôi nhà, chúng tôi có thể sử dụng các mô hình dựa trên cây như XGBClassifier của xgboost.
Việc triển khai xgboost của tăng cường độ dốc sẽ xử lý dữ liệu bị thiếu từ các lần đọc hết thời gian, đào tạo trong vài giây. Sử dụng python pickle để duy trì mô hình đã đào tạo và tải vào ứng dụng truy xuất alexa của chúng tôi. Khi kỹ năng được gọi, ứng dụng sẽ tra cứu kết quả đọc RSSI bluetooth và tạo vị trí dự đoán, alexa có thể trả lời đề xuất 'thử tìm kiếm trong phòng tắm.'
Bước 4: Kết hợp tất cả lại với nhau
Có một mô hình để ước tính vị trí cuối cùng của các phím, chúng tôi có thể thêm nó vào ứng dụng để cải thiện câu lệnh được trả về bởi Alexa. Chúng tôi đã sửa đổi tập lệnh để đọc:
import osfrom flask import Flask from flask_ask import Ask, statement import pexpect import pickle import pandas as pd import numpy as np from collection import defaultdict, Counter from reverse_read import reverse_readline app = Flask (_ name_) ask = Ask (app, '/') @ ask.intent ('findkeys') def accessvr (): os.system ("/ path / to / repo / sound_alarm.py &") speech_text = đoán_locate () câu lệnh trả về (speech_text) def đoán_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] = 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}). Giá trị mdl_ = pickle.load (open (' location_model_file.dat ',' rb ')) preds = mdl_.posystem (val) đoán = Bộ đếm (preds) đoán = đoán.most_common (1) [0] [0] reply_str = 'Thử nhìn vào' nếu đoán == 1: reply_str + = 'phòng ngủ' nếu đoán == 2: reply_str + = 'toilet' elif đoán == 3: reply_str + = 'kitchen' elif đoán == 4: reply_str + = 'living room' return reply_str if _name_ == "_main_": app.run (host = '127.0.0.1', cổng = '5000')
Chúng tôi đã tạo một hàm mới được gọi là hàm đoán_locate () để lấy một tệp có cường độ tín hiệu rssi mới nhất được ghi lại. Sau đó, nó sẽ chạy các mẫu dựa trên mô hình xgboost đã ngâm của chúng tôi và trả về chuỗi vị trí có khả năng xảy ra nhất. Vị trí này sẽ được trả lại khi Alexa được nhắc. Vì việc thiết lập kết nối với beacon có thể mất vài giây, chúng tôi chạy một quy trình riêng biệt gọi hàm đó trong sound_alarm.py.
Đề xuất:
Công tắc ánh sáng điều khiển bằng nháy mắt bằng kính đeo đầu tẩy của Shota Aizawa (Học viện anh hùng của tôi): 8 bước (có hình ảnh)
Công tắc ánh sáng được điều khiển bằng mắt-nháy bằng Kính bảo hộ đầu tẩy của Shota Aizawa (Học viện anh hùng của tôi): Nếu bạn đọc truyện tranh về học viện anh hùng của tôi hoặc xem anime về học viện anh hùng của tôi, bạn phải biết một người vẽ bùa tên là shota aizawa. Shota Aizawa còn được gọi là Thủ lĩnh tẩy, là một Anh hùng chuyên nghiệp và là giáo viên chủ nhiệm của Lớp 1-A của U.A. Shota's Quirk cho anh ta
Làm thế nào tôi đã giúp pin của Netbook của tôi!: 4 bước
Tôi đã giúp pin của Netbook của mình như thế nào!: Tôi vừa khám phá ra phần mềm tuyệt vời này từ dấu phải cho phép pin của tôi kéo dài hơn mỗi lần sạc và cũng để netbook chạy mát hơn rất nhiều. netbook dell model 3147
Tạo đồ thị của riêng tôi cho dữ liệu IOT của tôi trên Raspberry PI: 3 bước
Tạo đồ thị của riêng tôi cho dữ liệu IOT của tôi trên Raspberry PI: Vui lòng đọc tiếp nếu bạn muốn có thể tạo đồ thị IOT của riêng mình bằng cách sử dụng 7 dòng mã. Tôi muốn tạo biểu đồ để hiển thị dữ liệu ở định dạng đồ họa từ cảm biến IOT của mình trên một trang web. Trước đây, để làm điều này, tôi đã sử dụng các dịch vụ của bên thứ 3 (một số
Bàn phím của tôi Bàn tay của tôi: 8 bước (có hình ảnh)
Bàn phím của tôi Bàn tay của tôi: Tôi đã sử dụng máy cắt laser Epilog hoàn toàn mới mà gần đây Người hướng dẫn đã sử dụng để khắc laser hình ảnh bàn tay của tôi lên bàn phím máy tính xách tay của tôi … vĩnh viễn. Bây giờ điều đó làm mất hiệu lực bảo hành của bạn theo phong cách DIY! Tôi đã khắc laser nhiều máy tính xách tay hơn hầu hết các máy tính xách tay kể từ khi tôi giúp o
Làm chủ những điều kỳ diệu của Samuel B.F. Morse! (Có thể dạy đầu tiên của tôi): 3 bước
Làm chủ những điều kỳ diệu của Samuel B.F. Morse! (Hướng dẫn đầu tiên của tôi): Này các bạn, Hôm nay tôi sẽ hướng dẫn các bạn cách tạo một chiếc điện báo đơn giản với giá dưới 10 đô la. Đây là một khái niệm đơn giản cho một người bấm nút và một người bấm điện báo. Ý tưởng là sử dụng một chiếc kẹp quần áo để làm nút và một bộ pin với sự trợ giúp của một chiếc còi t