Este tema describe cómo utilizar MQTT.fx en una computadora con Windows para simular un dispositivo de puerta de enlace en la nube MQTT, conectarlo a IoT Platform y reportar datos.
Requisitos previos
Purchase an Enterprise Edition instance. Este tutorial utiliza una instancia Exclusive Enterprise Edition en la región China (Shanghai).
-
Descargue e instale el software MQTT.fx. Para obtener instrucciones, consulte MQTT.fx.
Dado que el software de terceros se actualiza con regularidad, su interfaz de usuario podría ser diferente.
-
Genere un certificado personalizado.
Este tutorial requiere un certificado personalizado que incluya un certificado raíz (
root-ca.crt), una clave privada del lado del servidor (server.key) y un certificado de servidor (server.crt).Puede utilizar OpenSSL para generar el certificado. Para obtener más información, consulte Generate a custom certificate.
Contexto
MQTT.fx es un cliente MQTT basado en Eclipse Paho y escrito en Java. Es compatible con Windows, macOS y Linux. Puede utilizar MQTT.fx para comprobar que un dispositivo puede conectarse a IoT Platform y comunicarse mediante temas.
Los dispositivos pueden utilizar cualquiera de los métodos con funciones como certificados personalizados, autenticación del lado del servidor y temas personalizados para conectarse y comunicarse con IoT Platform.
Para obtener más información sobre la autenticación y comunicación de dispositivos para una puerta de enlace en la nube MQTT, consulte Overview of MQTT cloud gateways.
Conexión de un dispositivo mediante MQTT.fx (verificación unilateral)
Paso 1: Crear una puerta de enlace en la nube y un dispositivo
-
Create an MQTT cloud gateway. Al configurar la puerta de enlace, utilice el contenido del archivo
server.keypara el parámetro CA certificate file y el contenido del archivoserver.crtpara el parámetro Server Certificate.Configure los demás parámetros de la siguiente manera: seleccione MQTT para Protocol, mantenga el valor predeterminado de 1883 para Custom Port Number, seleccione one-party verification para Authentication Type, seleccione No para Enable Data Parsing, seleccione No para Enable Device X.509 Certificate Authentication y seleccione Do not enable para Enable OCSP.
-
En la lista de puertas de enlace en la nube, copie y guarde la Gateway URL.
La lista de puertas de enlace en la nube muestra información como el nombre de la puerta de enlace, el protocolo, la Gateway URL y el estado.
Add devices in batches. Para este tutorial, agregue un dispositivo. Establezca MQTT Username en
device_01y MQTT Password enhello123.
Paso 2: Configurar la conexión de MQTT.fx
Abra el software MQTT.fx. En la barra de menús, haga clic en Extras y seleccione Edit Connection Profiles.
-
En la página Edit Connection Profiles, configure los siguientes parámetros.
-
Establezca la información básica. Utilice los valores predeterminados para los demás parámetros.
Parámetro
Descripción
Profile Name
Introduzca un nombre personalizado.
Profile Type
Para el tipo de conexión, seleccione MQTT Broker.
Broker Address
Introduzca el nombre de dominio de la Gateway URL que guardó.
Broker Port
Establézcalo en el número de puerto personalizado. El valor predeterminado es
1883.Client ID
Opcional. Un ID de cliente personalizado de hasta 64 caracteres. Para facilitar la identificación, utilice la dirección MAC o el número de serie (SN) del dispositivo.
-
Haga clic en User Credentials, seleccione la casilla Use Username/Password y configure User Name y Password.
El User Name y la Password deben coincidir con el MQTT Username y la MQTT Password del dispositivo que agregó.
Haga clic en SSL/TLS, seleccione la casilla Enable SSL/TLS y establezca Protocol en TLSv1.2.
Seleccione CA certificate file y, a continuación, seleccione la ruta a su archivo
root-ca.crt.
-
Después de configurar los parámetros, haga clic en OK.
-
Haga clic en Connect.
Una luz verde a la derecha indica que la conexión fue exitosa. En la consola de IoT Platform, vaya a la página Devices > Devices de su instancia. El estado del dispositivo
device_01es online.
Conexión de un dispositivo mediante MQTT.fx (verificación de terceros)
Paso 1: Crear una función de autenticación de dispositivo
Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, haga clic en Services & Functions.
En la barra de navegación superior, seleccione la región China (Shanghai). En la página Services, haga clic en Create Service.
En el panel Create Service, introduzca un Service Name, como IoT_Service, y luego haga clic en OK.
En la página Functions, haga clic en Create Function.
-
En la página Create Function, configure los siguientes parámetros y haga clic en Create.
Seleccione Create with Built-in Runtime como método de creación. Para Function Name, introduzca
three_party_auth. Para Request Handler Type, seleccione Event Handler. Para Runtime, seleccione Python 3.6. -
En la página Function Details, reemplace el código de ejemplo con el siguiente código y haga clic en Deploy Code.
La función de autenticación devuelve el UserName como el deviceName.
# -*- coding: utf-8 -*- import logging import json import time import enum import random import string class Request: def __init__(self, json_str): self.clientId = None self.username = None self.password = None self.certificateCommonName = None for key, value in json.loads(json_str).items(): setattr(self, key, value) class Response: def __init__(self): self.deviceName = None self.result = 'true' self.message = 'success' def handler(self, request): # Verify the validity of the username and password based on your business requirements. self.deviceName = request.username return json.dumps(self.__dict__) def handler(event, context): request = Request(event) return Response().handler(request)
Paso 2: Crear una puerta de enlace en la nube MQTT
-
Create an MQTT cloud gateway. Al configurar la puerta de enlace, utilice el contenido del archivo
server.keypara el parámetro Server-side Private Key y el contenido del archivoserver.crtpara el parámetro Server Certificate. Para el servicio y la función de autenticación de dispositivos de Function Compute (FC), seleccione IoT_Service y three_part_auth que creó anteriormente.Configure los demás parámetros de la siguiente manera: establezca Protocol en MQTT, mantenga el valor predeterminado de Custom Port Number en 1883, establezca Authentication Type en Third-party Verification, establezca Enable Data Parsing en No, establezca Enable Device X.509 Certificate Authentication en No, establezca Enable OCSP en Disabled y establezca Authorization en AliyunIOTAccessingFCRole.
-
En la lista de puertas de enlace en la nube, copie y guarde la Gateway URL.
La lista de puertas de enlace en la nube muestra información como el nombre de la puerta de enlace, el protocolo, la Gateway URL y el estado.
Paso 3: Configurar la conexión de MQTT.fx
Abra el software MQTT.fx. En la barra de menús, haga clic en Extras y seleccione Edit Connection Profiles.
-
En la página Edit Connection Profiles, configure los siguientes parámetros.
-
Establezca la información básica. Utilice los valores predeterminados para los demás parámetros.
Parámetro
Descripción
Profile Name
Introduzca un nombre personalizado.
Profile Type
Para el tipo de conexión, seleccione MQTT Broker.
Broker Address
Introduzca el nombre de dominio de la Gateway URL que guardó.
Broker Port
Establézcalo en el número de puerto personalizado. El valor predeterminado es
1883.Client ID
Opcional. Un ID de cliente personalizado de hasta 64 caracteres. Para facilitar la identificación, utilice la dirección MAC o el número de serie (SN) del dispositivo.
-
Haga clic en User Credentials, seleccione la casilla Use Username/Password y configure User Name (por ejemplo,
threeParty_device_001) y Password.NotaUser Name: Debe tener entre 4 y 32 caracteres y puede contener letras, dígitos, guiones (-), guiones bajos (_), arrobas (@), puntos (.) y dos puntos (:). El User Name debe ser único dentro del producto.
Password: Debe tener entre 1 y 32 caracteres y puede contener letras, dígitos, guiones (-), guiones bajos (_), arrobas (@), puntos (.) y dos puntos (:).
Haga clic en SSL/TLS, seleccione la casilla Enable SSL/TLS y establezca Protocol en TLSv1.2.
Seleccione CA certificate file y, a continuación, seleccione la ruta a su archivo
root-ca.crt.
-
Después de configurar los parámetros, haga clic en OK.
-
Haga clic en Connect.
Una luz verde a la derecha indica que la conexión fue exitosa. IoT Platform utiliza el deviceName devuelto por la función de autenticación de FC,
threeParty_device_001, como el DeviceName del dispositivo. Luego, la plataforma crea automáticamente el dispositivo, que aparece como online en la página Devices > Devices de la consola de IoT Platform.
Reporte de datos mediante un tema personalizado
En MQTT.fx, haga clic en Publish. En el cuadro de texto Publish, introduzca el tema personalizado:
/home/garden/fountain.En el editor de carga útil, introduzca el contenido del mensaje y haga clic en Publish.
Inicie sesión en la consola de IoT Platform. En su instancia, vaya a la página Maintenance > Log Service para ver los registros de Device-to-Cloud Messages. Para obtener más información, consulte Query cloud-side logs. Haga clic en View para abrir los detalles del mensaje, donde se muestran el Topic, la marca de tiempo y la carga útil.