Taula de continguts:
- Pas 1: piratejar les balises Bluetooth
- Pas 2: crear una habilitat i una aplicació Alexa
- Pas 3: fer més intel·ligents les nostres habilitats
- Pas 4: ajuntar-ho tot
Vídeo: Alexa, on són les meves claus ?: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Alexa és especialment adequat per a tasques de recuperació d’informació i supervisió d’actius mitjançant xarxes domèstiques sense fils. És natural plantejar-se posar objectes de valor a la graella per a una recuperació ràpida. Pirategem balises Bluetooth de baix consum econòmiques per al rang de xarxa i la longevitat de la bateria i construïm una aplicació intel·ligent perquè Alexa sàpiga on hem deixat les tecles.
Com fer-ho…
Pas 1: piratejar les balises Bluetooth
Es pot comprar un conjunt de 3 balises per menys de 15 € i s’admeten amb les aplicacions Android / iOS, però optem per la privadesa. A més, trobar les nostres claus no s’hauria de convertir en el nostre telèfon.
Aquest tutorial d’adafruit sobre llums intel·ligents d’enginyeria inversa ens va ajudar a controlar les balises. Comenceu activant l'escaneig de balises de l'adreça del dispositiu executant:
sudo hcitool lescan
Cerqueu i copieu l'adreça etiquetada amb el nom "iTag" i, a continuació, executeu:
sudo gatttool -I
Connecteu-vos al dispositiu de manera interactiva executant:
connectar AA: BB: CC: DD: EE: FF
Proveu d'executar "ajuda" per veure les opcions o "principal" per veure els serveis:
Executant 'char-desc' seguit del controlador de servei tal com es mostra anteriorment, trobem UUID que busquem fent referència a les especificacions de característiques gatt i a les especificacions de servei. Per obtenir més informació sobre aquests serveis, consulteu això. Inspeccionant el trànsit amb Wireshark, trobem que 0100111000000001 activa l'alarma i, lògicament, 0000111000000001 la desactiva. Ara tenim la funció python simple:
import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Connexió satisfactòria', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')
A continuació, ens centrem a crear l'habilitat Alexa per activar la balisa quan busquem les claus.
Pas 2: crear una habilitat i una aplicació Alexa
Creem una habilitat que estarà enllaçada amb un servidor local. A continuació, configurem el nostre servidor perquè faci qualsevol acció que vulguem, en aquest cas, proporcionem una aproximació de la ubicació de les claus i fem sonar la balisa Bluetooth. Flask proporciona una biblioteca de python senzilla i fàcil d'utilitzar per servir una aplicació. Mitjançant flask-ask, podem configurar el servidor per comunicar-se amb la nostra habilitat Alexa que crearem més endavant. Ben serviu l'aplicació amb Ngrok, que ens proporcionarà un enllaç https que necessitarem per a la nostra habilitat d'Alexa. Primer hem creat l’aplicació amb la funcionalitat més senzilla: fer sonar la nostra balisa BLE quan s’activa.
#! / usr / bin / env pythonfrask 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 '#Your Bluetooth Balcon id here @ ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Les vostres claus són aquí en algun lloc." return statement (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Connection Successed', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') si _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Hem utilitzat la funció sound_alarm () que hem escrit anteriorment per fer sonar el BLE. Per a la funció que s'utilitzarà per a la intenció, afegim el decorador Ask amb la nostra intenció de "findkeys". Quan fem l’habilitat d’Alexa al tauler de desenvolupadors d’Amazon, utilitzarem aquest nom per a la nostra intenció. Escriviu aquest script en un fitxer anomenat app.py i executeu-lo
python app.py
Això servirà la vostra aplicació a https:// localhost: 5000. Executeu un servidor ngrok i copieu l’enllaç https generat. El necessitareu quan configureu l'habilitat d'Alexa. Per obtenir més informació, consulteu aquesta publicació. Hem configurat amb èxit una aplicació senzilla, ara escriurem l’habilitat d’Alexa. Aneu al tauler de desenvolupadors d'Amazon i inicieu la sessió. Feu clic a Alexa i comenceu a utilitzar el kit Alexa Skill
Seguiu les instruccions donades per la guia.
A la pestanya Model d’interacció voldreu omplir el quadre Esquema d’intencions amb el següent:
Al quadre Enunciats de mostra, voleu escriure algunes ordres de mostra que una persona pot utilitzar per invocar l'habilitat. Vam escriure aquestes:
findkeys find my keysfindkeys on my keys findkeys he perdut les claus
- A la pestanya Configuració, assegureu-vos de triar el punt final del servei a HTTPS. Copieu l'enllaç https i enganxeu-lo al quadre predeterminat que hi ha a sota. L’enllaç de comptes es pot deixar al núm.
- Al certificat SSL, seleccioneu l'opció central, "El meu punt final de desenvolupament és un subdomini d'un domini que té un certificat comodí d'una autoritat de certificació".
- La pestanya Prova us permetrà provar la nova habilitat escrivint una de les vostres ordres de mostra.
Acabeu d'emplenar les dues darreres pestanyes fins que totes les marques de selecció siguin verdes. A continuació, inicieu la vostra habilitat amb la funció Prova beta. Això us permet allotjar la vostra habilitat en qualsevol dispositiu de ressò abans de publicar-lo. Seguiu les instruccions de l’enllaç de correu electrònic per instal·lar l’habilitat al vostre dispositiu eco.
Pas 3: fer més intel·ligents les nostres habilitats
Posem els ordinadors inactius repartits per tota la casa per treballar en la consulta de la balisa bluetooth per informar de la intensitat del senyal RSSI.
Prenent lectures de diverses màquines, podem utilitzar la intensitat del senyal com a proxy de distància. Hem d’esbrinar com utilitzar-lo per calcular la part més probable de la casa per trobar el far.
Passem a l’aprenentatge automàtic. Un treball crontab cada 2 minuts crea un conjunt de dades de tuples RSSI. Col·locant la balisa en diferents llocs com: "Dormitori", "Bany", "Cuina", "Zona d'estar", etiquetem els registres RSSI. Un cop hàgim mapat la casa, podem utilitzar models basats en arbres com XGBClassifier de xgboost.
La implementació xgboost de l’augment de gradient gestionarà les dades que falten de les lectures esgotades, entrenant-se en un parell de segons. Utilitzeu l'escabetx python per persistir el model entrenat i carregar-lo a la nostra aplicació alexa retrievr. Quan es crida l’habilitat, l’aplicació busca la lectura de l’SSI Bluetooth i genera una ubicació prevista, Alexa pot respondre suggerint que “intenteu mirar al bany”.
Pas 4: ajuntar-ho tot
Tenint un model per aproximar-se a la darrera ubicació de les claus, podem afegir-lo a l’aplicació per millorar la declaració retornada per Alexa. Hem modificat l'script per llegir-lo:
import osfrom flask import Flask from flask_ask import Ask, statement import pexpect import pickle import pandas as pd import numpy as np from collections 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 () declaració de retorn (speech_text) def guess_locate (): read_dict = {} line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = mentre len (res_lst)! = 20: ln = next (line_gen) si 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}). Valors mdl_ = pickle.load (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) guess = Counter (preds) guess = guess.most_common (1) [0] [0] reply_str = 'Proveu de buscar el' if guess == 1: reply_str + = 'bedroom' elif guess == 2: reply_str + = 'bany' elif guess == 3: reply_str + = 'cuina' elif guess == 4: reply_str + = 'sala d'estar' retorna reply_str if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')
Vam crear una nova funció anomenada guess_locate () que pren un fitxer amb les últimes intensitats de senyal rssi enregistrades. A continuació, executarà les mostres contra el nostre model xgboost en escabetx i retornarà la cadena d'ubicació més probable. Aquesta ubicació es retornarà quan se li demani a Alexa. Com que establir una connexió a una balisa pot trigar uns quants segons, executem un procés separat anomenant aquesta funció a sound_alarm.py.
Recomanat:
Les meves instruccions de muntatge de pistola de rajos tallades amb làser: 10 passos
Les meves instruccions de muntatge de Ray-Gun tallades amb làser: amb disculpes per la demora, aquí teniu les meves instruccions que feia molt de temps que heu esperat sobre com muntar el Ray-Gun de punter làser. Podeu comprar els plans de dibuix vectorial per fer-los … En un CNC Laser-Cutter! Https: //cults3d.com/en/3d-model/gadget/ray-gun Així és com
FlowerCare i Nymea per rescatar les meves plantes: 5 passos
FlowerCare i Nymea per rescatar les meves plantes: embrutar-se les mans en connectar els sensors de cura de les plantes a la meva llar intel·ligent de codi obert existent. Una explicació detallada sobre el desenvolupament de connectors per a nymea
Creeu els meus propis gràfics per a les meves dades IOT en un Raspberry PI: 3 passos
Crea els meus propis gràfics per a les meves dades IOT en un Raspberry PI: llegiu si voleu poder crear els vostres propis gràfics IOT mitjançant 7 línies de codi. Volia crear gràfics per mostrar dades en format gràfic des dels meus sensors IOT en una pàgina web. Anteriorment, per a això, havia utilitzat serveis de tercers (alguns pa
Interruptor de claus (40 claus en 5 segons): 4 passos (amb imatges)
Clap Switch (40 Claps en 5 segons): Clap Switch té la capacitat d’encendre / apagar qualsevol component elèctric connectant la sortida del circuit a un commutador de relé. Aquí farem un interruptor de claus amb pocs components amb molt bones explicacions. En comparació amb tots els altres clap switch
El meu teclat Les meves mans: 8 passos (amb imatges)
My Keyboard My Hands: he utilitzat el nou tallador làser Epilog que Instructables ha aconseguit recentment gravar amb làser una imatge de les meves mans al teclat del meu portàtil … permanentment. Ara això anul·la la vostra garantia a l'estil de bricolatge. He gravat amb làser més portàtils que la majoria, ja que us ajudo