Título: Caida de servidor ESP8266 (Programación Arduino) Publicado por: Fox_Neo en 13 Febrero 2018, 21:20 pm Hola gracias por leer mi problema. Espero que sea correcta la sección estaba dudando entre ponerlo aquí o en la sección de Redes.
Estoy programando un Módulo ESP8266 mediante Arduino y tengo un problema. El objetivo que busco es programar el módulo para que pueda encender un LED a través de un dispositivo que no esté en la red interna(por ejemplo desde un móvil) o desde la red interna. Para ello he abierto el puerto 80 de mi router y que todas las peticiones externas que vayan al puerto 80 las desvíe a la IP del Módulo ESP 8266. Para el control del led se ha programado una pequeña página WEB mediante html que tiene unos botones para encender o apagar el led, aparte de la propia programación de Arduino. (https://thumb.ibb.co/hEEAy7/Captura.jpg) (https://ibb.co/hEEAy7) Vale, cuando accedo con un dispositivo que está en la red interna (móvil o PC) a la IP del módulo ESP funciona correctamente. Cuando accedo con un dispositivo externo a la red (con un móvil), poniendo la IP pública de mi red, enciendo el led y después doy a apagar el led y el módulo se queda bloqueado y el navegador se queda en blanco, no llega enviar la petición al servidor. Os dejo el código, aunque no hayáis programado en Arduino echad un ojo al código es bastante intuitivo, quizás veáis algo. Código
Muchas gracias por la ayuda. Salu2. Título: Re: Caida de servidor ESP8266 (Programación Arduino) Publicado por: PalitroqueZ en 13 Febrero 2018, 21:38 pm como tienes configurado el ESP8266 en el arduino respecto al router?
ip fija, dinamica? nombre del equipo, macaddress? es decir cuando enciendes el servidor ¿cómo se engancha éste a la red? Título: Re: Caida de servidor ESP8266 (Programación Arduino) Publicado por: srWhiteSkull en 14 Febrero 2018, 00:06 am Prescinde del while en el loop, no lo necesitas. La funcion loop siempre debe estar corriendo. Simplemente pon una condicion if está disponible el cliente y le envias la pagina, etc
El client.available() te indica cuando hay un mensaje del cliente disponible, debe ser por eso que la pagina se mostrará una vez y luego se quedara en blanco al entrar en el bucle while... la secuencia deberia ser: Loop Existen cliente (!cliente) entonces mostramos la pagina, con la situacion actual del circuito cliente.flush() Existe mensaje (client.available()>0) entonces leemos e interpretamos el mensaje apagando encendiendo Fin Existe mensaje Fin existe cliente [MOD] No hacer doble post, usar el botón "modificar" para añadir comentarios. Título: Re: Caida de servidor ESP8266 (Programación Arduino) Publicado por: Fox_Neo en 15 Febrero 2018, 18:31 pm Prescinde del while en el loop, no lo necesitas. La funcion loop siempre debe estar corriendo. Simplemente pon una condicion if está disponible el cliente y le envias la pagina, etc El client.available() te indica cuando hay un mensaje del cliente disponible, debe ser por eso que la pagina se mostrará una vez y luego se quedara en blanco al entrar en el bucle while... la secuencia deberia ser: Loop Existen cliente (!cliente) entonces mostramos la pagina, con la situacion actual del circuito cliente.flush() Existe mensaje (client.available()>0) entonces leemos e interpretamos el mensaje apagando encendiendo Fin Existe mensaje Fin existe cliente [MOD] No hacer doble post, usar el botón "modificar" para añadir comentarios. Vale muchas gracias tenías razón ahora funciona correctamente también con un dispositivo externo a la red todas las veces que le doy a apagar o encender. Lo que no entiendo es por qué desde un dispositivo conectado a la red interna funcionaba correctamente :huh: como tienes configurado el ESP8266 en el arduino respecto al router? ip fija, dinamica? nombre del equipo, macaddress? es decir cuando enciendes el servidor ¿cómo se engancha éste a la red? El ESP8266 lo tengo configurado para que la comunicación sea por el puerto 80, y el puerto 80 del router esta configurado para enviar las peticiones a la IP del ESP8266 que es fija. Mi IP pública es dinámica aunque lleva un mes sin cambiar así que la considero IP estática El servidor es el propio ESP8266 y se conecta mediante esta instrucción Código Después de compilar, cargar el programa y dar corriente al ESP8266 se conecta automáticamente. El código que por tanto de la siguiente manera: Código Muchas gracias por la ayuda. Un saludo. |