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/setpoint | -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/setpoint | -100 - 200 | Nuevo punto deseado | Termostato |
DeviceID/report/temperature | -100 - 200 | Nueva temperatura | Termostato, Sensor de Temperatura |
DeviceID/report/humidity | 0 - 100 | Nueva humedad | Termostato, Sensor de Temperatura |
DeviceID/report/pressure | >0 | Nueva presión | 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.
Última actualización