DEV Community

Daniel Olivares
Daniel Olivares

Posted on • Edited on

Did you know you can subscribe to an MQTT broker with C# in under 10 lines?

We always see Python or Node.js examples in IoT, but C# is just as easy, robust, and secure. In this quick tutorial we will:

  1. Connect our .NET client to a public broker, like: HiveMQ.
  2. Subscribe to a topic: iot/door/status.
  3. Display incoming messages in the console.

What you need

  • .NET 8 SDK
  • The MQTTnet library
  • A public MQTT broker (broker.hivemq.com:1883)
  • And a willingness to automate and experiment!

Example code

using MQTTnet; using MQTTnet.Client; using MQTTnet.Client.Options; using System; using System.Text; using System.Threading.Tasks; class Program { static async Task Main() { // 1. Configure client options var options = new MqttClientOptionsBuilder() .WithTcpServer("broker.hivemq.com", 1883) .WithClientId("dotnet-iot-demo") .Build(); // 2. Create the client and define handlers var factory = new MqttFactory(); var client = factory.CreateMqttClient(); client.UseConnectedHandler(async _ => { Console.WriteLine("Connected to HiveMQ"); await client.SubscribeAsync("iot/door/status"); Console.WriteLine("Subscribed to: iot/door/status"); }); client.UseApplicationMessageReceivedHandler(e => { var payload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); Console.WriteLine($"Message received: {payload}"); // Here you could, for example: // • Log the event to your database // • Trigger an email or SMS alert // • Send the data to a web dashboard }); // 3. Connect and wait for messages await client.ConnectAsync(options); Console.WriteLine("Press ENTER to exit..."); Console.ReadLine(); } } 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)