Configuração sem fio do ESP8266 no firmware DeviceHive v 0.3



Boas notícias, pessoal! Uma nova versão do firmware do DeviceHive para o ESP8266 foi lançada. Implementamos suporte para as interfaces mais populares para conectar dispositivos: GPIO, ADC, PWM, UART, I2C, SPI, 1 fio. Agora você pode conectar facilmente dispositivos com essas interfaces ao nosso serviço de nuvem. E o mais importante - a capacidade de configurar o firmware sem fio apareceu (veja a captura de tela abaixo). Vamos falar sobre isso hoje.



RESET triplo ou "Vamos lá!"


Ao criar dispositivos IoT com uma conexão sem fio, muitas vezes você pode encontrar um problema desagradável: configurar o dispositivo para o usuário final não é tão fácil quanto parece. Esses dispositivos geralmente não são equipados com tela e teclado; portanto, a configuração inicial (dados da rede Wi-Fi, por exemplo) não funcionará sem um cabo adequado e software especializado. Tentamos resolver esse problema na nova versão do firmware.

Agora, tudo é extremamente simples de configurar:
• o dispositivo reinicia três vezes (com um intervalo de não mais que 3 segundos), após o que se transforma em um ponto de acesso Wi-Fi;
• você se conecta a esse ponto e, através do navegador, insere todas as configurações necessárias;
• depois de aplicar as configurações, o dispositivo reinicia automaticamente já com as novas configurações.

Dessa maneira, os dois problemas são resolvidos de uma só vez - você não precisará de cabos ou software especial. Além do navegador ... mas você tem um navegador? O botão RESET geralmente está localizado diretamente no corpo do dispositivo, pressionando-o três vezes deve ser bastante simples.

Além disso, nos sistemas operacionais móveis modernos, você nem precisa abrir um navegador, porque a maioria deles suporta autenticação de portal cativa. Nos dispositivos Apple, a página de entrada de dados é aberta automaticamente. O Android mostrará uma notificação clicando em qual, você se encontrará nesta página.

No vídeo abaixo, você pode ver como tudo funciona com o novo firmware e o dispositivo Android.



Faça Você Mesmo


Vamos ver como esse sistema de configuração funciona basicamente, porque pode ser implementado para qualquer outro dispositivo sem fio com Wi-Fi.

Para começar, criamos a rede Wi-Fi usual. Nele, criamos um servidor DHCP que distribuirá endereços IP para os dispositivos conectados. Mas como servidor DNS, ele passa o endereço IP do DNS “astuto”. O truque é que o mesmo endereço IP do servidor HTTP com o qual podemos configurar o dispositivo sempre será retornado a qualquer registro "A" da consulta DNS. No caso do ESP8266, o servidor DHCP, DNS e HTTP trabalha diretamente no chip. Em uma versão muito básica, isso é suficiente - abrindo qualquer página no navegador, veremos uma página com as configurações. Mas, para ser bonito, você pode forçar os dispositivos que suportam a autenticação do portal a exibir uma notificação sobre a necessidade de inserir dados.

A autenticação do portal geralmente é usada para inserir dados e / ou exibir um contrato de uso em hotéis, hotéis e outros pontos de acesso Wi-Fi. Usamos essa técnica para exibir nossa página.

O Android ao conectar-se a uma rede Wi-Fi tentará acessar customers3.google.com/generate_204 .
Os dispositivos Apple estão tentando se conectar ao captive.apple.com .

Depois de enviar uma solicitação para lá, você receberá uma resposta do formulário:

$ 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>


Ou seja, em resposta a uma solicitação HTTP, eles retornam uma resposta com o status 2xx. Graças a essas solicitações, os dispositivos determinam se estão conectados à Internet. Para implementar a autenticação do portal, é necessário enviar uma resposta com o código 302 Movido temporariamente em resposta a essas solicitações (ou apenas a todas as solicitações que são interessantes para nós) e indicar o campo Localização com o nosso endereço no cabeçalho, ou seja, a resposta deve ser aproximada da seguinte forma:

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


Após receber esta resposta, os dispositivos entenderão que é necessário exibir a página de configurações no endereço especificado - os dispositivos Apple abrirão esta página na tela e o Android exibirá uma notificação. Nos sistemas operacionais sem o suporte à autenticação do portal, basta escrever na barra de endereços do navegador qualquer endereço que comece com "http: //" - o navegador abrirá a página de configurações. Ao mesmo tempo, você não enganará o usuário, porque o endereço da página com as configurações será exibido na barra de endereços. No firmware do ESP8266, usamos o endereço devicehive.config .

Esperamos que tudo isso seja útil para você. Boa sorte ao criar suas próprias soluções de IoT!

Postado por Nikolai Khabarov, Desenvolvedor embarcado sênior

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


All Articles