Estou no processo de construção de um dispositivo IoT usando o ESP8266. O dispositivo acabará por conter alguns motores, e eu gostaria de controlar esses motores usando o MQTT. Gostaria de tornar o dispositivo o mais barato possível, para evitar coisas como monitores e teclados.
Portanto, quando o dispositivo é ligado, ele deve se conectar ao WiFi local e, em seguida, a um broker MQTT. Mas como ele sabe sobre o SSID local ao qual se conectar e sobre o nome de usuário e a senha? Como o dispositivo não possui tela ou teclado, não há como inserir essas coisas. E como o usuário sabe se o dispositivo conseguiu se conectar ou não? Para solução de problemas, seria bom se o dispositivo tivesse pelo menos alguma maneira de indicar qual poderia ser o problema.
A solução que eu pensei é ter um botão e um LED no dispositivo. O botão seria marcado como "config" ou similar. Quando o botão é pressionado, o dispositivo começará a operar como um ponto de acesso WiFi com um SSID predefinido. Ele terá um servidor da web, para que o usuário possa se conectar com um laptop ou telefone a esse ponto de acesso predefinido e inserir as configurações de rede local (SSID, nome de usuário e senha), bem como o endereço do broker MQTT. O LED será usado para indicar o modo de operação e também como indicação de erro. Por exemplo, quando o LED está brilhando constantemente, tudo está conectado, pisca longa significa que está no modo de configuração, pisca curta significa que há um erro ou algo semelhante.
Minha pergunta é: a solução que propus é uma maneira padrão de fazer as coisas quando se trata desse problema? Ou seja, parecerá um fluxo familiar para o usuário, ou seria de alguma outra maneira melhor? Depois de pesquisar um pouco, encontrei, por exemplo , isso , que parece ser um fluxo de usuário semelhante. Ainda estaria interessado em saber qual a experiência que você tem disso e como você resolveria isso?
Se for uma maneira boa e útil de resolver esse problema, e como é um tipo de solução genérica, seria bom não reinventar demais a roda. Estou pensando que poderia haver uma biblioteca que pudesse fazer tudo isso. A biblioteca seria configurada com o pino de entrada para o botão e o pino de saída para o LED e, então, cuidará do resto. Ele pode ser construído na biblioteca PubSubClient e com base no tutorial ESP8266: Conectando ao broker do MQTT . Então, existe uma biblioteca que faz isso ou algo semelhante? Caso contrário, vou dar uma facada e criar a minha, mas gostaria de ouvir sobre o que há por aí primeiro.
Obrigado!
Há também o projeto luftdaten.info , que é um sensor de partículas de código aberto com seu próprio firmware. Eles fazem algo semelhante ao que você propôs, apenas sem o botão de configuração. Eles fazem isso, iniciando o servidor da Web por padrão, quando o dispositivo está ligado. Após um certo limite (acho que é algo entre 3 a 10 minutos), o servidor web interno será desligado - para que não seja possível mais configuração até o próximo ciclo de energia.
Essa solução pode ser muito insegura para certos cenários, mas você pode querer saber sobre isso.
Editar:
Para obter a configuração inicial no dispositivo, o seguinte procedimento está em vigor:
Quando o dispositivo é inicializado, ele tenta acessar a WLAN configurada (não há WLAN configurada na primeira inicialização). Se ele não conseguir se conectar à WLAN pré-configurada, ele define um IP estático e abrange sua própria rede sem fio sem uma senha, onde é possível conectar-se e fazer a configuração inicial através do endereço IP estático.
fonte