Publicar datos en ThingSpeak mediante API MQTT
Hoy trataré la subida de datos a ThingSpeak mediante el protocolo MQTT. La plataforma nos ofrece el formato en el que tenemos que enviar la información a fin de poder publicar los datos en un canal:
Al igual que en los anteriores posts, se utilizará Python como lenguaje de programación. Por lo tanto, cread un archivo .py o abrid uno en el que deseéis integrar la subida de datos MQTT. Importad las siguientes librerías a fin de soportar las comunicaciones MQTT y añadir pausas al programa:
import paho.mqtt.publish as publish
import time
Para poder publicar los datos, en primer lugar es necesario crear el topic en el que se van a publicar. Necesitáis vuestra clave Write API Key y el ID del canal en el que vais a publicar los datos. La dirección del broker MQTT de ThingSpeak que se encarga de gestionar las publicaciones es mqtt.thingspeak.com:
topic='channels/'+str(Channel_Id)+'/publish/'+str(Write_API_Key)
mqttHost = 'mqtt.thingspeak.com'
A continuación, basta construir el cuerpo del mensaje con los datos a publicar y enviarlo (en mi caso son valores de temperatura, humedad, y presión):
payload='field1='+str(temperatura)+'&field2='+str(humedad)+'&field3='+str(p_rocio)+'&field4='+str(presion)
try:
publish.single(topic, payload, hostname=mqttHost)
except:
print "except: problemas envio datos MQTT"
break
Debido a que la frecuencia máxima de subida de datos es de 15 segundos, añadimos una espera en el caso de que queramos realizar publicaciones cíclicas:
time.sleep(15)
Para probar el código, recordad que previamente tenéis que haber creado y configurado un canal en ThingSpeak, ya sea manualmente o mediante código:
Además, en el entorno Python en el que vayáis a ejecutarlo, tenéis que tener instalada la librería paho-mqtt. En el caso de que vayáis a probarlo sobre una RaspberryPI, tenéis que tener instaladas las herramientas de desarrollo Python (Instalar Python en RaspberryPI) y ejecutar el siguiente comando:
pip install paho-mqtt
Si accedéis al canal al cuál habéis subido los datos, deberíais poder verlos. En mi caso sólo he subido dos datos por campo, pero es suficiente para ilustrar el resultado:
¡Cualquier sugerencia o pregunta que tengáis no dudéis en dejarla en los comentarios!
Si accedéis al canal al cuál habéis subido los datos, deberíais poder verlos. En mi caso sólo he subido dos datos por campo, pero es suficiente para ilustrar el resultado:
Fig. 1: Canal con datos subidos mediante MQTT |
¡Cualquier sugerencia o pregunta que tengáis no dudéis en dejarla en los comentarios!
Comentarios
Publicar un comentario