3. Almacenamiento de datos en ThingSpeak

En esta entrada vamos a describir cómo se realiza el almacenamiento de datos adquiridos por la Raspberry en la nube, concretamente en la plataforma ThingSpeak.

Para poder subir datos a una plataforma  a través de Internet, es necesario tener unos conocimientos básicos sobre el protocolo de comunicación que vamos usar, el protocolo HTTP.

HTTP es un protocolo que posee una estructura cliente-servidor que nos permite realizar una petición de datos o recursos. Dicha petición siempre es iniciada por el elemento que recibirá los datos (cliente) y contestada por el elemento que los suministra (servidor).

El identificador de cada uno de los datos o recursos disponibles en el servidor se denomina URI.


La estructura que debe adoptar cada uno de los mensajes intercambiados entre el cliente y el servidor viene impuesta por el propio protocolo:


ThingSpeak ofrece un servicio de almacenamiento de datos y unas interfaces HTTP y MQTT para que cualquier cliente que hable dichos protocolos pueda intercambiar información con él.

Los datos se almacenan en canales asociados a cuentas de usuarios, que pueden ser públicos o privados.


La API REST de ThingSpeak está constituida por un conjunto de operaciones/servicios que ThingSpeak ofrece para gestionar canales mediante el protocolo HTTP. A dicha documentación se puede acceder a través de la página mathworks.


Basándonos en la documentación, lo primero que debemos hacer para poder realizar la subida de datos es importar las librerías necesarias en nuestro proyecto, tanto para la adquisición de datos como para la subida de los mismos.


Cabe destacar el uso de la librería Adafruit_DHT que es la utilizada para la lectura de los datos de temperatura y humedad específica para nuestros sensores.

El segundo paso es adquirir la dirección del servidor donde vamos a almacenar los datos y la USER_API_KEY correspondiente a nuestra cuenta, ya que son campos necesarios para la construcción del mensaje HTTP.


A continuación establecemos la conexión con el servidor.


Como vamos a tener que almacenar los datos cada 10 segundos y ThingSpeak sólo nos deja almacenar datos en un canal cada 15 segundos, debemos crear dos canales de almacenamiento de datos, de tal forma que cada 10 segundos los datos de temperatura y humedad correspondientes a la muestra se almacenen en un canal u otro.


La estructura de los campos de la petición del mensaje está descrita en la API proporcionada por ThingSpeak.

La captura de datos se va a realizar de forma recursiva, almacenando las medidas en un canal u otro de los creados anteriormente en función del estado de un flag.


Por otro lado a la hora de determinar las funciones de la librería de Adafruit_DHT necesarias para la lectura de los datos del sensor, nos hemos basados en los propios ejemplos incluidos en la librería.


Una vez desarrollado todo el código, el último paso que tenemos que realizar es la transferencia del fichero a nuestra Raspberry. Para ello utilizamos el software libre FileZilla que utiliza el protocolo FTP para la transferencia de ficheros entre cliente y servidor.


Finalmente no queda más que ejecutar el programa en la Raspberry a través de la linea de comandos. La conexión Windows-Raspberry Pi se hará con SSH.



Los resultado que obtenemos de los datos almacenados en los canales de nuestra cuenta son los siguientes:

Por el momento esto es todo, os compartimos el código para que vosotros también podaís implimentarlo, en las próximas entradas iremos avanzando un poco más hasta completar todo el proceso.

Comentarios

Entradas populares de este blog

1. Configuración del WIFI de la Raspberry Pi 3 por terminal y formas de acceder de forma remota a la RPI3

Presentando el proyecto Raspberry Pi 3 (RPI3) + sensor AM2302 (DHT22)