JavaScript - ¿Hay manera de cambiar un numero en página HTML sin recargar?

 
Vista:
sin imagen de perfil
Val: 12
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por Enrique (7 intervenciones) el 01/08/2017 02:39:56
Hola a todos.
Estoy implementando una página en un dispositivo ESP8266 configurado como servidor web.
Actualmernte envia al cliente una página con inputs que el usuario modifica y clickea en un boton submit. Este dispositivo envia luego el contenido de los inputs a un microcontrolador via comunicación serie.

Pero ademas me sería fantastico si puedo mostrar el estado de un contador interno sin necesidad de estar refrescando la página.

Este dispositivo no trabaja con PHP y la página es armada por un programa corriendo dentro de él llamado LUA que la envia al cliente y procesa los datos entrados luego de presionar submit.

Agradezco toda idea que me puedan dar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por kip (107 intervenciones) el 01/08/2017 03:17:57
Hola, Lua es un lenguaje de programación, podrías verificar que servidor(nombre) usa este dispositivo o es Lua puro ? Si es uno basado en Lua o usa algún otro lenguaje ?

He encontrado esto que quizas te ayude:
http://alokprasad7.blogspot.com.ar/2015/06/light-control-using-esp8266-simple-html.html
http://kamilc.pro/2015/01/esp8266-webserver-with-ajax-gpio-toggle

Debes recordar que teniendo el servidor simplemente debes usar AJAX desde el navegador con codigo Javascript y usar algun script que resuelva esta petición desde el servidor sea el lenguaje que sea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por Enrique (7 intervenciones) el 01/08/2017 04:50:12
Gracias.
Voy a probarlo, aunque veo que la página requiere que el usuario haga algo, como ser en este caso pulsar un botón para que cambie de color.
El ESP8266 con el firmware correspondiente funciona solo en LUA, con otro firmware puede funcionar de otra forma. De todos modos el problema es como escribir el código HTML generado.

Es similar a como esta hecho en la página que me mandaste el link. El programa escrito en LUA envía un largo string conteniendo todo el HTML al socket.

Necesito que sin pulsar nada cambie en la página el número de un contador interno del programa escrito en LUA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por Vainas (258 intervenciones) el 01/08/2017 13:03:00
Hola. La verdad es que nunca he probado este tema pero me interesa muuucho.

Vamos por partes por que esto es muy extenso:

He encontrado estos dos tutoriales en arduino que conectan con el ESP8266 .

http://www.prometec.net/servidor-web-esp8266/
Lo que hace pare ser que pasandole directamente al dispositivo llamadas por el puerto serial (por ejemplo pasandole AT+CIPSERVER=1,80 para habilitar un servidor web?) activa un servidor web que se queda a la espera. luego por el mismo serial regresa si un cliente se conecta.

http://www.prometec.net/esp8266-con-arduino-ide/
Este hace uso de una libreria para hacer algo muy parecido a lo anteior (desaparecen las llamadas AT en el codigo y se reemplazan por las de la libreria).

Luego he leido que hay un firmeware para este modulo https://github.com/nodemcu/nodemcu-firmware entiendo que es para el modulo y hay que instalarlo (reprogramarlo se dice?).

Despues de todo lo que no entiendo, te digo lo que entiendo

Depende de lo que uses se puede enviar al navegador codigo js para que segun un intervalo de tiempo haga una llamada a

http://tu_ip/dato

y este regrese el valor que quieres actualizar. pero para programar esto lo mejor primero es saber como esta programado el servidor lua para ver si se pueden enviar estos datos al cliente. Es la mejor opcion que veo (y la que menos recursos pide al modulo aunque si que es verdad que se van a hacer llamadas cada x tiempo para recuperar el valor, no podemos hablar de tiempo real por que no sera asi a menos que se usen otras tecnologias).

Si quieres nos puedes enseñar como esta el sevidor y puedo ver si es facil hacer algun cambio.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por Enrique (7 intervenciones) el 01/08/2017 14:00:23
Hola Vainas. Gracias por responder.

No estoy usando comandos AT, si no que he cargado en el ESP8266 el firmware de nodemcu que ofrece un sistema operativo que se programa en LUA y con él programar todas las posibilidades de este módulo.
Programar el ESP8266 en comandos AT se puede usar con algo que no requiera muchos comandos y dejarlo funcionando sin demasiada atencion. Pero si necesitas algo dimámico el LUA le da autonomia al ESP8266.

No estoy usando Arduino, estoy usando el programa Esplorer (se llama así, con s, no con x) para programar el ESP8266.

La programación en LUA no me da problema, lo que desconozco es como hacer que en el browser del cliente se vea un dato que es actualizado por el servidor sin que se recarge la página. Necesito que por lo menos este dato, que proviene de un contador, cambie cada medio segundo, por lo que recargar la página cada medio segundo es imposible y sumamente molesto.

Decis que el navegador, con javascript, puede interrogar al servidor cada cierto tiempo, eso me interesa. ¿Sabes dónde puedo encontrar código que haga eso?

Saludos desde Buenos Aires.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por kip (107 intervenciones) el 01/08/2017 14:49:05
Enrique claro que puede hacerse, eso fue lo que te mencione mas arriba, con AJAX puedes hacer una llamada al servidor.

Como lo harias ? Puedes hacer lo que se conoce cono 'polling', cada cierto tiempo(intervalo) ejecutas una llamada AJAX al servidor y verificas los datos o el dato que quieras, no se si usas jQuery o Javascript nativo pero aqui te dejo un par de links que te ayudaran, intenta aplicarlo y si tienes alguna duda colócala y te ayudamos.

http://bl.ocks.org/hofmannsven/9964415
https://rekinyz.wordpress.com/2015/06/11/long-polling-with-jquery-ajax/

Puedes tambien usar WebSockets con HTML5 pero creo que debes primero probar con un polling sencillo si tienes un bajo numero de clientes conectados al mismo servidor, caso contrario te recomiendo que uses WebSockets.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 12
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Hay manera de cambiar un numero en página HTML sin recargar?

Publicado por Enrique (7 intervenciones) el 01/08/2017 15:30:28
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar