Dieser Leitfaden führt Sie durch eine einfacheMQTT Clientverwenden. NET undMQTTnetBibliothek. Der Client wird sich mit einem MQTT-Broker verbinden.
Bevor Sie beginnen, stellen Sie sicher, dass folgende installiert und konfiguriert sind:
Dose --version
dotnet hinzufügen paket MQTTnet --version ANHANG
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:
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();
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
warten mqtClient.SubscribeAsync(topisch);
warten mqtClient.DisconnectAsync();
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.