Micropython: Publicando datos en Thingspeak (1)

Thingspeak es un servicio muy popular que nos permite almacenar, analizar y visualizar los datos capturados por nuestros dispositivos IOT de una manera muy sencilla. En esta serie de artículos vamos a ver como crear un cuenta en Thingspeak y configurarla para recibir y mostrar la información recibida. También repasaremos que es un protocolo y cuales son los que podemos usar para enviar información a Thingspeak, profundizando en el protocolo HTTP y los métodos GET y POST. Implementaremos todo lo aprendido en una aplicación práctica con Micropython y haremos una introducción al análisis de datos y el uso de las alarmas.

Si estamos desarrollando una aplicación del Internet de las cosas (IOT) en la que monitoreamos o medimos alguna magnitud física a través de uno o mas sensores, podemos utilizar dicha información de distintas maneras. Podemos disparar una alerta o alarma cuando un valor se sale de rango (por ejemplo si la temperatura es demasiado elevada) a través de un mail, un tweet o un SMS, o empleando alguna app específica como Blynk o también podemos almacenar los valores medidos de manera periódica en un algún sitio o servidor para poder verlos luego y hacer algún tipo de análisis (por ejemplo, como varió la temperatura a lo largo del día o de la semana). Para hacer esto último podemos elegir entre varias opciones. Entre los servicios mas conocidos tenemos a Kaa, Thinger, myDevices, Thingsboard o Thingspeak. Algunos ofrecen algún plan gratuito, para estudiantes o makers y otros directamente son de pago. Algunos se utilizan directamente en la nube y otros pueden instalarse en un servidor privado, para mantener la confidencialidad de nuestros datos. En esta oportunidad nos vamos a centrar en Thingspeak, que cuenta con un plan gratuito y además es muy fácil de configurar y utilizar y brinda muchas e interesantes posibilidades.

Thingspeak

Thingspeak es un software de código abierto (Open Source) gratuito mantenido por una comunidad de desarrolladores. Podemos descargarlo de su repositorio e instalarlo en nuestro propio servidor si así lo deseamos. Thingspeak.com es un sitio de Internet que presta servicios basados en Thingspeak y ofrece distintos planes de tarifas, incluyendo uno gratuito que contiene algunas limitaciones. Además de almacenar la información recibida desde nuestros dispositivos, en Thingspeak.com (desde ahora le llamaré directamente Thingspeak) podemos visualizar estos valores de distintas maneras, mantener la información privada o compartirla, hacer distintos tipos de análisis empleando el software matemático Matlab (que está integrado) y establecer alarmas para que el resultado de este análisis nos alerte por mail de alguna situación particular.

Distintos paneles de visualización de información en Thingspeak

Para enviar la información a Thingspeak desde nuestros dispositivos podemos emplear dos protocolos: HTTP y MQTT. Veremos a continuación que significa esto.

Protocolos

Imaginemos una clase en una escuela o universidad: El profesor hace una exposición sobre un tema y los alumnos, cuando tienen una duda, simplemente se la expresan al profesor en voz alta. Muy probablemente el profesor debería retomar su exposición repetidas veces debido a las interrupciones, o puede que se pierda de algunas consultas porque mas de un alumno habla al mismo tiempo. En vistas a este desorden, el profesor hace un acuerdocon los alumnos para poder continuar de manera mas ordenada: cada vez que tengan una duda, deben levantar la mano y él, cuando cierre la idea que está explicando, les dirá, en orden, quien puede realizar su consulta. Este acuerdo que respetan ambas partes, profesor y alumnos puede definirse como un protocolo de comunicación.

Protocolo

Un protocolo de comunicaciones es un convenio o acuerdo que permite que dos o mas partes intercambien información entre sí.

En Internet, y en el campo de IOT, existe una gran variedad de protocolos para distintas aplicaciones. Por ejemplo, el protocolo SMTP nos permite enviar correos electrónicos (ya vimos como hacerlo con Micropython), el FTP permite subir y bajar archivos hacia o desde un servidor, HTTP que sirve para acceder a páginas Web e interactuar con ellas, y MQTT que está especialmente diseñado para aplicaciones IOT en las que se transmiten pequeños paquetes de información. Thingspeak utiliza estos dos últimos (HTTP y MQTT) pero en este artículo veremos sólo HTTP (abordaremos el uso de MQTT en otra ocasión).

El protocolo HTTP

El protocolo HTTP es viejo como la misma Web. Fue creado a comienzos de la década de 1990 para definir la forma en que viajaría la información entre los servidores Web y los usuarios. El protocolo HTTP reconoce dos partes que tienen un rol bien diferenciado: El servidor, que contiene la información y el cliente, que pretende acceder a dicha información. Por esta razón se dice que tiene o responde a una estructura cliente-servidor. Cuando accedemos a cualquier página en la Web lo hacemos empleando el protocolo HTTP. En ese caso nosotros (o el navegador que usemos para acceder) es el cliente, que le solicita información al servidor, la cual generalmente es una página, que puede contener muchos elementos diferentes. Esto se llama solicitud (request). Cuando el servidor recibe la solicitud la analiza y si puede, responde enviando la información solicitada. Eso se denomina respuesta (response). Si algo falló o el servidor no tiene la información solicitada, responderá con un mensaje de error.

Estructura cliente-servidor de HTTP

Para llegar al servidor con la solicitud, necesitamos saber su URL, o su dirección en Internet.

A veces, debemos enviar alguna información adicional en la solicitud. Por ejemplo, si sólo incluimos la URL o dirección, como www.google.com, la respuesta será la típica página de búsqueda. Pero si queremos pedirle a Google que nos busque algo, como información sobre el ESP8266, deberemos hacer una nueva solicitud pero agregando ahora “ESP8266” como dato adicional para que Google realice la búsqueda. Esto también pasa cuando rellenamos un formulario con nuestros datos o cuando introducimos en una página nuestro nombre de usuario y contraseña.

Cuando usamos Thingspeak para enviar datos desde nuestro dispositivo con el protocolo HTTP, el dispositivo es el cliente y Thingspeak el servidor. Si queremos enviar un dato, como un valor leído desde un sensor, debemos hacer una solicitud a una URL que nos provee Thingspeak agregando como información adicional ese valor.

Enviando datos a Thingspeak

Para enviar esa información dentro de la solicitud, el protocolo HTTP tiene dos métodos: GET y POST.

Los métodos GET y POST

GET y POST nos permiten enviar información desde el cliente al servidor dentro de la solicitud. Sirven al mismo propósito, pero tienen características diferentes:

GET: En el método GET, la información enviada se incluye junto a la dirección o URL luego de un símbolo ? Si se envían varios datos, se deben separar con el símbolo &.

Ejemplo:

www.ejemplo.com/prog.php?dato1=100&dato2=200

En este caso la URL www.ejemplo.com/prog.php “apunta” a un programa escrito en el lenguaje PHP que está en el servidor al cual le pasamos los valores dato1 y dato2, que valen respectivamente 100 y 200.

El método GET es muy simple y sencillo de implementar, pero tiene varias desventajas. La fundamental es la falta de seguridad: los datos enviados están a la vista de cualquiera. Además, los valores están limitados a letras y números y la extensión total de la URL más los datos no puede superar los 2000 caracteres.

POST: El método POST no incluye los datos con la dirección sino que los envía aparte, de manera no visible. Esto es ideal si queremos enviar información sensible o contraseñas. De esta forma tampoco hay limitación en el formato de los datos (podemos enviar imágenes o videos por ejemplo) ni en su longitud. Como contraparte, es más complicado de implementar.

Thingspeak acepta los dos métodos, aunque por simplicidad en nuestra implementación emplearemos solamente el método GET.

Conclusión

En este artículo hicimos una introducción a Thingspeak y los protocolos usados para enviar información, viendo mas en detalle el protocolo HTTP y sus métodos GET y POST. En el próximo artículo veremos como crear y configurar una cuenta para recibir los datos.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: