Configuración inalámbrica de ESP8266 en el firmware DeviceHive v 0.3



¡Buenas noticias para todos! Se ha lanzado una nueva versión del firmware DeviceHive para ESP8266. Hemos implementado el soporte para las interfaces más populares para conectar dispositivos: GPIO, ADC, PWM, UART, I2C, SPI, 1 cable. Ahora puede conectar fácilmente dispositivos con estas interfaces a nuestro servicio en la nube. Y lo más importante: ha aparecido la capacidad de configurar de forma inalámbrica el firmware (vea la captura de pantalla a continuación). Hablaremos de esto hoy.



Triple RESET, o "¡Vamos!"


Al crear dispositivos IoT con una conexión inalámbrica, a menudo puede encontrar un problema desagradable: configurar el dispositivo para el usuario final no es tan fácil como parece. Estos dispositivos generalmente no están equipados con una pantalla y un teclado, por lo que configurar los ajustes iniciales (datos de la red Wi-Fi, por ejemplo) no funcionará sin un cable adecuado y un software especializado. Intentamos resolver este problema en la nueva versión de firmware.

Ahora todo es extremadamente simple de configurar:
• el dispositivo se reinicia tres veces (con un intervalo de no más de 3 segundos), después de lo cual se convierte en un punto de acceso Wi-Fi;
• se conecta a este punto y a través del navegador ingresa todas las configuraciones necesarias;
• después de aplicar la configuración, el dispositivo se reinicia automáticamente con la nueva configuración.

De esta forma, ambos problemas se resuelven a la vez: no necesitará cables ni software especial. Además del navegador ... pero ¿tienes un navegador? El botón RESET se encuentra con mayor frecuencia directamente en el cuerpo del dispositivo, presionarlo tres veces debería ser bastante simple.

Además, en los sistemas operativos móviles modernos, ni siquiera tiene que abrir un navegador, porque la mayoría de ellos admiten la autenticación de portal cautivo. En los dispositivos Apple, la página de entrada de datos se abre automáticamente. Android mostrará una notificación haciendo clic en el cual, se encontrará en esta página.

En el video a continuación, puede ver cómo funciona todo con el nuevo firmware y el dispositivo Android.



Hazlo tu mismo


Veamos cómo funciona básicamente dicho sistema de configuración, porque puede implementarse para cualquier otro dispositivo inalámbrico con Wi-Fi.

Para comenzar, elevamos la red Wi-Fi habitual. En él, creamos un servidor DHCP que distribuirá direcciones IP a los dispositivos conectados. Pero como servidor DNS, pasa la dirección IP del DNS "astuto". El truco es que la misma dirección IP del servidor HTTP con el que podemos configurar el dispositivo siempre se devolverá a cualquier registro de consulta DNS "A". En el caso de ESP8266, los servidores DHCP, DNS y HTTP funcionan directamente en el chip. En una versión muy básica, esto es suficiente: al abrir cualquier página en el navegador, veremos una página con la configuración. Pero, para ser bello, puede obligar a los dispositivos que admiten la autenticación del portal a mostrar una notificación sobre la necesidad de ingresar datos.

La autenticación del portal se usa generalmente para ingresar datos y / o mostrar un acuerdo de uso en hoteles, hoteles y otros puntos de acceso Wi-Fi. Utilizamos esta técnica para mostrar nuestra página.

Android cuando se conecte a una red Wi-Fi intentará ir a clients3.google.com/generate_204 .
Los dispositivos Apple están intentando conectarse a captive.apple.com .

Habiendo enviado una solicitud allí, recibirá una respuesta del formulario:

$ curl http://clients3.google.com/generate_204 -i
HTTP/1.1 204 No Content
Content-Length: 0
Date: Mon, 07 Sep 2015 14:58:21 GMT
Server: GFE/2.0


$ curl http://captive.apple.com -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 68
Date: Mon, 07 Sep 2015 15:00:32 GMT
Connection: keep-alive

<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>


Es decir, en respuesta a una solicitud HTTP, devuelven una respuesta con el estado 2xx. Gracias a estas solicitudes, los dispositivos determinan si están conectados a Internet. Para implementar la autenticación del portal, es necesario enviar una respuesta con el código 302 Movido temporalmente en respuesta a estas solicitudes (o solo a todas las solicitudes que nos interesan) e indicar el campo Ubicación con nuestra dirección en el encabezado, es decir, la respuesta debe ser aproximada de esta manera:

HTTP/1.1 302 Moved Temporarily
Content-Length: 0
Location: http://example.com


Después de recibir esta respuesta, los dispositivos comprenderán que es necesario mostrar la página de configuración en la dirección especificada: los dispositivos Apple abrirán esta página en la pantalla y Android mostrará una notificación. En los sistemas operativos sin el soporte de autenticación del portal, es suficiente escribir en la barra de direcciones del navegador cualquier dirección que comience con "http: //": el navegador abrirá la página de configuración. Al mismo tiempo, no engañará al usuario, porque la dirección de la página con la configuración se mostrará en la barra de direcciones. En el firmware para ESP8266 usamos la dirección devicehive.config .

Esperamos que todo esto le sea útil. ¡Buena suerte creando tus propias soluciones de IoT!

Publicado por Nikolai Khabarov, Desarrollador Integrado Senior

Source: https://habr.com/ru/post/es383881/


All Articles