Entrada de puerta de salida ESP8266 MQTT

¿Vive en un área donde usted (o su automóvil) está bloqueado por una puerta? Si es así, puede saber cómo [Alexander Else] se siente como admitir a sus invitados constantemente con un control remoto, pero no es apropiado. [Alexander] podría comprar algunos controles remotos adicionales y emitirlos, pero no son exactamente tan baratos como los obsequios festivos. Sin mencionar que, de todos modos, no tendría sentido distribuir uno a cada visitante. Debido a que la puerta es una puerta comunitaria, piratear el sistema de la puerta real no era una opción. Solo había una cosa que podía hacer: ¡piratear el control remoto!

Como casi todos los demás hackers, [Alexander] tenía una placa ESP8266 de repuesto por ahí. [Alexander] También tenía varios relés de repuesto, que usaba para controlar los dos botones del control remoto de "sacrificio" que eligió: un relé por botón. Después de ensamblar estas piezas junto con algunas piezas electrónicas de soporte, se terminó el hardware. Ahora [Alexander] simplemente puede establecer abreviaturas de solicitud HTTP en el teléfono inteligente de cada visitante de confianza. ¡Desde allí pueden abrir / cerrar las puertas ellos mismos!

Originalmente, usó IFTTT para desencadenar la cadena de eventos que celebran todo, pero hubo un retraso de aproximadamente 8 segundos (desde el gatillo hasta el relé). [Alexander] no tenía esto, por lo que recurrió al programa HTTP Request Shortcuts. Cuando hizo este cambio, la demora se había ido.

Eso es bastante impresionante considerando la cantidad casi vertiginosa de componentes de software involucrados en este proyecto. Por supuesto, existe el firmware en la placa NodeMCU, y hay todo lo demás: CloudMQTT, Python, Flask, AWS Lambda, Zappa, abreviaturas de solicitud HTTP. Si desea ver cómo se conecta todo esto para ejecutar su sistema, consulte su página de GitHub para este proyecto.

Parece que aún no ha terminado. [Alexander] actualizó este proyecto con algunas mejoras que puso en una página separada de La-Tecnologia.io que tendremos que ver. Solo tenemos una sugerencia para este proyecto: podría necesitar algo de seguridad. [Alexander] lo hace Mencione agregar algo de autenticación / seguridad más adelante, por lo que nos hace un poco mejores.

Sorprendentemente, hay pocos trucos para puertas eléctricas, así que si tienes uno, ¡envíalo! ¿Necesitas inspiración? Esta puerta fue creada por piratas informáticos, mientras que esta fue pirateada.

  • ESTOLA dice:

    No sé por qué la gente elige arreglos de programación tan complejos.

    Esta es una solicitud GET enviada a través de una pila TCP / IP

    GET /blog/ HTTP/1.1rn
    Host: la-tecnologia.comrn
    rn

    Si no tiene DNS, utilice la dirección IP

    GET /blog/ HTTP/1.1rn
    Host: 192.0.79.33rn
    rn

    Enviar datos

    GET /blog/?temp=27C&humid=55 HTTP/1.1rn
    Host: 192.0.79.33rn
    rn

    Una respuesta típica es la siguiente:

    HTTP/1.1 200 OKrn
    Server: nginxrn
    Date: Mon, 05 Jun 2017 06:54:32 GMTrn
    Content-Type: text/html; charset=UTF-8rn
    Transfer-Encoding: chunkedrn
    Connection: keep-alivern
    Vary: Accept-Encodingrn
    X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.rn
    Content-Encoding: gziprn
    X-ac: 4.sin _burrn
    rn

    Estos son solo los encabezados y cualquier "contenido" se entrega después del doble r n ( r n r n)

    Si el servidor de destino tiene una IP compartida, debe enviar el nombre de host y la IP.

    • Bill Sussman dice:

      De acuerdo, incluso en los productos comerciales de hoy en día, los desarrolladores son demasiado complicados hasta el punto de que todo se basa en un castillo de naipes deshonesto.

      Probablemente porque muchos de ellos son idiotas que quieren usar cualquier software que esté pasado de moda en lugar de intentar diseñar algo que funcione.

      • Mike Rogers dice:

        Este es el por qué:
        https://media.giphy.com/media/kwEmwFUWO5Ety/giphy.gif

        • 13 de julio dice:

          Esa es una metáfora tan perfecta. Describe el problema mucho mejor que yo con palabras.

      • ESTOLA dice:

        Cree que se debe a que los desarrolladores modernos se han vuelto tan eficientes acostumbrado a descargar y parchear bibliotecas juntas que olvidan que pueden escribir código ellos mismos.

        • 13 de julio dice:

          Creo que gran parte de esto se debe a que los gerentes son más propensos a recompensar a las personas que sugieren cualquier programa de ponderación de tendencias.

          Saben que pueden llevarlo a un grupo de personas que lo buscarán en Google, verán todas las palabras y te impresionarán.

    • aelse dice:

      > No sé por qué la gente elige arreglos de programación tan complejos.

      Yo soy el creador del proyecto. El problema que resolví es "¿Cómo puedo activar algo en el controlador a través de Internet?". No está en la red wifi fuera del garaje, por lo que debe haber una forma de comunicarse con el controlador por teléfono con el servicio de datos.

      Una forma sería exponer el controlador abriendo un puerto en mi enrutador para permitir el tráfico de Internet en mi red. No quería hacer eso, y no es algo que pueda resolver fácilmente con solicitudes http rudimentarias como sugirió, así que estaba buscando alternativas.

      MQTT está diseñado para su uso en este tipo de dispositivo y evita realizar votaciones regulares o votaciones largas / sitios web desde el controlador al servidor http. En su lugar, solo espera un mensaje entrante y reacciona a él. Conceptualmente muy simple y muy fácil de implementar en el esp8266 por lo que fue una elección fácil. El acceso al intermediario de mensajes está autenticado (lo suficiente para mis propósitos aquí como para que no cualquiera pueda conectarse e insertar mensajes en el sistema).

      Todo lo que queda es elegir cómo enviar un mensaje a la cola. Dejar caer una API en línea frente a una cola de mensajes (o cualquier otro tipo de almacén de datos / radio) no es completamente nuevo. Fue fácil escribirlo y lanzarlo en AWS Lambda. Esto también se beneficia de que varios clientes de Android puedan hacer que las solicitudes http ya estén disponibles (en lugar de que un cliente de Android hable sobre MQTT), por lo que fue una pieza del rompecabezas con la que no tuve que lidiar.

      Configuración no tan complicada, solo API de Internet antes de la cola de mensajes. Ese es el tipo de cosas con las que me enfrento en mi trabajo diario, así que realmente utilizo lo que ya sé para completar el proyecto. Al final, pasé mucho menos tiempo en el código python, el corredor mqtt y la aplicación de Android (menos de un día) de lo que descubrí la electrónica. En una comunidad como la-tecnologia, definitivamente encontrarás personas cuyas fortalezas son muy pesadas, ya sea por el lado del hardware o el software (en mi caso, el último) y lo que es complejo para una persona es trivial para otra.

    • Mate dice:

      Es una mala práctica "enviar" datos a través de GET, en su lugar use POST o PUT, sin embargo, puede usar parámetros de URL para hacer esto.

  • kak dice:

    ¿Cómo va toda la seguridad?

    • j4k3 dice:

      A juzgar por el código: No existe.
      Lo siento, pero este proyecto es completamente desagradable. ¿Relés para activar los botones de distancia abierta agrietada por mqtt inseguro? Cero puntos por novedad, mala ingeniería, peor código.

      • Elliot Williams dice:

        Juzgaste demasiado rápido; esto aún se está procesando. El OP reconoce que todavía no hay seguridad y trabajará en ello de inmediato. Los relevos están solo en la primera de dos revisiones, ambas mencionadas y vinculadas en el artículo. El segundo usa transistores en lugar de relés.

        Pero mira, algunas personas recién están comenzando y otras están más avanzadas. No estoy seguro de que un proyecto sea "completamente una mierda". Y tampoco estoy seguro de que sea agradable decirlo. Intente ser constructivo y cortés con las personas con menos experiencia que usted.

        • Pensador dice:

          A mí me gusta mucho la combinación de relé / control remoto, ya que permite un control fácil y discreto de dispositivos simples, corrientes de funcionamiento, sin el mayor peligro de utilizar módulos de conmutación disponibles comercialmente (piense en X-10 y sus sucesores). Conectar el acceso en red y regalarlo puede no ser tanto, pero si solo desea encender / apagar un ventilador en la ventana o una luz en la habitación de al lado, es una excelente primera repetición y algo en lo que puede confiar en un joven tinker. con. jugar, porque el gran flujo no es parte de su proyecto.

        • Mike Rogers dice:

          Muchas veces miré hacia atrás en un proyecto antiguo y pensé: "Oh, hombre, hoy podría hacer esto mucho mejor". Trabajas con las herramientas que tienes. A veces, esto significa trabajar dentro de su conjunto de habilidades actual y, a veces, eso significa trabajar con piezas que tiene a mano antes de que entren otras.

          • Anonio dice:

            Yo mismo no podría decirlo mejor. Es posible que haya podido escribir un código mejor que el que se ve en esto, pero todavía no he hecho nada mediante la ejecución de relés. Este tipo usó dos. Seguro que podría haberse hecho mejor, pero como han dicho otros, estás trabajando con lo que tienes. Mental y físicamente.

        • aelse dice:

          Yo soy el creador del proyecto. Gracias por la evaluación justa y los comentarios sobre cómo ser cortés. Si desea hacer crecer una comunidad, es importante recordarlo.

          Solo por el dinero sobre mí recién comenzando. Este es mi primer proyecto de microcontrolador e inicialmente no tenía conocimientos de electrónica. Evitar volar el control remoto de mi garaje de $ 130 fue importante y los relés me proporcionaron aislamiento eléctrico entre el control remoto y el resto del circuito. Mientras ganaba algo de conocimiento y confianza, cambié a la segunda revisión para usar transistores y operar el control remoto del controlador en lugar de una batería.

          Los comentarios de otros sobre seguridad, en mi opinión, están hechos con un contexto insuficiente.

          Esta no es una comunidad cerrada como otros han sugerido (cualquiera puede salir de la calle en el medio del complejo). Las puertas son solo para el estacionamiento y no son seguras; se abren al menos cada 5 minutos al día para que los autos entren y salgan. Si quieres hablar de seguridad, tienes que lidiar con el modelo amenazante. Es muy poco probable que alguien quiera ingresar al estacionamiento y descubra la URL de mi disparador remoto, y ¿por qué molestarse cuando puede esperar al próximo automóvil y simplemente caminar o ingresar?

          • Mate dice:

            Solía ​​vivir en un lugar con una puerta de ese tipo, incluso tenía un botón afuera que solo se podía presionar para abrir las puertas del estacionamiento, aunque esto se descuidó durante 10 años y, cuando me mudé, finalmente lo arreglaron, solo funcionaría. en un momento determinado, cuando llegue el camión de la basura.

            $ 130 de distancia es un poco caro, nuestro sitio pagó £ 40 pero incluso entonces fue solo un simple OOK a 30 MHz, si pudiera averiguar qué frecuencia tiene, probablemente pueda obtener un control remoto de clonación barato por menos de $ 20 , podría usar un SDR barato para averiguar si era 30/316/433/868/915, etc. y si tuviera un SDR costoso, simplemente podría hacer estallar la señal para abrir la puerta directamente desde él, aunque a un costo estúpido en comparación para conseguir la clonación remota.

      • ESTOLA dice:

        Todo el mundo primero hace una "prueba de concepto", por lo general de toda la basura que tiene en la basura.

        La idea general es simplificar tanto como sea posible para que no introduzca características o puntos de falla hasta que comience a usar el código / hardware más básico.

  • Ismail dice:

    No necesita relé para el botón remoto de 3v. Conecte los pines esp a los botones.

    • Rumburack dice:

      Otoh es una manera fácil de asegurarse de que un cambio sea posible gratis.

      • Absolutamente automático dice:

        ¿Qué pasa con los optoacopladores?

    • Freman dice:

      algo como el 4016 también funciona (a menos que se trate de grandes diferencias)

  • Niko dice:

    Mi primer pensamiento fue: ¿por qué necesitas las carreras de relevos allí? Sin embargo, veo que lo miniaturiza en la segunda iteración.

  • Tom G. dice:

    "Un sistema distribuido es aquel en el que la falla de una computadora que ni siquiera sabías podría dañar tu propia computadora". - Leslie Lamport.

  • Cluso99 dice:

    Un amigo usó un teléfono viejo y un detector de luz en la pantalla. Cada vez que se llama al teléfono, la pantalla parpadea y el detector activa el relé de apertura de la puerta (podría ser el control remoto de la puerta). El costo es un número mínimo de teléfono celular. Cada visitante solo necesita llamar al número de teléfono correspondiente.

    • torio dice:

      Esto es bueno hasta que alguien llama por error al teléfono y abre la puerta en medio de la noche.

      Un mejor enfoque sería conectar la puerta al altavoz, mantener el teléfono en silencio para cada mensaje, alarma, alarma, llamada, etc., y hacer sonar solo para un grupo determinado, y poner en este grupo a todas las personas permitidas. para abrir la puerta. Un amigo hizo esto para permitir que su automóvil se pusiera en marcha solo cuando llamó al automóvil.

      • Vadim Fursov dice:

        Algunos teléfonos tienen la capacidad de prohibir todas las notificaciones excepto los números de la lista blanca. Por ejemplo, mi antiguo Samsung GT-S7562

    • Tekgeekify dice:

      "Hazlo simple, estúpido".

      Amo tu solución.

  • Vadim Fursov dice:

    ¡Gran idea! ¡Muy simple! ¡Lo obtendremos gratis si el suscriptor no responde a la llamada!

  • Máximo dice:

    ¿Estoy en lo cierto al suponer que su puerta está fuera del alcance de WiFi?
    Si está fuera del alcance de WiFi, ¿no crean tabletas con tarjetas SIM y servicio básico solo para dispositivos móviles?

  • Máximo dice:

    Oh, ahora lo entiendo ... no quería modificar los componentes electrónicos de la puerta, solo el control remoto. Si la puerta se parece a un abridor de puerta de garaje, probablemente tenga algunas inserciones de gatillo o. Y tener retroalimentación de los interruptores (la puerta está abierta o cerrada) estaría bien.

    • Mike Rogers dice:

      "Debido a que la puerta es una puerta comunitaria, piratear el sistema real de la puerta no era una opción".

      Creo que no conectar nada a la puerta sería una buena idea para él.

  • MacSimski dice:

    una vez, nuestro espacio hacker usó una dirección Mac bluetooth y el emparejamiento como disparador para abrir una puerta. funcionó sin problemas.

  • Anonio dice:

    Mi queja aquí es que apuesto a que el arrendador / propietario / vecinos no estarían contentos si supieran que esto está sucediendo. Estoy comenzando un nuevo proyecto y no tengo todas las vulnerabilidades inventadas, para USTED. Sin embargo, hacérselo a otros participantes, posibles y no dispuestos, no está bien. Es un poco egoísta exponer la puerta de entrada de una comunidad, lo que garantiza que vendo el complejo y también por qué la gente paga más para vivir en él, para que no tengas que dejar entrar a tus amigos cuando los invites. Has decidido vivir detrás de una puerta, decides invitar a grupos de personas (hasta que eso sea lo suficientemente incómodo como para automatizarlo) y aunque puedo apreciar el esfuerzo, la creatividad y la perseverancia.

    Algunas cosas no necesitan automatizarse, especialmente debido a este contexto. Hablando desde una experiencia oscura, la seguridad que ofrecería una puerta simple es mucho más importante que esta comodidad trivial. Es egoísta imponer una opinión diferente a todos los que usan la puerta.

    • Dave dice:

      Es tan bueno como perder / robar uno de los controles remotos.
      Podría haber más de 50 controles remotos enviados.
      ¿Crees que es probable que cada uno de ellos tenga un código individual?
      ¿Le gustaría gestionar eso?

      Está claro que se pueden obtener controles remotos de respaldo. Se pueden enviar controles remotos de respaldo a amigos / familiares.
      ¿Puedes apostar que ninguno de los otros inquilinos hizo eso?

    • Cluso99 dice:

      De hecho, la puerta es un complejo y el cableado subterráneo de las unidades está roto. Este trabajo se realizó para la empresa de carrocería, lo que les ahorró alrededor de $ 10K. Todos están felices.

  • control roto dice:

    probablemente sea keeloq lejos. no son caros. y tampoco están a salvo.

    no hay nada de malo en las construcciones de los Yankees. nos enseñan cómo y por qué no se deben hacer las cosas 🙂

  • Freman dice:

    puedo señalar ... Hice esto hace 22 días, sin relé corriendo y con algo de seguridad (y mucho menos mqtt / http): D https://github.com/freman/esp2remote

  • Edgars dice:

    Yo hice casi lo mismo. Pero utilicé un programa "Blynk", donde era muy simple de configurar: subir un boceto arduine en blanco en ESP, agregar un botón a un programa blynk y decir qué gpion activa.

Manuel Gómez
Manuel Gómez

Deja una respuesta

Tu dirección de correo electrónico no será publicada.