Estoy en el proceso de construir un dispositivo IoT usando ESP8266. El dispositivo eventualmente contendrá un par de motores, y me gustaría controlar estos motores usando MQTT. Me gustaría hacer que el dispositivo sea lo más barato posible, por lo que me gustaría evitar cosas como pantallas y teclados.
Entonces, cuando se enciende el dispositivo, se supone que debe conectarse al WiFi local y luego a un agente MQTT. Pero, ¿cómo sabe sobre el SSID local para conectarse y qué pasa con el nombre de usuario y la contraseña? Como el dispositivo no tiene pantalla ni teclado, no hay forma de ingresar estas cosas. ¿Y cómo sabe el usuario si el dispositivo pudo conectarse o no? Para la resolución de problemas, sería bueno que el dispositivo al menos tuviera alguna forma de indicar cuál podría ser el problema.
La solución que he pensado es tener un botón y un LED en el dispositivo. El botón se marcaría "config" o similar. Cuando se presiona el botón, el dispositivo comenzará a funcionar como un punto de acceso WiFi con un SSID predefinido. Tendrá un servidor web, por lo que el usuario puede conectarse con una computadora portátil o teléfono a este punto de acceso predefinido e ingresar la configuración de la red local (SSID, nombre de usuario y contraseña), así como la dirección del agente MQTT. El LED se usará para indicar el modo de operación y también como indicación de error. Por ejemplo, cuando el LED se ilumina de manera constante, todo está conectado, los destellos largos significan que está en modo de configuración, los destellos cortos significan que hay un error o algo similar.
Mi pregunta es, ¿es la solución que he propuesto una forma estándar de hacer las cosas cuando se trata de este problema? Es decir, ¿se sentirá como un flujo familiar para el usuario, o sería mejor de alguna otra manera? Después de buscar un poco, he encontrado, por ejemplo , esto , que parece ser un flujo de usuario similar. ¿Todavía le interesaría saber qué experiencia tiene de esto y saber cómo lo resolvería?
Si resulta que esta es una forma buena y útil de resolver este problema, y dado que es un tipo de solución genérica, sería bueno no reinventar demasiado la rueda. Estoy pensando que podría haber una biblioteca que pudiera hacer todo esto. La biblioteca se configuraría con el pin de entrada para el botón y el pin de salida para el LED, y luego se encargaría del resto. Podría construirse sobre la biblioteca PubSubClient y basarse en el tutorial ESP8266: Conexión al agente MQTT . Entonces, ¿hay una biblioteca que haga esto o algo similar? Si no, voy a apuñalar y crear el mío, pero me gustaría saber primero qué hay ahí fuera.
¡Gracias!
También está el proyecto luftdaten.info , que es un sensor de partículas de código abierto con su propio firmware. Hacen algo similar a lo que propusiste, solo que sin el botón de configuración. Lo hacen, iniciando el servidor web por defecto, cuando el dispositivo está encendido. Después de un cierto umbral (creo que es entre 3 y 10 minutos), el servidor web interno se apagará, por lo que no es posible realizar más configuraciones hasta el próximo ciclo de encendido.
Esta solución puede ser demasiado insegura para ciertos escenarios, pero es posible que desee saber de todos modos.
Editar:
Para obtener la configuración inicial en el dispositivo, se aplica el siguiente procedimiento:
Cuando el dispositivo se inicia, intenta alcanzar la WLAN configurada (no hay una WLAN configurada en el primer inicio). Si no se conecta a la WLAN preconfigurada, establece una IP estática y abarca su propia red inalámbrica sin contraseña, donde uno puede conectarse y realizar la configuración inicial a través de la dirección IP estática.
fuente