Mosquitto: Empezando
Cómo empezar con Mosquitto
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero le ofrece un entorno Mosquitto MQTT en la nube totalmente gestionado, diseñado para ofrecer fiabilidad y flexibilidad:
- Tráfico ilimitado de mensajes y transferencias de datos, para que sus flujos de trabajo nunca se vean limitados artificialmente.
- Autenticación ilimitada de dispositivos a través de su propia API externa, facilitando la incorporación y la gestión de accesos.
- ACLs avanzadas para un control detallado sobre topics, usuarios y acciones.
- Un nombre de dominio personalizado con HTTPS integrado para endpoints seguros y con su propia marca (por ejemplo: https://mqtt.su-empresa.com).
- Actualizaciones sin complicaciones: aplique mejoras o parches de seguridad con un solo clic.
- Rendimiento constante y alta seguridad, con cada instancia ejecutándose en una infraestructura privada y dedicada.
Impulse sus proyectos IoT y reduzca la carga operativa. Puede tener una instancia de Mosquitto MQTT cloud hosting segura y lista para producción en solo unos minutos.
Mosquitto es un broker MQTT, que implementa el protocolo MQTT (Message Queuing Telemetry Transport), diseñado específicamente para la comunicación ligera entre dispositivos IoT y servidores.
En Stackhero, Mosquitto está configurado con cifrado TLS y autenticación de usuario para proporcionar un entorno de comunicación seguro.
Puede encontrar ejemplos de código prácticos que muestran cómo utilizar Mosquitto en https://github.com/stackhero-io/mosquittoGettingStarted.
Comprender los temas MQTT
MQTT organiza la comunicación en "temas", que actúan como canales para publicar y suscribirse a datos. Los dispositivos publican mensajes en temas específicos o se suscriben a ellos para recibir actualizaciones relevantes.
Estructura de los temas MQTT
Los temas en MQTT distinguen entre mayúsculas y minúsculas, deben contener caracteres UTF-8 y requieren al menos un carácter. La jerarquía dentro de los temas se define utilizando el carácter de barra (/).
Aquí hay un ejemplo de configuración para dispositivos IoT que recopilan datos de temperatura y humedad, identificados por sus direcciones MAC:
-
Para un dispositivo con dirección MAC
00:00:00:00:00:00:- Temperatura:
devices/00:00:00:00:00:00/temperature - Humedad:
devices/00:00:00:00:00:00/humidity
- Temperatura:
-
Para un dispositivo con dirección MAC
11:11:11:11:11:11:- Temperatura:
devices/11:11:11:11:11:11/temperature - Humedad:
devices/11:11:11:11:11:11/humidity
- Temperatura:
Las aplicaciones pueden suscribirse a un tema específico, como devices/00:00:00:00:00:00/temperature, para recibir datos del dispositivo IoT correspondiente.
Uso de comodines en temas MQTT
MQTT admite comodines para una gestión eficiente de los temas:
-
El comodín
+coincide con un solo nivel en la jerarquía de temas. Por ejemplo, suscribirse adevices/+/temperaturecaptura temas comodevices/1/temperaturepero nodevices/1/2/temperature. -
El comodín
#coincide con múltiples niveles. Por ejemplo,devices/#coincide con temas comodevices/1/temperature,devices/2/humidityydevices/1/2/somethingElse.
Pruebas con mosquitto_pub y mosquitto_sub
Las herramientas CLI mosquitto_pub y mosquitto_sub son excelentes para probar configuraciones MQTT. Antes de usarlas, asegúrese de que la opción "Permitir conexiones no seguras" esté desactivada en su configuración de Mosquitto en el panel de Stackhero.
Aquí se explica cómo probar:
-
Suscríbase a todos los temas utilizando el comodín
#:mosquitto_sub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/#" -
Abra otra terminal para publicar un mensaje en un tema:
mosquitto_pub -L -d "mqtts://admin:<PASSWORD>@<XXXXXX>.stackhero-network.com:<PORT_TLS>/sensor/a" -m "It works"
En la primera consola, debería ver el mensaje publicado junto con los registros de depuración habilitados por la opción -d.
Conexión a MQTT a través de WebSockets
Puede conectarse directamente a su servidor Mosquitto desde un navegador web utilizando WebSockets. Consulte la documentación "WebSockets" para más detalles.
Node.js y MQTT
Ejemplos que demuestran cómo usar Mosquitto con Node.js están disponibles en https://github.com/stackhero-io/mosquittoGettingStarted.
Python y MQTT
Para usar Mosquitto con Python, se recomienda la biblioteca cliente Paho MQTT Python. Instálela usando:
pip install paho-mqtt
A continuación se muestra un ejemplo de script Python para conectarse a un servidor Mosquitto utilizando cifrado TLS y autenticación:
import paho.mqtt.client as mqtt
import random
import string
from paho.mqtt.client import CallbackAPIVersion
def on_connect(client, userdata, flags, reason_code, properties=None):
if reason_code == 0:
print("Connected successfully")
else:
print(f"Connection failed with reason {reason_code}")
def on_message(client, userdata, msg, properties=None):
print(f"Received message: {msg.payload.decode()} on topic {msg.topic}")
def generate_client_id(length=8):
characters = string.ascii_letters + string.digits
return "client_" + ''.join(random.choice(characters) for _ in range(length))
client_id = generate_client_id()
client = mqtt.Client(
client_id=client_id,
callback_api_version=CallbackAPIVersion.VERSION2
)
client.on_connect = on_connect
client.on_message = on_message
host = "<XXXXXX>.stackhero-network.com"
port = <PORT_TLS>
client.username_pw_set("<USER>", "<PASSWORD>")
client.tls_set()
try:
print(f"Connecting to {host} with client ID: {client_id}")
client.connect(host, port)
client.loop_start()
client.subscribe("$SYS/#")
try:
while True:
pass
except KeyboardInterrupt:
print("\nDisconnecting...")
client.loop_stop()
client.disconnect()
except Exception as e:
print(f"Error: {e}")
Con estas instrucciones, debería estar bien equipado para comenzar a trabajar con Mosquitto en Stackhero. ¡Disfrute explorando MQTT!