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)