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