Spisu treści:
- Krok 1: Hakowanie sygnałów nawigacyjnych Bluetooth
- Krok 2: Tworzenie umiejętności i aplikacji Alexa
- Krok 3: Zwiększanie inteligencji naszych umiejętności
- Krok 4: Złożenie wszystkiego razem
Wideo: Alexa, gdzie są moje klucze?: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Alexa jest szczególnie dobrze przystosowana do zadań związanych z wyszukiwaniem informacji i monitorowaniem zasobów za pomocą bezprzewodowych sieci domowych. Naturalne jest rozważenie umieszczenia kosztowności na siatce w celu szybkiego odzyskania. Hakujemy tanie niskoenergetyczne beacony bluetooth dla zasięgu sieci i żywotności baterii oraz budujemy inteligentną aplikację, aby Alexa wiedziała, gdzie zostawiliśmy klucze.
Jak to zrobić…
Krok 1: Hakowanie sygnałów nawigacyjnych Bluetooth
Zestaw 3 beaconów można kupić za mniej niż 15 USD i są one obsługiwane przez aplikacje na Androida/iOS, ale zrezygnujemy z prywatności. Poza tym odnalezienie naszych kluczy nie powinno zamienić się w odnalezienie naszego telefonu.
Ten samouczek adafruit dotyczący inteligentnych świateł inżynierii odwrotnej pomógł nam kontrolować sygnały nawigacyjne. Zacznij od włączenia skanowania beaconów dla adresu urządzenia, uruchamiając:
sudo hcitool lescan
Znajdź i skopiuj adres oznaczony nazwą „iTag”, a następnie uruchom:
sudo gatttool -I
Połącz się z urządzeniem interaktywnie, uruchamiając:
połącz AA:BB:CC:DD:EE:FF
Spróbuj uruchomić „pomoc”, aby wyświetlić opcje lub „podstawową”, aby wyświetlić usługi:
Uruchamiając „char-desc”, a następnie uchwyt usługi, jak powyżej, znajdujemy identyfikatory UUID, które sprawdzamy, odwołując się do specyfikacji charakterystyki gatt i specyfikacji usług. Aby uzyskać więcej informacji na temat tych usług, sprawdź to. Sprawdzając ruch za pomocą Wireshark, stwierdzamy, że 0100111000000001 wyzwala alarm i logicznie 0000111000000001 go wyłącza. Teraz mamy prostą funkcję Pythona:
import pexpectdef sound_alarm(BD_ADDR): child = pexpect.spawn('gatttool -I') child.sendline('connect {}'.format(BD_ADDR)) child.expect('Połączenie powiodło się', timeout=30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
Następnie skupiamy się na stworzeniu umiejętności Alexa, która uruchamia beacon, gdy szukamy kluczy.
Krok 2: Tworzenie umiejętności i aplikacji Alexa
Tworzymy umiejętność, która będzie połączona z lokalnym serwerem. Następnie konfigurujemy nasz serwer tak, aby podejmował dowolną akcję, w tym przypadku przybliżoną lokalizację kluczy i wydanie sygnału dźwiękowego beaconu Bluetooth. Flask zapewnia prostą i łatwą w użyciu bibliotekę Pythona do obsługi aplikacji. Używając flask-ask, możemy skonfigurować serwer tak, aby komunikował się z naszą umiejętnością Alexa, którą zbudujemy później. Dobrze obsłuż aplikację za pomocą Ngrok, który da nam link https, którego będziemy potrzebować do naszej umiejętności Alexa. Najpierw zbudowaliśmy aplikację z najprostszą funkcjonalnością: aby nasz beacon BLE wydawał sygnał dźwiękowy po uruchomieniu.
#!/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 ' #Twój identyfikator beacon bluetooth @ask.intent('findkeys') def retrievr(): sound_alarm() speech_text = "Twoje klucze są gdzieś tutaj." return statement(speech_text) def sound_alarm(): child = pexpect.spawn('gatttool -I') child.sendline('connect {}'.format(BD_ADDR)) child.expect('Połączenie powiodło się', timeout=60) child.sendline('char-write-cmd 0x000b 0100111000000001') if _name_ == "_main_": app.run(host='127.0.0.1', port='5000')
Użyliśmy funkcji sound_alarm(), którą napisaliśmy wcześniej, aby wywołać sygnał dźwiękowy BLE. Dla funkcji, która będzie używana do intencji, dodajemy dekoratora ask z naszymi intencjami "findkeys". Kiedy stworzymy umiejętność Alexa na pulpicie programisty Amazon, użyjemy tej nazwy dla naszych intencji. Napisz ten skrypt do pliku o nazwie app.py i uruchom
python aplikacja.py
To będzie obsługiwać twoją aplikację na https://localhost:5000. Uruchom serwer ngrok i skopiuj wygenerowany link https. Będziesz go potrzebować, gdy skonfigurujesz umiejętność Alexa. Więcej szczegółów znajdziesz w tym poście. Pomyślnie skonfigurowaliśmy prostą aplikację, teraz napiszemy umiejętność Alexa. Przejdź do pulpitu programisty Amazon i zaloguj się. Kliknij Alexa i zacznij korzystać z zestawu Alexa Skill
Postępuj zgodnie z instrukcjami podanymi przez gui.
Na karcie Interation Model będziesz chciał wypełnić pole Intent Schema następującymi elementami:
{ "intents": [{ "intent": "findkeys" }, { "intent": "AMAZON. HelpIntent" }, { "intent": "AMAZON. StopIntent" }, { "intent": "AMAZON. CancelIntent" }] }
-
W polu Przykładowe wypowiedzi chcesz napisać kilka przykładowych poleceń, których osoba może użyć do wywołania umiejętności. Napisaliśmy te:
findkeys znajdź moje klucze znajdź klucze gdzie moje klucze findkeys Zgubiłem klucze
- Na karcie Konfiguracja wybierz punkt końcowy usługi na HTTPS. Skopiuj link https i wklej go w polu Domyślne poniżej. Łączenie kont można pozostawić na Nie.
- W certyfikacie SSL wybierz środkową opcję „Mój punkt końcowy rozwoju jest subdomeną domeny, która ma certyfikat wieloznaczny z urzędu certyfikacji”.
- Zakładka Test pozwoli Ci przetestować nową umiejętność, wpisując jedno z przykładowych poleceń.
Zakończ wypełnianie dwóch ostatnich zakładek, aż wszystkie znaczniki wyboru będą zielone. Następnie uruchom swoje umiejętności dzięki funkcji beta testów. Dzięki temu możesz przechowywać swoje umiejętności na dowolnym urządzeniu echo przed ich opublikowaniem. Postępuj zgodnie z instrukcjami podanymi w e-mailu, aby zainstalować umiejętność na urządzeniu echo.
Krok 3: Zwiększanie inteligencji naszych umiejętności
Umieściliśmy bezczynne komputery rozsiane po całym domu w celu odpytywania sygnału nawigacyjnego Bluetooth w celu zgłoszenia siły sygnału RSSI.
Pobierając odczyty z wielu maszyn, możemy wykorzystać siłę sygnału jako proxy dla odległości. Musimy dowiedzieć się, jak tego użyć, aby obliczyć najbardziej prawdopodobną część domu, aby znaleźć latarnię.
Zwracamy się do uczenia maszynowego. Zadanie crontab co 2 minuty, buduje zestaw danych krotek RSSI. Umieszczając beacon w różnych miejscach, takich jak: „Sypialnia”, „Łazienka”, „Kuchnia”, „Obszar dzienny” oznaczamy dzienniki RSSI. Po zmapowaniu domu możemy użyć modeli opartych na drzewie, takich jak XGBClassifier firmy xgboost.
Implementacja zwiększania gradientu w xgboost poradzi sobie z brakiem danych z odczytów, których przekroczono limit czasu, trenując w ciągu kilku sekund. Użyj pickle Pythona, aby utrwalić wytrenowany model i załadować do naszej aplikacji alexa retrievr. Po wywołaniu umiejętności aplikacja sprawdza odczyt RSSI bluetooth i generuje przewidywaną lokalizację, alexa może odpowiedzieć, proponując „spróbuj zajrzeć do łazienki”.
Krok 4: Złożenie wszystkiego razem
Mając model przybliżający ostatnią lokalizację kluczy, możemy dodać go do aplikacji, aby poprawić zestawienie zwracane przez Alexę. Zmodyfikowaliśmy skrypt, aby czytał:
import osfrom flask import Flask from flask_ask import Ask, statement import pexpect import pickle import pandy as pd import numpy as np z kolekcji import defaultdict, Counter from reverse_read import reverse_readline app=Flask(_name_) ask = Ask(app, '/') @ ask.intent('findkeys') def retrievr(): os.system("/ścieżka/do/repo/sound_alarm.py &") speech_text = przypuszczaj_lokalizuj() return instrukcja(mowa_tekst) def odgadnij_lokalizuj(): read_dict = {} line_gen = reverse_readline('TWOJE_PLIK_DANE.txt') res_lst = while len(res_lst) != 20: ln = next(line_gen) if ln.startswith('Host'): _, ip, _, reading = ln.split () read_dict[ip] = czytanie 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}).values mdl_ = pickle.load(open('location_model_file.dat', 'rb')) preds = mdl_.predict(val) zgadnij = Counter(preds) zgadnij = zgadnij.most_common(1)[0][0] reply_str = 'Spróbuj zajrzeć do ' jeśli zgadnij == 1: reply_str += 'sypialnia' elif odgadnąć == 2: reply_str += 'łazienka' elif odgadnij == 3: odpowiedz_str += 'kuchnia' elif odgadnij == 4: odpowiedz_str += 'salon' return reply_str if _name_ == "_main_": app.run(host ='127.0.0.1', port='5000')
Stworzyliśmy nową funkcję o nazwie odgadnij_lokalizację(), która pobiera plik z najnowszymi zarejestrowanymi siłami sygnału rssi. Następnie przeanalizuje próbki względem naszego marynowanego modelu xgboost i zwróci najbardziej prawdopodobny ciąg lokalizacji. Ta lokalizacja zostanie zwrócona, gdy pojawi się monit Alexa. Ponieważ nawiązanie połączenia z beaconem może zająć kilka sekund, uruchamiamy osobny proces wywołujący tę funkcję w sound_alarm.py.
Zalecana:
KRÓLIK KRÓLIK GDZIE JESTEŚ?: 3 kroki
KRÓLIK KRÓLIK GDZIE JESTEŚ?: Jestem z Tajwanu i mam 13 lat, nazywam się Chia-Ying Wu. Nasza rodzina ma królika, który często bawi się z nami w chowanego. Lubi chować się w kącie obok sofy, ale ponieważ widok zasłania kanapa, często nie możemy go znaleźć. S
Fred! Gdzie jesteś?: 3 kroki
Fred! Gdzie jesteś?: Ten projekt dotyczy tego, ile kilometrów jesteś od swojego domu. Fred jest zasilany baterią, którą można ładować jak smartfon, dzięki czemu można ją zabrać ze sobą. Jest to bardzo łatwe do zbudowania, ale możesz utknąć na kodowaniu.W tym projekcie nie
Sterowany głosem inteligentny uchwyt na klucze: 3 kroki (ze zdjęciami)
Sterowany głosem inteligentny uchwyt na klucze: Czy jesteś osobą, która nie radzi sobie dobrze z zarządzaniem kluczami i zawsze musisz wypróbować każdy klucz dla każdego innego zamka? Nie martw się, po prostu chwyć trochę motywacji i narzędzia do tworzenia, aby wprowadzić innowacje własny inteligentny uchwyt na klucze sterowany głosem
Zmodyfikuj system Windows, aby pokazać, gdzie zostało zrobione zdjęcie: 4 kroki
Zmodyfikuj system Windows, aby pokazać, gdzie zostało zrobione zdjęcie: WprowadzenieCzy kiedykolwiek przeglądałeś zdjęcia z podróży i zastanawiałeś się, gdzie je zrobiłeś? Jak nazywało się to małe miasteczko, w którym zatrzymałeś się pięć lat temu, w którym wypiłeś najbardziej niesamowitą kawę? Po zmodyfikowaniu Wind
Potajemnie obserwuj, co się dzieje, bez względu na to, gdzie jesteś.: 4 kroki
Potajemnie obserwuj, co się dzieje, bez względu na to, gdzie jesteś. Ta instrukcja pokaże Ci, jak korzystać z aplikacji „iCam” na iPhona/ipoda touch i komputera, aby zobaczyć, co się dzieje za pomocą kamery internetowej, gdziekolwiek jesteś. To moja pierwsza instrukcja, więc proszę, bez ostrej krytyki. Nie mam nic przeciwko żad