MQTT client med C#

Eg prøver meg på ein client med c# -er det andre som har prøvd seg på det? Anbefalinger og tips til api’er/nugets for dette?

Har sjølv prøvd litt på MQTTnet, men den tryner på connection, så kjem ikkje heilt i gang. (Klona git repository og debugga til det smeller, men får unspesified error)

Eg har gravd og funne fram til noko sjølv, så eg besvarer mitt eget spørsmål sjølv i tilfelle andre lurer på det samme:

Ved å installere eks. nuget-package M2Mqtt kan du starte med dette kodeeksempelet:

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using System.Text.Json;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;

public class MyMqttClient
{
private const string Username = “”;
private const string Password = “”;

public void Run()
{
    try
    {
        MqttClient client = new MqttClient("<din FH ip-addresse>", 1884, false, null, null, MqttSslProtocols.None);

        client.Connect(Guid.NewGuid().ToString(), Username, Password);

        client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;

        string[] SubscribeToTopics = new[] { "<topic>", "<topic>", "<topic etc>" };

        client.Subscribe(SubscribeToTopics, new byte[SubscribeToTopics.Length]);

        //Publish message a message
        string jsonmessage = "<din json-melding her>";
        ushort messageId = client.Publish("<topic>", Encoding.UTF8.GetBytes(jsonmessage));
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

private void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
    var jsonElement = JsonSerializer.Deserialize<JsonElement>(Encoding.UTF8.GetString(e.Message));
    var prettyJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions() { WriteIndented = true });

    //"prettyJson" inneholder meldingen som mottas, basert på det/de topics som klienten abbonerer på.
}

}

1 Like