Cómo servir contenido dinámico desde el ESP8266


Continuamos con los tutoriales del ESP8266 viendo un servidor que devuelva información que cambie dinámicamente en cada petición.

Anteriormente vimos cómo montar un servidor básico con un ESP8266, y en la entrada anterior vimos cómo distinguir entre tipos de llamadas y recibir argumentos.

Hasta ahora, estábamos devolviendo un contenido "más o menos" estático, es decir, que siempre el mismo. Pero en muchas ocasiones vamos a querer devolver contenidos que varían, como por ejemplo el estado de una variable, o una entrada analógica o digital, la medición de un sensor.

En un proyecto real normalmente serviremos un cierto contenido estático (típicamente html) y este se actualizará mediante algún mecanismo (Ajax, Websocket) haciendo peticiones a ciertos Endpoints. Veremos todo esto en su momento.

Anuncio:

En esta entrada vamos a aprender a servir contenido que varía dinámicamente. Para ello, partimos del programa de servidor del ejemplo anterior, donde únicamente hemos añadido una variable 'ledStatus' que representa una variable cualquier que quisiéramos devolver.

Por su parte, en el fichero 'Server.hpp' ponemos el siguiente contenido.

Como vemos, hemos definido un único Routeo desde la raíz '/'. En la respuesta generamos un String que contiene el texto que queremos. En este ejemplo, únicamente devolvemos 'LED: ON' o 'LED: OFF', en función del estado de la variable.

Si ejecutamos el código veremos que, efectivamente, estamos devolviendo el contenido dinámico correctamente. ¡Así de fácil!

Por supuesto, este es un ejemplo muy sencillo. Pero conviene que lo aprendáis muy bien porque, junto con la entrada anterior, constituye la base para montarnos nuestro propio API.

El principal problema de esta forma de proceder es que supone una carga para el procesador porque tiene que generar la información en cada petición, y que el tratamiento de los String de la respuesta puede llegar a ocupar mucha memoria si esta es larga.

En la próxima entrada veremos cómo mejorar esto sirviendo el contenido desde la memoria Flash, y en la próxima veremos cómo emplear los sistemas de ficheros disponibles (SPIFFS y LittleFS) para servir contenidos estáticos. ¡Hasta pronto!

Descarga el código

Todo el código de esta entrada está disponible para su descarga en GitHub.

Si te ha gustado esta entrada y quieres leer más sobre ESP8266 puedes consultar la sección
tutoriales de ESP8266

Anuncio:

Previous Cómo usar corrección Gamma en fuentes de luz con Arduino
Next Cómo configurar un Virtual Host en Apache con Raspberry Pi
1000