Estoy planeando configurar múltiples esp8266 en mi casa para controlar los aparatos eléctricos fuera de línea usando el navegador.
Quiero conectarme a un solo esp8266 como controlador (Maestro) usando el navegador / móvil y todos los demás esp8266 como Esclavo con Maestro, de modo que debo comunicarme con el Maestro y luego se comunicará con el Esclavo interesado. Por lo tanto, la comunicación debe ser Navegador / Móvil - > Maestro - > Esclavo interesado.
Los enfoques que conozco y / o que se encuentran en Google son
- MQTT - enlace
- Malla - enlace
- Cliente-Servidor : ejemplo predeterminado proporcionado en Arduino IDE para cliente y servidor
Ya intenté con toda la metodología anterior que conozco, pero por algún motivo, ninguno de estos resultó ser útil para mi aplicación o debo haber hecho algo mal, por lo tanto, se esperaba ayuda de la comunidad porque el escenario (uno para muchos o viceversa) Estoy tratando de implementar es obvio y la mayoría de ustedes debe haber hecho esto.
Los desafíos que enfrento al implementar esta idea con los enfoques mencionados son:
MQTT: (No quiero usar RaspberryPI) Estoy usando la biblioteca uMQTT Broker en el maestro y el suscriptor en todos los demás esclavos y la aplicación de cliente evidente (lente MQTT) en la aplicación de escritorio de Windows para que cada esclavo escuche un tema específico y trabajar como se espera. Desafío: el broker uMQTT en esp8266 solo puede conectarse a un suscriptor a la vez, bastante extraño
Malla: utilicé la biblioteca MESH para poder conectarme con el maestro y luego el maestro podría conectarse con todos los otros esclavos. Desafío: en Malla, no puedo identificar el esclavo específico puede que no esté con la identificación del chip, por lo que ser el control del maestro. Aparte de esto, solo puedo conectar esclavos individuales y ningún otro esclavo es capaz de realizar búsquedas.
Cliente-Servidor: En este enfoque, lo que entendí es que, a menos que y hasta que el cliente solicite al servidor, el servidor no responda, significa que no puedo tener un solo servidor y varios clientes porque quiero servir a los clientes, por lo que la instrucción será solo en una dirección (puede haber respuesta en otra dirección, es decir, request = browser- > master- > slave y response = browser < -master < -slave) por lo tanto, este enfoque no servirá para mi propósito. Hay tantos ejemplos disponibles que recopilan datos del sensor como esclavo y luego envían esos datos a un servidor específico esp8266 que no es aplicable en mi caso.
Estaba planeando crear un servidor múltiple (esclavo) y luego conectarme con un solo cliente (maestro). Aquí el cliente (Master) actuará como servidor y como cliente. Ahora aquí instruiré al cliente y le indicará al servidor interesado. Pero este enfoque aún no se ha probado en la práctica y no sé si es factible o un buen enfoque a seguir.
Aparte de este enfoque, una más es la comunicación TCP IP, pero no sé si esto resolverá mi propósito o no.
Por favor, ayúdame a entender el mejor escenario para elegir según mi solicitud. Estoy usando ejemplos predeterminados para fines de prueba con pequeñas modificaciones.