Table of Contents
Server - Install mqtt server docker on rpi5
1.搭建 EMQX MQTT 服务器
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latestbridge - Install HA MQTT Integration
将 EMQX 接入 Home Assistant
安装 MQTT 集成
Client - MqttClient on window10
2.MQTT 客户端開發
安装 MQTT 客户端库
在 .NET 项目中,可以使用 MQTTnet 库来实现 MQTT 客户端。首先,通过 NuGet 安装该库:
dotnet add package MQTTnet编写 MQTT 客户端代码
以下是一个简单的 .NET MQTT 客户端示例:
using System.Text;
using MQTTnet;
using MQTTnet.Client;
class Program
{
static async Task Main(string[] args)
{
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
var options = new MqttClientOptionsBuilder()
.WithClientId("Client1")
.WithTcpServer("MQTT服务地址", 1883)
.WithCredentials("你的客户端登录用户名", "你的密码")
.WithCleanSession()
.Build();
mqttClient.ConnectedAsync += MqttClient_ConnectedAsync;
mqttClient.DisconnectedAsync += MqttClient_DisconnectedAsync;
mqttClient.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync;
await mqttClient.ConnectAsync(options);
await mqttClient.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("home/temperature").Build());
Console.WriteLine("Press any key to send a message...");
Console.ReadLine();
var message = new MqttApplicationMessageBuilder()
.WithTopic("home/temperature")
.WithPayload("23.5")
.WithRetainFlag()
.Build();
await mqttClient.PublishAsync(message);
Console.WriteLine("Message published. Press any key to exit.");
Console.ReadLine();
await mqttClient.DisconnectAsync();
}
private static Task MqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg)
{
Console.WriteLine($"Message received on topic: {arg.ApplicationMessage.Topic}.");
Console.WriteLine($"Payload: {Encoding.UTF8.GetString(arg.ApplicationMessage.Payload)}");
return Task.CompletedTask;
}
private static Task MqttClient_DisconnectedAsync(MqttClientDisconnectedEventArgs arg)
{
Console.WriteLine("Disconnected from EMQX.");
return Task.CompletedTask;
}
private static Task MqttClient_ConnectedAsync(MqttClientConnectedEventArgs arg)
{
Console.WriteLine("Connected to EMQX.");
return Task.CompletedTask;
}
}
https://blog.csdn.net/farway000/article/details/142548023
C# MQTT 5.X 程序包的使用方法(客户端)
https://blog.csdn.net/2302_77255827/article/details/146917078
https://gitee.com/gui_s/mqttserver/blob/master/Form1.cs
