Message Queue Telemetry Transport (MQTT)
es un protocolo de conectividad abierto Machine-to-Machine (M2M) que permite
enviar datos estilo telemetría como mensajes a través de redes de alta latencia
o con restricciones.
Está diseñado para ser una mensajería
Publish-Suscribe muy ligera, es muy útil para conexiones donde es importante no
consumir mucho ancho de banda La arquitectura de MQTT sigue una topología de
estrella, con un nodo central que hace de servidor o “broker” con una capacidad
de hasta 10000 clientes. El broker es el encargado de gestionar la red y de
transmitir los mensajes, para mantener activo el canal, los clientes mandan
periódicamente un paquete (PINGREQ) y esperan la respuesta del broker
(PINGRESP). La comunicación puede ser cifrada entre otras muchas opciones.
La comunicación se basa en unos “topics”
(temas), que el cliente que publica el mensaje crea y los nodos que deseen
recibirlo deben subscribirse a él. La comunicación puede ser de uno a uno, o de
uno a muchos.
Un “topic” se representa mediante una
cadena y tiene una estructura jerárquica. Cada jerarquía se separa con ‘/’. Por
ejemplo, “/controlador/plazas/plaza1/ocupada”. De esta forma se pueden crear
jerarquías de clientes que publican y reciben datos.
De esta forma un nodo puede subscribirse
a un tema concreto “/controlador/plazas/plaza1/ocupada” o a
varios “/controlador/plazas/#”.
MQTT permite dos tipos diferentes de
comunicación:
1) A nivel de IP que será el caso que se utilice en este proyecto, la
comunicación se realizará entre el controlador a través de Ethernet y la
Raspberry Pi, que será el servidor MQTT
2) A nivel de sensor con MQTT-SN, donde
en un futuro se podría utilizar con
El primer paso sería instalar el servidor
en la Raspberry PI con:
sudo
apt-get install mosquitto && sudo apt-get install mosquitto-clients
Como el controlador recoge los valores de
las plazas, solo será necesario incluir la librería de MQTT para Arduino y
utilizarla.
No hay comentarios:
Publicar un comentario