Utilice MQTT.fx en Windows para simular un dispositivo que se conecta a Alibaba Cloud IoT Platform y pruebe las funciones principales de mensajería.
Requisitos previos
-
Debe haber creado un producto y un dispositivo, y obtenido los parámetros de conexión MQTT. Consulte Create products and devices y Obtain MQTT connection parameters.
La siguiente tabla muestra el certificado del dispositivo y los parámetros de conexión MQTT utilizados en este ejemplo. Para obtener más información sobre los parámetros, consulte MQTT-TLS connection.
Parámetro
Valor
ProductKey
a1***DeviceName
device1DeviceSecret
f35***d9eclientId
`a1***.device1securemode=2,signmethod=hmacsha256,timestamp=2524608000000
`
username
device1&a1***passwd
86761***21dmqttHostUrl
a1***.iot-as-mqtt.cn-shanghai.aliyuncs.comport
1883 -
Se han definido propiedades en el modelo TSL para probar la mensajería ascendente y descendente mediante temas de comunicación TSL. Consulte Define a TSL model for a product.
Este ejemplo define las siguientes propiedades:
LightCurrent(corriente de operación, tipo float, rango 0–9) yLightSwitch(interruptor de luz principal, tipo booleano, 1 = encendido, 0 = apagado).
Un dispositivo simulado con MQTT.fx solo puede utilizar datos sin paso directo. Para probar datos con paso directo, utilice un dispositivo físico o un SDK.
Configurar la conexión de MQTT.fx
-
Descargue e instale MQTT.fx. Para consultar las instrucciones de instalación y uso, visite MQTT.fx.
Este tema utiliza mqttfx-5.2.0-windows-x64 como ejemplo. La interfaz de usuario puede variar según las actualizaciones de versión.
NotaDebe solicitar una licencia para utilizar la herramienta MQTT.fx.
Abra el software MQTT.fx, haga clic en Extras en la barra de menús y seleccione Edit Connection Profiles.
-
En la página Edit Connection Profiles, configure los siguientes parámetros.
-
Configure la información básica.
Parámetro
Descripción
Profile Name
Introduzca un nombre personalizado, por ejemplo iot connection.
Profile Type
Seleccione MQTT Broker.
Broker Address
El endpoint de conexión MQTT. Utilice el valor mqttHostUrl de la sección Requisitos previos: a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com.
-
a1*** es el ProductKey del producto.
-
cn-shanghai es el ID de región.
Introduzca únicamente el nombre de dominio. No incluya el número de puerto.
Broker Port
Establezca el valor en 1883.
Client ID
Campo del protocolo MQTT.
Formato:
${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|.Introduzca el valor clientId de la sección Requisitos previos: a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|.
Descripción de parámetros:
-
${ClientId}: El ID de cliente para un dispositivo, aplicación o cliente web.
ImportanteDebe ser personalizado y tener una longitud máxima de 64 caracteres. Para dispositivos, utilice la dirección MAC o el número de serie (SN).
-
${Mode}: Modo de seguridad. Establezca el valor en 2 para TLS directo (requiere configuración de SSL/TLS) o en 3 para TCP directo (no requiere configuración de SSL/TLS).
-
${SignMethod}: Algoritmo de firma. Valores compatibles: hmacsha256, hmacmd5 y hmacsha1.
-
${timestamp}: Hora actual en milisegundos. El parámetro timestamp es opcional.
De forma predeterminada, IoT Platform establece ${ClientId} en
${ProductKey}.${DeviceName}, ${Mode} en 2 y ${SignMethod} en hmacsha256. Modifique estos valores según sea necesario.Importante-
No confunda el campo Client ID de MQTT.fx con el valor ${ClientId} del dispositivo.
-
No omita las barras verticales (|) entre los parámetros ni al final de la cadena.
-
Asegúrese de que los valores de los parámetros no tengan espacios al inicio ni al final.
-
Después de introducir la información del Client ID, no haga clic en Generate.
General
En este ejemplo se utiliza la configuración predeterminada. Modifíquela según su escenario.
-
-
Haga clic en User Credentials, seleccione la casilla Use Username/Password y configure User Name y Password.
Parámetro
Descripción
User Name
El nombre de usuario se compone del DeviceName del dispositivo, un signo et (&) y el ProductKey del producto, con el formato
${DeviceName}&${ProductKey}.Introduzca el valor username de la sección Requisitos previos: device1&a1***.
-
device1es el DeviceName del dispositivo. -
a1***es el ProductKey del producto.
Password
La contraseña se genera al cifrar los parámetros concatenados con el DeviceSecret como clave, mediante el algoritmo de firma seleccionado.
Introduzca el valor passwd de la sección Requisitos previos: 86761***21d.
Importante-
En algunas versiones de MQTT.fx, la contraseña se oculta después de pegarla. Si el cursor se mueve al final, significa que se pegó correctamente. No vuelva a pegar el contenido.
-
Los parámetros y sus valores distinguen entre mayúsculas y minúsculas.
-
Si modificó ${ClientId} o ${SignMethod} en el Client ID, asegúrese de que los valores de la firma coincidan con los del Client ID y vuelva a calcular la contraseña. Consulte Calculate the password by using a Node.js script.
-
-
Para una conexión TLS directa (securemode=2), haga clic en SSL/TLS, seleccione Enable SSL/TLS y establezca Protocol en TLSv1.2.
ImportantePara una conexión TCP directa (
securemode=3), no es necesario configurar los ajustes de SSL/TLS. Continúe con el siguiente paso.
-
Haga clic en OK en la esquina inferior derecha.
-
Haga clic en Connect.
Un indicador verde confirma que la conexión a IoT Platform se estableció correctamente.
Compruebe el estado del dispositivo en la consola de IoT Platform. En su instancia, vaya a , seleccione el producto y confirme que el estado del dispositivo es Online.
Las siguientes secciones prueban la mensajería ascendente y descendente mediante temas personalizados y temas de comunicación TSL. Si los resultados difieren, significa que la conexión falló; corrija la configuración basándose en la información de los registros.
Uso de temas personalizados para la comunicación
Para obtener más información sobre los temas personalizados, consulte Use custom topics for communication. Este ejemplo utiliza los temas personalizados predeterminados proporcionados por IoT Platform:
|
Tema |
Permiso |
Descripción |
|
|
publish |
Mensajería ascendente: El dispositivo envía mensajes a IoT Platform en este tema. |
|
|
subscribe |
Mensajería descendente: El dispositivo se suscribe para recibir mensajes de IoT Platform. |
Mensajería ascendente
En MQTT.fx, haga clic en Publish. En el cuadro de texto Publish, introduzca el tema con permiso de publish:
/a1***/device1/user/update/error.-
Introduzca el contenido del mensaje en el editor de texto y haga clic en Publish.
Asegúrese de que QoS esté configurado en QoS 0 y de que el cuerpo del mensaje sea, por ejemplo,
This is a publish test.. -
En la consola de IoT Platform, abra la página Device Log de su instancia y revise los registros de device-to-cloud message. Consulte Query cloud-side running logs.
Haga clic en View para ver una entrada de registro. En el cuadro de diálogo View Details, compruebe que el Topic sea
/a[ProductKey]/device1/user/update/errory que el contenido del mensaje seaThis is a publish test..
Mensajería descendente
En MQTT.fx, haga clic en Subscribe. En el cuadro de texto Subscribe, introduzca el tema con permiso de Subscribe:
/a1***/device1/user/get.-
Haga clic en Subscribe.
Después de la suscripción, el tema aparece en la lista.
En la consola de IoT Platform, vaya a en su instancia.
En la columna Actions del dispositivo, haga clic en View para abrir la página de device details.
Haga clic en la pestaña Topic List. En la columna Actions del tema suscrito, haga clic en Publish Message.
Introduzca un mensaje, como This is a test., y haga clic en OK.
-
Regrese a MQTT.fx para ver el mensaje recibido.
En la pestaña Subscribe, el tema
/a{ProductKey}/device1/user/getrecibe el mensajeThis is a test(QoS 0, decodificado con Plain Text Decoder).
Uso de temas para la comunicación TSL
Para obtener más información sobre los temas de comunicación TSL, consulte What is a topic?. Este ejemplo utiliza los siguientes temas de comunicación TSL:
|
Tema |
Permiso |
Descripción |
|
|
publish |
Mensajería ascendente: El dispositivo utiliza este tema para reportar datos de propiedades a IoT Platform. |
|
|
subscribe |
Mensajería descendente: El dispositivo se suscribe para recibir respuestas después de reportar datos de propiedades. |
|
|
subscribe |
Mensajería descendente: El dispositivo se suscribe para recibir comandos de configuración de propiedades desde IoT Platform. |
Reportar propiedades del dispositivo
En MQTT.fx, haga clic en Subscribe. En el cuadro de texto Subscribe, introduzca el tema con permisos de subscribe:
/sys/a1****/device1/thing/event/property/post_reply.En MQTT.fx, haga clic en Publish y, en el cuadro de texto Publish, introduzca un tema con permiso de publish:
/sys/a1****/device1/thing/event/property/post.-
Introduzca los datos de las propiedades en el editor de texto y haga clic en Publish.
Los datos de las propiedades deben utilizar el formato estándar Alink JSON. Consulte Device reports properties. Este ejemplo reporta las propiedades LightCurrent y LightSwitch. El tema es
/sys/${ProductKey}/device1/thing/event/property/post, con la siguiente carga útil JSON de ejemplo:{"method":"thing.event.property.post","id":"162277852","params":{"LightSwitch":1,"LightCurrent":1.4},"version":"1.0.0"}. En la consola de IoT Platform, vaya a en su instancia.
Haga clic en View en la columna Actions del dispositivo. En la página de device details, haga clic en la pestaña TSL Data para ver los datos reportados.
Establecer propiedades del dispositivo
En MQTT.fx, haga clic en Subscribe. En el cuadro de texto Subscribe, introduzca el tema con permiso de Subscribe:
/sys/a1****/device1/thing/service/property/set.En la consola de IoT Platform, vaya a en su instancia.
Seleccione el dispositivo. En la pestaña Property Debugging, establezca LightSwitch en 0.
Haga clic en Set para enviar el comando.
-
En la pestaña Subscribe de MQTT.fx, consulte el mensaje recibido.
/sys/axxxxx/device1/thing/service/property/set {"method":"thing.service.property.set","id":"2016306076","params":{"LightSwitch":0},"version":"1.0.0"}
Consulta de registros
En la consola de IoT Platform, abra la página Device Log de su instancia para ver los mensajes de registro de ejecución, incluida la hora, el TraceID y el tipo de negocio. Consulte Query cloud-side running logs.
-
En MQTT.fx, haga clic en la pestaña Log para ver los registros de operaciones y errores.
INFO --- MqttFX ClientModel : messageArrived() with topic: /ext/error/axxx0/device1 INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : sucessfully published message test to topic /axxx/device1/user/g INFO --- BrokerConnectorController : onDisconnect INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Cancel script excution. INFO --- ScriptsController : Clear console. INFO --- ScriptsController : Cancel script excution. INFO --- BrokerConnectorController : onConnect INFO --- ScriptsController : Clear console. INFO --- MqttFX ClientModel : MqttClient with ID a1xxx0.device1|securemode=2,signmethod=hmacsha... INFO --- MqttFX ClientModel : session present: false INFO --- SubscribeController : onSubscribe INFO --- MqttFX ClientModel : rebuildMessagesList() INFO --- MqttFX ClientModel : attempt to addRecentSubscriptionTopic INFO --- MqttFX ClientModel : addRecentSubscriptionTopic : de.jensd.mqttfx.entities.Topixxx1 INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /axxx/device1/user/get INFO --- MqttFX ClientModel : sucessfully subscribed to topic /a1xxxSp0/device1/user/get (QoS 0) INFO --- MqttFX ClientModel : messageArrived() with topic: /a1Kucxxx/device1/user/get INFO --- MqttFX ClientModel : messageArrived() added: message #1 to topic '/axxx/device1/user/... INFO --- PublishController : publish INFO --- MqttFX ClientModel : attempt to add PublishTopic INFO --- MqttFX ClientModel : addPublishTopic : /a1xxx/device1/user/update/error INFO --- MqttFX ClientModel : sucessfully published message This is a publish test. to topic /a1Kuc5xxx/device1/user/get
Documentos relacionados
IoT Platform admite el protocolo MQTT, ampliamente utilizado en IoT para entornos con recursos limitados y bajo ancho de banda. Consulte MQTT protocol specifications.
Para conectar un dispositivo a IoT Platform, consulte la device connection guide.
Los temas actúan como intermediarios para la publicación y suscripción de mensajes MQTT. Para conocer los conceptos y definiciones de los temas, consulte What is a topic?.