Mosquitto: Empezando
Cómo empezar con Mosquitto
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución Mosquitto MQTT cloud lista para usar que proporciona una serie de beneficios, incluyendo:
- Intercambios y transferencias de mensajes ilimitados.
- Autenticación de dispositivos ilimitada a través de una API externa.
- ACLs avanzadas en temas, usuarios y acciones.
- Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://mqtt.su-empresa.com).
- Actualizaciones sin esfuerzo con solo un clic.
- Rendimiento óptimo y seguridad robusta impulsados por una VM privada y dedicada.
Ahorre tiempo y simplifique su vida: ¡solo toma 5 minutos probar la solución de Mosquitto MQTT cloud hosting de Stackhero!
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!