4 Guía MQTT

¿Qué es MQTT?

MQTT es un protocolo de mensajería simple y liviano, diseñado para dispositivos con poca memoria y con bajo ancho de banda. Esto significa que es la solución perfecta para las aplicaciones de Internet de las cosas y automatización del hogar y, por lo general, es más flexible, estable y confiable que otros protocolos como WebSockets. MQTT te permite enviar comandos para controlar salidas digitales, leer y escribir datos en sus dispositivos y más.

Conceptos básicos de MQTT

En MQTT hay 3 conceptos básicos:

Temas (Topics):

Estos funcionan como la dirección de una casa, en este caso son las direcciones de un mensaje y determinan a donde se debe entregar, así es como se vería un tema con su respectivo mensaje:

Topic: MiCasa/Sala/Lampara

Mensaje: Encender

aquí el tema es Micasa/Sala/Lámpara y el mensaje es Encender, en este caso la lámpara recibirá el mensaje y se encenderá. Esta es la estructura básica de todos los mensajes que se envían a través de MQTT

Sistema de Publicación y Subscripción

Cada dispositivo puede suscribirse a temas, y recibirá todos los mensajes enviados con los temas a los que están suscritos. pueden suscribirse a múltiples temas y también a subtemas.

Además, al publicar un mensaje, los dispositivos deben proporcionar el tema para que el mensaje se pueda entregar correctamente.

Un dispositivo que está suscrito a Casa/# recibirá mensajes enviados a Casa/Sala y también aquellos enviados a Casa/CuartoPrincipal con solo usar el signo #.

Broker:

es el dispositivo central que permite y restringe las conexiones y también recibe, filtra, redirige y publica mensajes a todos los dispositivos conectados. En este caso, el Broker es el servidor de Smartnest.

¿MQTT es solo una herramienta para hablar con el servidor?

No, también puedes interconectar tus dispositivos usando este protocolo, por ejemplo, si tienes un sensor de movimiento y un sistema de iluminación, y están demasiado lejos el uno del otro, no necesitas instalar cables en la habitación para permitirles comunicarse, puedes hacer que la luz se suscriba al tema Casa/Dormitorio/Luz y puede hacer que el sensor publique los datos en ese tema, de tal forma estarán conectados entre sí y al mismo tiempo que se conectarán a Smartnet y todas las integraciones.

Smartnest y MQTT

En Smartnest, cada dispositivo tiene una ID único, este ID debe usarse como la primera parte de un tema.

Si se está enviando un mensaje al broker, la primera parte del tema debe ser el ID del dispositivo que está enviando el mensaje.

Si se está enviando el mensaje a otro de sus dispositivos, la primera parte del tema debería ser el ID del dispositivo al que envía el mensaje, el usuario puede personalizar las siguientes partes del tema.

Por ejemplo, este sería un tema válido desde dispositivo para Smartnest Broker:

Tema: jasds3421FDC1CDSCDSfdsas/Habitacion/Temperatura

mensaje:25

Mientras que este sería un mensaje inválido

Tema: Bedroom/Temperature

mensaje:25

El sistema solo permitirá la publicación de un mensaje si el ID es válido y pertenece al usuario que lo envía

Comandos MQTT de Smartnest

Hay algunos subtemas reservados para fines especiales. Aquí está la lista de todos los temas reservados:

Directivas:

Las directivas son enviadas desde el servidor al dispositivo cada vez que hay un nuevo comando de alguna de las integraciones.

Topic

Mensaje

Descripción

Soportado por

DeviceID/directive/powerState

ON - OFF

Encendido o apagado

Todos

DeviceID/directive/percentage

0-100

Porcentaje

Luz

DeviceID/directive/serpoint

-100 - 200

Punto deseado de temperatura

Termostato

DeviceID/directive/lockedState

true - false

true significa cerrar la cerradura

Cerradura

Reportes

Los reportes son enviados desde el dispositivo al servidor para informar de algún cambio de estado. Estos reportes son enviados siempre después de recibir una directiva y también si se produce algún cambio debido a una interacción física como presionar un botón.

Topic

Message

Description

Supported types

DeviceID/report/powerState

ON - OFF

Nuevo estado de poder

Todos

DeviceID/report/percentage

0-100

Nuevo porcentaje

Luz

DeviceID/report/serpoint

-100 - 200

Nuevo punto deseado

Termostato

DeviceID/report/temperature

-100 - 200

Nueva temperatura

Termostato,

Sensor de Temperatura

DeviceID/report/scale

C - F

Seleccionar la escala de T

Termostato,

Sensor de Temperatura

DeviceID/report/lockedState

true - false

Disp. abierto o cerrado

Cerradura

DeviceID/report/online

true - false

El disp. está conectado

Todos

DeviceID/report/info

(Any)

Para mostrar en la aplicación

Web

Todos

DeviceID/report/detectionState

true - false

Nuevo valor lógico

Sensor de Presencia ,

Sensor Contacto

DeviceID/report/notification

(Any)

Envía una notificación push

Todos

Solicitudes y respuestas

Las solicitudes son enviadas desde los dispositivos al servidor para solicitar información especial como la hora, el servidor responderá con un topic response y la información requerida en el mensaje.

Topic

Message

Description

DeviceID/request/time

GMT+XX

Obtener el tiempo real, el mensaje puede tener opcionalmente la zona horaria "GMT+XX", si la zona horaria no está presente en el mensaje se enviará la hora de GMT+00

DeviceID/response/time

HH:MM:SS

Responde la solicitud de hora.

Reglas en MQTT en Smartnest

En Smartnest somos una comunidad de automatización del hogar y todos estamos utilizando los mismos recursos web, de tal modo que deben existir reglas para garantizar un servicio continuo, seguro y confiable. Estas son las reglas que todos deben seguir al usar comandos MQTT:

  • La conexión al broker solo se permitirá cuando se proporcione un nombre de usuario y contraseña válidos

  • La conexión se permitirá cuando la ID del dispositivo utilizado pertenezca al nombre de usuario utilizado

  • La primera parte del topic MQTT debe ser un ID válido de uno de los dispositivos del usuario utilizado

  • Se debe evitar enviar mensajes a los temas reservados con demasiada frecuencia y se debe enviar sólo cuando el estado del dispositivo ha cambiado.

los dispositivos que no sigan estas reglas se desconectan y bloquean automáticamente por el sistema, el primer bloqueo es por 1 minuto, el segundo es por 2 minutos el tercero por 4 y así sucesivamente.