Tabla de contenido:

[15min] Reloj Weasley / Indicador de quién está en casa - Basado en TR-064 (beta): 4 pasos (con imágenes)
[15min] Reloj Weasley / Indicador de quién está en casa - Basado en TR-064 (beta): 4 pasos (con imágenes)
Anonim
Image
Image
[15min] Reloj Weasley / Indicador de quién está en casa - Basado en TR-064 (beta)
[15min] Reloj Weasley / Indicador de quién está en casa - Basado en TR-064 (beta)

ACTUALIZAR: Vea el paso 3.

Larga historia (TL; DR a continuación): Hace algún tiempo escribí un pequeño script bash en mi computadora que escaneaba la red en busca de dispositivos registrados y comparaba sus nombres de host con una lista con nombres asociados. Cada vez que un dispositivo entraba o salía de la red, recibía una notificación. De esta manera, tendría una idea de quién está en casa (no solo a veces es bueno saber quién está en casa para preguntarles si quieren unirse a una comida o algo así, sino que también puede ayudarlo a evitar situaciones incómodas). El problema es que este método no es muy confiable. Desafortunadamente, algunos dispositivos no responden a los pings (por ejemplo, los teléfonos inteligentes) y parecen entrar en algún modo de ahorro de energía, por lo que no se pueden detectar de manera confiable con comandos como nmap. Traté de superar esto requiriendo al menos 10 negativos antes de finalmente anunciar que el dispositivo abandonó la red. En general, funcionó, pero lentamente, de manera poco confiable y no muy bien. También quería poder comprobar quién está en casa, sin abrir mi computadora, así que tenía estos ESP8266 por ahí y quería jugar con ellos. Pero no quería construir la estación meteorológica basada en ESP 10.120.124.812th o algo así (¿por qué querrías monitorear el clima con tu termómetro de ± 2 ° C de mierda cuando puedes visitar algún sitio web de todos modos?). Entonces se hizo el plan. Desafortunadamente, resulta que el ESP parece no estar equipado para hacer ping correctamente (lo cual fue malo para empezar, ¿recuerdas?) Y mucho menos para hacer un escaneo completo de la red. Consideré escribir una biblioteca para eso, pero como mi C ++ es muy limitado, este es mi primer proyecto ESP y tampoco soy un genio con las cosas de la red, descarté esa idea. Después de investigar un poco, descubrí que mi router (marca Fritz! Box) en realidad tiene una API! ¡¡¡¡HURRA!!!! El protocolo se llama TR-064. Un nombre tan inspirador, ¿verdad? Investigando un poco sobre el tema, encontré una documentación (bastante cutre) en línea. Me tomó un tiempo resolverlo. Podría publicar un instructivo más práctico en los próximos días (y cómo comunicarme / probar esta API usando un complemento de navegador). Una vez que entendí la API, comencé a usarla desde mi ESP. En pocas palabras: obtuve una solución duck-tape-and-wd40 ejecutándose y haciendo lo que quería (consultar la API para dispositivos conectados, compararlos con una lista de direcciones MAC y cambiar los LED en consecuencia). Pero quería una solución más robusta y una solución flexible y esta API tiene mucho más que ofrecer (puede cambiar la configuración (encender / apagar el wifi, cambiar la contraseña, abrir / cerrar el wifi del invitado, cambiar la potencia de la señal), reiniciar el enrutador, consultar la velocidad de conexión, …) - así que decidí crear una biblioteca universal TR-064! TL; DR; Dispositivo que indica a través de LED quién se encuentra actualmente en casa. Funciona muy bien, todavía no tiene una gran carcasa (oye, ¿has notado la versión beta en el título?). Utiliza el protocolo SOAP para comunicarse con el enrutador. Escribí la biblioteca de Arduino para que eso suceda. Conocimientos requeridos • Conocimientos básicos de Arduino / ESP • Si ensamblaste un ejemplo de Blink con tu ESP, ¡estarás bien! • Si no, puedes seguir los dos primeros pasos de este instructivo • Soldar podría resulta útil, si desea abandonar el escenario de la placa de pruebas • Algunos diseños en 3D y / o carpintería pueden ser útiles para un enlace del proyecto de vivienda Github [https://github.com/Aypac/Arduino-TR-064-SOAP-Library] para referencia rápida.

Suministros

  • ESP8266 o ESP32 en la placa de desarrollo o con otro programador (2 ~ 6 €)
  • Cable USB apropiado para el programador
  • Adaptador de corriente (por ejemplo, USB o batería ~ 2 €)
  • Algunos LED y resistencias (~ 1 €)
  • (Caja)

=> Alrededor de 4-6 € por un diseño minimalista. Eso significa para mí, que puedo colgar algunos en la casa fácilmente. Si es vago, también puede utilizar una placa de desarrollo con LED incluidos (consulte el paso 4 para obtener más detalles).

Paso 1: Configure su enrutador (opcional, pero recomendado)

Configure su enrutador (opcional, pero recomendado)
Configure su enrutador (opcional, pero recomendado)
Configure su enrutador (opcional, pero recomendado)
Configure su enrutador (opcional, pero recomendado)

El protocolo fue diseñado como un protocolo general para enrutadores, pero solo sé que (la mayoría) de los enrutadores Fritz! Box (muy comunes al menos en Europa) lo usan. No conozco otras marcas. Así que asumiré que estás usando un Fritz! Box. Si puede hacer que esto funcione (o no hacerlo) en cualquier otro enrutador, me complacerá agregarlo a este instructivo (¿tal vez incluso comenzar una breve lista de compatibilidad?).

Este paso no es necesario, también podría usar su cuenta de administrador, pero eso no es aconsejable por razones obvias (podría ser interceptado o extraído de su ESP, podría cambiar accidentalmente cosas que no desea,…) - así que aconsejarle que lo haga.

De todos modos, aquí vamos:

  1. Inicie sesión en su Fritz! Box escribiendo fritz.box en la barra de direcciones de su navegador favorito.
  2. Busque la página para crear un nuevo usuario de FRITZ! Box (debe haber avanzado, debería estar en Sistema, si no puede encontrarlo, intente actualizar su dispositivo).
  3. Cree una nueva cuenta como ve en la imagen (¡usando un nombre de usuario / contraseña diferente!).
  4. Cerrar sesión.

Paso 2: Código

Image
Image
Hardware (beta)
Hardware (beta)
  1. Puede obtener la biblioteca de Github.

  2. En los ejemplos, encontrará un archivo llamado home-indicator.ino, que es el código para este proyecto. Coloque la carpeta de ejemplos en la carpeta de inicio del proyecto arduino IDE y la otra carpeta en la carpeta de bibliotecas en la misma carpeta de inicio del proyecto.
  3. (Re) Inicie su IDE.
  4. Abra home-indicator.ino en el IDE e ingrese su configuración. Debería ser bastante obvio qué va a dónde. ¡Si tiene alguna pregunta, hágamelo saber!
  5. ¡Ahora puede compilarlo y transferirlo a su ESP!

Paso 3: hardware (beta)

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

Sí … Este es el paso, en el que todavía necesito trabajar un poco más. Pero supongo que hay suficiente material en la web para descubrir algo:) La configuración como en las imágenes es solo un diodo con una resistencia de ~ 100Ohm conectada al GPIO {5, 4, 0, 2}, que es el D1, D2, D3, D4 (en ese orden) pines de mi placa MCU ESP8266 y el pequeño cable naranja que lleva los cátodos a GND (marcado G en mi placa). Si eres vago, puedes hacer lo que ves en la segunda imagen. Simplemente use una placa de desarrollo con LED incluidos (como el "ESP-202", vea las imágenes - alrededor de 3,50-5,00 € incluido el envío). Luego, puede conectarlo a la alimentación USB o usar la batería incluida, dibujar una interfaz en una hoja de papel y pegarla a la pared. Listo Para esta placa específica, los puertos son:

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

de arriba a abajo.

Paso 4: Outlook / Referencias

Esto es lo que todavía planeo: 1. Hacer una buena carcasa (obviamente) 2. Agregar una buena GUI para administrar usuarios / LED / MAC / dispositivos conocidos 3. Mejorar la biblioteca (ver Github para eso) 4. Solución: a veces los LED reaccionar con lentitud (toma un poco hasta que se apaguen, después de que un dispositivo se fue) sin ninguna razón obvia 5. Conecte la cosa en el pasillo y tal vez algunos más en la casa. ¡Me encantaría recibir información de ustedes! Y como siempre, me hace muy feliz ver a otros construir la mierda que pensaste, ¡así que tómate un minuto para comentar y publicar fotos!:):) Algunas referencias más. Voy a vincular algunas cosas aquí, que pueden ayudarlo: • Referencia de TR-064 • Un tipo jugando con el caparazón y TR-064 (bueno para comprender la API) • Wikipedia de Harry Potter: Entrada de Weasley Clock • Algunos chicos están construyendo un hermoso pero complicado Weasly Clock * _ * Se basa en una aplicación para tu teléfono que toma tu ubicación. Si se encuentra en ciertas áreas predefinidas, la luz correspondiente en el reloj se encenderá. Para mí, eso era demasiado complicado y tenía muchos lugares donde podría romperse / fallar: • Las aplicaciones deben mantenerse actualizadas • Todos deben usar estas aplicaciones • Y estar de acuerdo con el impacto en la privacidad • La aplicación solo funciona con Internet conexión • Tienes que usar un servidor intermedio para interconectar la comunicación (a menos que quieras configurar tu esp como servidor y abrir tu red doméstica para tráfico externo - sí, ¡otro dispositivo IOT inseguro conectado directamente a Internet!) • El el servicio intermedio podría desconectarse algún día / cambiar su API, •… Necesita más software. Más software significa más lugares para cometer un error;) Pero, hicieron un trabajo increíble y si quieres hacer algo así, dirígete a su sitio, ¡es realmente genial!

Recomendado: