Get it on Google Play
07-07-2018
 

IoT con MQTT + Mosquitto + Python

Como ya es costumbre en este tipo de vídeo aprovecho para adjuntar en este post el código que he ido poniendo en la pantalla. Aunque no es necesario para entender el artículo si que es recomendable ver el vídeo porque en directo se ven las cosas mucho mas claras:

Introducción a MQTT y Mosquito

MQTT(Message Queuing Telemetry Transport) es un protocolo de comunicación ligero M2M(Machine2Machine). Diseñado para ser tremendamente ligero(Poco ancho de banda, poco consumo y pocos recursos para su funcionamiento). Es ideal para aplicaciones IoT(Internet of Things) ya que lo puede implementar desde un servidor cloud hasta una tostadora o una nevera(Aunque no es SOLO para este tipo de aplicaciones).

Eclipse Mosquitto es una implementación Open Source de este protocolo ampliamente usada.

Básicamente, la arquitectura de una aplicación que utilice MQTT tiene: Un servidor MQTT que hace de broker de mensajes(Donde se conectan los clientes que publican o se suscriben a topics), los clientes que pueden tener un rol publicador, subscriptor o ambos.

Un publicador es un componente que se dedica a publicar mensajes a un topic. Un subscriptor es un componente que se subscribe a uno o varios topics y cada vez que algún publicador publica algo sobre ese topic recibe el mensaje.

Instalar mosquitto

En ubuntu es muy fácil instalar mosquitto:

sudo aptitude install mosquitto

sudo aptitude install mosquitto-clients

Para el resto de plataformas es igual de fácil(Un instalador para Windows, etc.).

Arrancar Mosquitto

Para arrancar mosquito necesitamos un fichero de configuración. El siguiente es el fichero de configuración que hemos usado en el vídeo:

listener 1883 127.0.0.1
allow_anonymous true

Esta configuración, básicamente, pone a la escucha al servidor de MQTT Mosquitto en el puerto 1883 y la IP localhost(127.0.0.1). También configuramos que los clientes se puedan conectar anonimamente.

Para arrancar mosquitto con esta configuración ejecutaremos:

mosquitto -c mosquitto.conf 

Configurar un subscriptor

Mosquito nos provee de dos utilidades para testear todo. Una que nos permite subscribirnos a topics y otra que nos permite publicar en topics.

Si queremos configurar un subscriptor del tópic ‘casa/cocina/nevera’ lo podemos hacer de la siguiente manera:

mosquitto_sub -h 127.0.0.1 -p 1883 -t "casa/cocina/nevera" -v

O si queréis recibir todos los mensajes de la casa podéis usar el comodín ‘#’

mosquitto_sub -h 127.0.0.1 -p 1883 -t "casa/#" -v

Publicar mensajes en un topic

Publicar un mensaje es muy parecido a subscribirse:

mosquitto_pub -h 127.0.0.1 -p 1883 -t "casa/cocina/nevera" -m "{ temp: 30 }"

Aplicación Python para subscribirse a un topic

Tal como se ve en el vídeo para crear una aplicación Python utilizaremos la librería ‘paho-mqtt’ que instalaremos usando ‘pip’:

pip install --user paho-mqtt

Y esta es la aplicación:

import ssl
import sys

import paho.mqtt.client

def on_connect(client, userdata, flags, rc):
	print('connected (%s)' % client._client_id)
	client.subscribe(topic='casa/cocina/nevera', qos=2)

def on_message(client, userdata, message):
	print('------------------------------')
	print('topic: %s' % message.topic)
	print('payload: %s' % message.payload)
	print('qos: %d' % message.qos)

def main():
	client = paho.mqtt.client.Client(client_id='albert-subs', clean_session=False)
	client.on_connect = on_connect
	client.on_message = on_message
	client.connect(host='127.0.0.1', port=1883)
	client.loop_forever()

if __name__ == '__main__':
	main()

sys.exit(0)

Creo que no me dejo nada, como siempre, por favor, si os ha gustado ‘like’, ‘comentar’ y ‘compartir’ que es la mejor manera para que estos vídeo lleguen a cuanta mas gente mejor.

MQTT + Mosquitto + IoT

MQTT + Mosquitto + IoT

Si te ha servido, por favor comparte
 

Leave a Reply