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.
Antes de comenzar, asegúrate de instalar y configurar los siguientes:
dotnet --versión
dotnet añadir paquete MQTTnet -versión 4.3.6.1152
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:
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();
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
await mqttClient.SubscribeAsync(topic);
await mqttClient.DisconnectAsync();
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