Sommario:

[15min] Orologio Weasley/Indicatore chi è a casa - Basato su TR-064 (beta): 4 passaggi (con immagini)
[15min] Orologio Weasley/Indicatore chi è a casa - Basato su TR-064 (beta): 4 passaggi (con immagini)

Video: [15min] Orologio Weasley/Indicatore chi è a casa - Basato su TR-064 (beta): 4 passaggi (con immagini)

Video: [15min] Orologio Weasley/Indicatore chi è a casa - Basato su TR-064 (beta): 4 passaggi (con immagini)
Video: Дэниел Крафт: Будущее медицины? Для него существуют приложения 2024, Dicembre
Anonim
Image
Image
[15min] Orologio Weasley/Indicatore chi è a casa - Basato su TR-064 (beta)
[15min] Orologio Weasley/Indicatore chi è a casa - Basato su TR-064 (beta)

AGGIORNAMENTO: vedere il passaggio 3.

Lunga storia (TL; DR di seguito): qualche tempo fa ho scritto un piccolo script bash sul mio computer che scansionava la rete alla ricerca di dispositivi registrati e confrontava i loro nomi host con un elenco con nomi associati. Ogni volta che un dispositivo si connetteva o si disconnetteva dalla rete, ricevevo una notifica. In questo modo avrei un'idea di chi è a casa (non solo a volte è bello sapere chi è a casa per chiedere loro se vogliono unirsi a un pasto o qualcosa del genere, ma può anche potenzialmente aiutarti a evitare situazioni imbarazzanti). Il problema è che questo metodo non è molto affidabile. Sfortunatamente alcuni dispositivi non rispondono ai ping (ad esempio gli smartphone) e sembrano entrare in modalità di risparmio energetico, quindi non sono rilevabili in modo affidabile con comandi come nmap. Ho cercato di superare questo problema richiedendo almeno 10 negativi prima di annunciare finalmente che il dispositivo ha lasciato la rete. Tutto sommato ha funzionato, ma lentamente, in modo inaffidabile e non molto bene. Inoltre volevo essere in grado di controllare chi è a casa, senza aprire il mio computer. Quindi avevo questi ESP8266 in giro e volevo giocare con loro. Ma non volevo costruire la 10.120.124.812 stazione meteorologica basata su ESP o simili (perché dovresti voler monitorare il tempo con il tuo schifoso termometro ±2 ° C quando puoi comunque visitare un sito Web?). Quindi il piano è stato fatto. Sfortunatamente si scopre che l'ESP sembra non essere equipaggiato per eseguire correttamente il ping (il che era male all'inizio, ricordi?) Per non parlare di una scansione di rete in piena regola. Ho preso in considerazione la possibilità di scrivere una libreria per quello - ma dal momento che il mio C++ è molto limitato, questo è il mio primo progetto ESP e non sono un genio con le cose di rete, ho scartato quell'idea. Dopo aver fatto qualche ricerca, ho scoperto che il mio router (marchio Fritz!Box) ha effettivamente un'API! SÌÌ!!!! Il protocollo si chiama TR-064. Un nome così stimolante, giusto? Facendo qualche ricerca sulla questione, ho trovato una documentazione (piuttosto scadente) online. Mi ci è voluto un po' di tempo per risolverlo. Potrei pubblicare un tutorial più pratico nei prossimi giorni (e come comunicare/testare questa API utilizzando un componente aggiuntivo del browser). Una volta compresa l'API, ho iniziato a utilizzarla dal mio ESP. Per farla breve: ho ottenuto una soluzione duck-tape-and-wd40 in esecuzione e facendo ciò che volevo (richiedere l'API per i dispositivi connessi, confrontarli con un elenco di indirizzi MAC e commutare i LED di conseguenza). Ma volevo un più robusto e una soluzione flessibile e questa API ha molto altro da offrire (puoi modificare le impostazioni (accendere/spegnere il wifi, cambiare password, aprire/chiudere il wifi ospite, cambiare la potenza del segnale), riavviare il router, interrogare la velocità di connessione, …) - quindi ho deciso di creare una libreria universale TR-064!TL;DR;Dispositivo che indichi tramite led chi è attualmente in casa. Funziona alla grande, non ha ancora un ottimo alloggiamento (ehi - hai notato la beta nel titolo?). Utilizza il protocollo SOAP per comunicare con il router. Ho scritto la libreria Arduino per farlo accadere. Conoscenze richieste • Conoscenze di base Arduino/ESP • Se hai assemblato un esempio Blink con il tuo ESP, starai bene! • In caso contrario, puoi seguire i primi due passaggi di questa istruzione • La saldatura potrebbe torna utile, se vuoi lasciare la fase breadboard• Un po' di progettazione 3D e/o lavorazione del legno potrebbe tornare utile per un collegamento al progetto Housing Github [https://github.com/Aypac/Arduino-TR-064-SOAP-Library] per una rapida consultazione.

Forniture

  • ESP8266 o ESP32 su Development-Board o con altro programmatore (2~6€)
  • Cavo USB adatto al programmatore
  • Adattatore di alimentazione (es. USB o batteria ~2€)
  • Alcuni LED e resistori (~1€)
  • (involucro)

=> Circa 4-6€ per un design minimale. Ciò significa per me che posso facilmente appenderne qualcuno in casa. Se sei pigro, puoi anche utilizzare una scheda di sviluppo con LED inclusi (vedi il passaggio 4 per maggiori dettagli).

Passaggio 1: configura il router (opzionale, ma consigliato)

Configura il tuo router (opzionale, ma consigliato)
Configura il tuo router (opzionale, ma consigliato)
Configura il tuo router (opzionale, ma consigliato)
Configura il tuo router (opzionale, ma consigliato)

Il protocollo è stato progettato come protocollo generale per i router, ma so solo che (la maggior parte) dei router Fritz!Box (molto comuni almeno in Europa) lo usano. Non so di altre marche. Quindi presumo che tu stia usando un Fritz!Box. Se riesci a farlo funzionare (o non riesci a farlo) su qualsiasi altro router, sarei felice di aggiungerlo a questo istruibile (forse anche iniziare un breve elenco di compatibilità?).

Questo passaggio non è necessario, potresti anche usare solo il tuo account amministratore, ma non è consigliabile per ovvi motivi (potrebbe essere intercettato o estratto dal tuo ESP, potresti accidentalmente cambiare cose che non vuoi, …) - quindi io consigliarti di farlo.

Comunque, eccoci qui:

  1. Accedi al tuo Fritz!Box digitando fritz.box nella barra degli indirizzi del tuo browser preferito.
  2. Trova la pagina per creare un nuovo utente FRITZ!Box (devi avere avanzato dovrebbe essere sotto Sistema, se non lo trovi prova ad aggiornare il tuo dispositivo).
  3. Crea un nuovo account come vedi nell'immagine (usando un nome utente/password diverso!).
  4. Disconnettersi.

Passaggio 2: codice

Image
Image
Hardware (beta)
Hardware (beta)
  1. Puoi ottenere la libreria da Github.

  2. Negli esempi troverai un file chiamato home-indicator.ino, che è il codice per questo progetto. Posiziona la cartella degli esempi nella cartella principale del tuo progetto IDE arduino e l'altra cartella nella cartella delle librerie nella stessa cartella principale del progetto.
  3. (Ri)Avvia il tuo IDE.
  4. Apri home-indicator.ino nell'IDE e inserisci le tue impostazioni. Dovrebbe essere abbastanza ovvio cosa va dove. Se avete domande fatemi sapere!
  5. Ora puoi compilarlo e trasferirlo sul tuo ESP!

Passaggio 3: hardware (beta)

Hardware (beta)
Hardware (beta)
Hardware (beta)
Hardware (beta)
Hardware (beta)
Hardware (beta)

Sì… Questo è il passaggio, in cui ho ancora bisogno di lavorare un po' di più. Ma immagino che ci sia abbastanza materiale nel web per capire qualcosa:) La configurazione come nelle immagini è solo un diodo con un resistore da ~100 Ohm collegato al GPIO {5, 4, 0, 2}, che sono i D1, D2, D3, D4 (in quest'ordine) della mia scheda MCU ESP8266 e il piccolo cavo arancione che porta i catodi a GND (contrassegnato con G sulla mia scheda). Se sei pigro, puoi fare quello che vedi nella seconda immagine. Basta usare una scheda di sviluppo con LED inclusi (come "ESP-202", vedi foto - circa 3,50-5,00 € inclusa la spedizione). Puoi quindi semplicemente collegarlo all'alimentazione USB o utilizzare la batteria inclusa, disegnare un'interfaccia su un pezzo di carta e attaccarla al muro. Fatto. Per questa scheda specifica le porte sono:

int userPins[numUser] = {5, 4, 2, 14, 16};

da cima a fondo.

Passaggio 4: Outlook/Riferimenti

Questo è quello che ho ancora in programma: 1. Realizzare un bel contenitore (ovviamente) 2. Aggiungere una bella GUI per la gestione di utenti/LED/MAC/dispositivi conosciuti 3. Migliorare la libreria (vedi Github per questo) 4. Correzione: a volte i LED reagisci pigramente (ci vuole un po' prima che si spengano, dopo che un dispositivo è rimasto) senza una ragione ovvia 5. Aggancia la cosa nel corridoio e forse qualche altro in giro per casa Mi piacerebbe avere qualche input da voi ragazzi! E come sempre, mi rende davvero felice vedere gli altri costruire cose che hai escogitato, quindi per favore prenditi un minuto per commentare e postare foto!:):)Alcuni altri riferimentiCollegherò alcune cose qui, che potrebbero aiutarti: • Riferimento TR-064 • Qualche ragazzo che fa casino con la shell e TR-064 (buono per avere un'idea dell'API) • Harry Potter Wikipedia: Ingresso dell'orologio Weasley • Alcuni ragazzi stanno costruendo un bellissimo, ma complicato orologio Weasley*_*Si basa su un'app per il tuo telefono che sta rilevando la tua posizione. Se ci si trova in determinate aree predefinite, si accenderà la relativa spia sull'orologio. Per me era troppo complicato e si trovava in molti punti in cui poteva rompersi/guastarsi: • Le app devono essere mantenute aggiornate • Tutti devono usare queste app • E stare bene con l'impatto sulla privacy • L'app funziona solo con Internet connessione • Devi utilizzare un server intermedio per interfacciare la comunicazione (a meno che tu non voglia configurare esp come server e aprire la tua rete domestica per il traffico esterno - sì, un altro dispositivo IOT non sicuro connesso direttamente a Internet!) • Il il servizio intermedio potrebbe andare offline un giorno/cambiare la sua API, • …Hai bisogno di più software. Più software significa più posti dove fare un errore;) Ma hanno fatto un lavoro fantastico e se vuoi fare qualcosa del genere, vai sul loro sito, è davvero fantastico!

Consigliato: