MQTT Client Connectivity mit .Net

Text geknüpft

Einleitung

Dieser Leitfaden führt Sie durch eine einfacheMQTT Clientverwenden. NET undMQTTnetBibliothek. Der Client wird sich mit einem MQTT-Broker verbinden.

Einrichtung und Abhängigkeiten

Bevor Sie beginnen, stellen Sie sicher, dass folgende installiert und konfiguriert sind:

  • . NET SDK(Version 6.0 oder später empfohlen)
    Überprüfen Sie mit:
  • Dose --version

  • Zugang zu einem MQTT Brokerlokal oder remote laufen
  • Fügen Sie MQTTnet Bibliothek zu Ihrem Projekt hinzu
    Navigieren Sie zu Ihrem Projektverzeichnis und führen Sie:
  • dotnet hinzufügen paket MQTTnet --version ANHANG

MQT Verbindung

Dieser Abschnitt umfasst verschiedene Möglichkeiten, eine Verbindung zu einemMQTT Brokermit Python. Stellen Sie sicher, dass Ihr Broker die gewünschte Verbindungsmethode unterstützt (TCP, TLS, WebSocket, etc.) und Sie haben die richtigen Verbindungsparameter:

  • Angemeldet bleiben
  • Hafen
  • Benutzername/Passwort(falls erforderlich)
  • CA Zertifikat(für TLS-Verbindungen)

Basis TCP Verbindung

var Optionen = neue MqtClientOptionenBuilder()
.WithClientId("testClientDotNet4")
.WithTcpServer("localhost", 1883)
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
(STÖHNT)
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
mqtClient.ConnectAsync(Optionen);


Verbindung mit Authentication:

var Optionen = neue MqtClientOptionenBuilder()
.WithClientId("testclient")
.WithTcpServer("localhost", 1883)
.WithCredentials("username", "password") // Benutzername und Passwort
.Build();


Über TLS/SSL verbinden

var Optionen = neue MqtClientOptionenBuilder()
.WithClientId("testcient")
. MitTcpServer(GetHostFrom(AdresseADDRESS), GetPortFromAdresse(ADDRESS)
. MitTls(neue MqtClientOptionenBuilderTlsParameter
(STÖHNT)
UseTls = true,
Zertifikate = neue Liste(), // Optionale Kundenzertifikate hier
Zertifikat Rechtlicher Handler = Kontext =>
(STÖHNT)
// Erkennen Sie den Server
zurück zur Übersicht SslPolicy Fehler == System.Net.Security.SslPolicyErrors. Keine
},
LassenUntrustedCertificates = false, // Nicht ausreichende Zertifikate
IgnorierenCertificate ChainErrors = falsch, // Nicht ignorieren Zertifikatsfehlerketten
IgnorierenZertifikat Fehler = falsch // Nicht ignorieren Zertifikat geht Fehler
})
.Build();

Verbindung über WebSocket

var Optionen = neue MqtClientOptionenBuilder()
.WithClientId("testclient")
. MitWebSocketServer("ws://localhost:10443/mqt") // WebSocket Server URI
.Build();

MQTT Publizieren

var message = new MqttApplicationMessageBuilder()
.WithTopic(topic)
.WithPayload($"Hello, MQTT! Nachrichtennummer {i})
. MitQualityOfServiceLevel(MqtQualityOfServiceLevel.AtLeastOnce)
.WithRetainFlag()
.Build();
warten mqtClient.PublishAsync(message);
Warte auf Task.Delay(1000); // Warte auf 1 Sekunde

MQT Anmeldung

warten mqtClient.SubscribeAsync(topisch);

MQTT Disconnect

warten mqtClient.DisconnectAsync();

Beispiel Client

mit System.Security.Authentication;
mit System. Text:
mit MQTTnet;
mit MQTTnet.Client;
mit MQTTnet.Protocol;
Das Programm
(STÖHNT)
Schwerpunkt Async Task Main(string[] args)
(STÖHNT)
string broker = "localhost";
int port = 1883;
Clients Id = Guid.NewGuid().ToString();
Stringthema = "Sensor/Daten"
// Kostenlose MQTT-Clientfabrik
var factory = new MqttFactory();
// Einnahmen aus MQTT-Client-Instanz
var mqtClient = factory.CreateMqttClient();
// MQTT Client Optionen erstellen
var Optionen = neue MqtClientOptionenBuilder()
. MitTcpServer(Broker, Port) // MQTT Broker Adresse und Port
.WithClientId(client Id)
.WithCleanSession()
.WithCredentials("username", "Passwort")
// .WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500) // wenn Sie mqtt Version 5 verwenden
.Build();
// MQTT-Broker verbinden
var connectErgebnis = warten mqtClient.ConnectAsync(Optionen);
Wenn (connectResult. ErgebnisCode == MqttClientConnectResultCode.Success)
(STÖHNT)
Console.WriteLine("Connected to MQTT Broker erfolgreich.");
// Abonnieren eines Themas
Warten Sie mqtClient. SubscribeAsync(topic);
// Rückruffunktion, wenn eine Nachricht wird
mqtClient.ApplicationMessageReceivedAsync += e =>
(STÖHNT)
Console.WriteLine($"Received message: {Encoding.UTF8.GetString(e.ApplicationMessage.PayloadSegment)}");
zurück zur Übersicht In den Warenkorb
};
var message = neu MqttApplicationMessageBuilder()
.WithTopic(topic)
.WithPayload($"Hello, MQTT!")
. MitQualityOfServiceLevel(MqtQualityOfServiceLevel.AtLeastOnce)
.WithRetainFlag()
.Build();
Console.WriteLine($"Veröffentlichungsnachricht: {Encoding.UTF8.GetString(message.PayloadSegment)}");
Warten Sie mqtClient. PublishAsync(message);
Warte auf Task.Delay(1000); // Warte auf 1 Sekunde
Englische Sprache
Warten Sie mqtClient. Abonnieren vonAsync(topic);
mqtClient.DisconnectAsync();
}
andere
(STÖHNT)
Console.WriteLine($"Failed to connect to MQTT broker: {connectResult.ResultCode}");
}
}
}

: Sie den folgenden Befehl aus, um das Programm erfordert.

Das ist nicht möglich.

Scale .NET IoT Solutions Effortless!

Hochleistungs-, Low-Latency-Messaging
für missionskritische Apps

Verbinden Sie Ihren .NET-Client mit unserem MQTT-Broker, um großformatige IoT-Projekte mit Zuverlässigkeit und Sicherheit zu betreiben.