Conectividad cliente MQTT con .Net

Texto copiado

Introducción

Esta guía te lleva a través de la creación de un simpleMQTT clientusando . NET y laMQTTnetbiblioteca. El cliente se conectará a un corredor de MQTT.

Establecimiento de dependencias

Antes de comenzar, asegúrate de instalar y configurar los siguientes:

  • . NET SDK(versión 6.0 o posterior recomendada)
    Compruebe con:
  • dotnet --versión

  • Acceso a un corredor de MQTTcorriendo local o remotamente
  • Añadir la biblioteca MQTTnet a tu proyecto
    Navegue a su directorio de proyecto y ejecute:
  • dotnet añadir paquete MQTTnet -versión 4.3.6.1152

MQTT Conectar

Esta sección cubre varias maneras de conectarse a unMQTT brokerusando Python. Antes de proceder, asegúrese de que su corredor soporta el método de conexión deseado (TCP, TLS, WebSocket, etc.) y tiene los parámetros de conexión correctos:

  • Broker Address
  • Puerto
  • Nombre de usuario/Password(si es necesario)
  • Certificado(para conexiones TLS)

Basic TCP Conexión

var options = nuevo MqtClientOptionsBuilder()
.ConClientId("testClientDotNet4")
.ConTcpServer("localhost", 1883)
.Build();
// Crear cliente MQTT
var factory = nuevo MqttFactory();
var mqttClient = factory.CreateMqtClient();
mqttClient.UseConnectedHandler(async e =
{}
Consola.WriteLine("Connected successfully with MQTT broker.");
});
// Conectarse con el corredor MQTT
await mqttClient.ConnectAsync(options);


Conectarse con la autenticación:

var options = nuevo MqtClientOptionsBuilder()
.ConClientId("testclient")
.ConTcpServer("localhost", 1883)
.ConCredentials("nombre de usuario", "password") // Agregar nombre de usuario y contraseña
.Build();


Conexión sobre TLS/SSL

var options = nuevo MqtClientOptionsBuilder()
.ConClientId("testcient")
. ConTcpServer(GetHostDesdeAddress(ADDRESS), GetPortDesdeAddress(ADDRESS)
.Contls(nuevo) MqttClientOptionsBuilderTlsParameters
{}
UseTls = verdadero,
Certificados = nueva lista(), // Opcionalmente añadir certificados de cliente aquí
Valor de certificado Handler = context =
{}
// Lógica de validación del certificado de servidor personalizado
contexto de retorno. SslPolicy Errores == System.Net.Security.SslPolicyErrors. Ninguna;
}
AllowUntrustedCertificates = false, // No permita certificados no confiables
IgnoreCertificate ChainErrors = falso, // No ignore los errores de cadena de certificados
IgnoreCertificate Revocación Errores = falsos // No ignore errores de revocación de certificados
})
.Build();

Conectar a través de WebSocket

var options = nuevo MqtClientOptionsBuilder()
.ConClientId("testclient")
. ConWebSocketServer("ws://localhost:10443/mqtt") // Use WebSocket server URI
.Build();

MQTT Publish

var mensaje = nuevo MqtApplicationMessageBuilder()
.ConTema(tema)
.ConPayload($"Hola, MQTT! Número de mensaje {i}")
.ConQualityOfServiceLevel(MqtQualityOfServiceLevel.AtLeastOnce)
.ConRetainFlag()
.Build();
await mqttClient.PublishAsync(message);
await Task.Delay(1000); // Espera 1 segundo

MQTT Suscríbete

await mqttClient.SubscribeAsync(topic);

Desconexión MQTT

await mqttClient.DisconnectAsync();

Cliente de muestra

usando System.Security.Authentication;
Uso del sistema. Texto;
utilizar MQTTnet;
utilizar MQTTnet.Client;
MQTTnet.Protocol;
Programa de clases
{}
static async Task Main(string[] args)
{}
corredor de cadena = "localhost";
int port = 1883;
cliente de cuerda Id = Guid.NewGuid().ToString();
Tema de cuerda = "sensor/data";
// Crear una fábrica de clientes MQTT
var factory = nuevo MqttFactory();
// Crear una instancia cliente MQTT
var mqttClient = factory.CreateMqtClient();
// Crear opciones de cliente MQTT
var options = nuevo MqtClientOptionsBuilder()
.ConTcpServer(broker, port) // Dirección de corretaje MQTT y puerto
.ConClientId(cliente Id)
.ConCleanSession()
.ConCredentials("nombre de usuario", "password")
// .ConProtocolVersion(MQTTnet.Formatter.MqtProtocolVersion.V500) //si utiliza la versión de mqtt 5
.Build();
// Conectarse con el corredor MQTT
var connectResult = espera mqttClient.ConnectAsync(opciones);
si (conectar Resultado. ResultadoCode == MqtClientConnectResultCode.Success)
{}
Consola.WriteLine("Connected to MQTT broker successfully.");
// Suscribirse a un tema
espera mqttClient. SubscribeAsync(topic);
// Función de devolución cuando se recibe un mensaje
mqttClient.ApplicationMessageRecibidoAsync += e =
{}
Consola.WriteLine($"Recibido mensaje: {Encoding.UTF8.GetString(e.ApplicationMessage.PayloadSegment)}");
Tareas de retorno. Tareas;
};
var mensaje = nuevo MqtApplicationMessageBuilder()
.ConTema(tema)
.ConPayload($"Hola, MQTT!")
.ConQualityOfServiceLevel(MqtQualityOfServiceLevel.AtLeastOnce)
.ConRetainFlag()
.Build();
Consola.WriteLine($"Publishing message: {Encoding.UTF8.GetString(message.PayloadSegment)}");
espera mqttClient. PublishAsync(message);
await Task.Delay(1000); // Espera 1 segundo
// Describir y desconectar
espera mqttClient. UnsubscribeAsync(topic);
await mqttClient.DisconnectAsync();
}
más
{}
Consola.WriteLine($"Failed to connect to MQTT broker: {connectResult.ResultCode}");
}
}
}

Ejecute el siguiente comando para ejecutar el programa.

dotnet run

Scale .NET IoT Solutions sin esfuerzo!

Mensajería de alto rendimiento y baja latencia
para aplicaciones críticas de la misión

Conecte su cliente .NET a nuestro corredor MQTT para impulsar proyectos IoT a gran escala con fiabilidad y seguridad.