private async Task PublishMessage(IManagedMqttClient mqttClient, string topic, string payload, bool retain, MqttQualityOfServiceLevel qos) { var message = new MqttApplicationMessageBuilder().WithTopic(topic) .WithPayload(payload) .WithRetainFlag(retain) .WithQualityOfServiceLevel(qos) .Build(); _logger.LogDebug("MQTT sending to {Topic}: {Message}", message.Topic, message.ConvertPayloadToString()); try { var publishResult = await mqttClient.PublishAsync(message, CancellationToken.None).ConfigureAwait(false); if (publishResult.ReasonCode != MqttClientPublishReasonCode.Success) { throw new MqttPublishException(publishResult.ReasonString); } } catch (Exception e) { _logger.LogError(e.Message, e); throw new MqttPublishException(e.Message, e); } }
private static void Main(string[] args) { Console.WriteLine("Hello World!"); MQTTnet.MqttFactory factory = new MQTTnet.MqttFactory(); var client = factory.CreateMqttClient(); var options = new MqttClientOptionsBuilder() .WithClientId(Guid.NewGuid().ToString()) .WithTcpServer("localhost") .WithCredentials("3cb97cd31fbc40b08d12ec47a6fad622")//token .Build(); Task.Run(async() => { await client.ConnectAsync(options); do { var message = new MqttApplicationMessageBuilder() .WithTopic("/devices/me/telemetry") .WithPayload(JsonConvert.SerializeObject(new { RandomString = Guid.NewGuid().ToString(), NowTime = DateTime.Now })) .Build(); Console.WriteLine(message.ConvertPayloadToString()); await client.PublishAsync(message); await Task.Delay(TimeSpan.FromSeconds(10)); } while (Console.ReadKey().Key != ConsoleKey.Escape); await client.DisconnectAsync(); }).Wait(); }
/// <summary> /// Отправить сообщение на изменение цвета /// </summary> /// <param name="client"></param> /// <param name="colorTopic"></param> /// <param name="targetColor"></param> /// <returns></returns> private static Task <MQTTnet.Client.Publishing.MqttClientPublishResult> PublishSetColorMessage(IMqttClient client, string colorTopic, string targetColor) { var msg = new MqttApplicationMessageBuilder() .WithTopic(colorTopic + "/set") .WithPayload(targetColor) .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce) .Build(); mqttLog.Debug($"> Sending message: {msg.Topic}, {msg.ConvertPayloadToString()}"); return(client.PublishAsync(msg)); }
public static async Task test() { var factory = new MqttFactory(); var client = factory.CreateMqttClient(); var options = new MqttClientOptionsBuilder() .WithClientId(Guid.NewGuid().ToString()) .WithTcpServer("localhost", 1886) .WithCredentials("cubox", "cubox0000") .Build(); await client.ConnectAsync(options); var payload = new { Address = "1.0.0", Gateway = "1.0.1", Netmask = "1.1.1" }; var message = new MqttApplicationMessageBuilder() .WithTopic("setting/response") .WithPayload(JsonConvert.SerializeObject(payload)) .WithExactlyOnceQoS() .Build(); await client.PublishAsync(message); Console.WriteLine(">>> Topic : " + message.Topic + " Payload Value: " + message.ConvertPayloadToString()); //Thread.Sleep(30000); /*while (true) * { * var payload = new * { * Address = "1.0.0", * Gateway = "1.0.1", * Netmask = "1.1.1" * }; * * var message = new MqttApplicationMessageBuilder() * .WithTopic("setting/request") * .WithExactlyOnceQoS() * .Build(); * * await client.PublishAsync(message); * * Console.WriteLine(">>> Topic : " + message.Topic + " Payload Value: " + message.ConvertPayloadToString()); * * Thread.Sleep(30000); * }*/ }
private static void Main(string[] args) { Console.WriteLine("Hello World!"); MQTTnet.MqttFactory factory = new MQTTnet.MqttFactory(); var client = factory.CreateMqttClient(); var options = new MqttClientOptionsBuilder() .WithClientId(Guid.NewGuid().ToString()) .WithTcpServer("localhost") .WithCredentials("3cb97cd31fbc40b08d12ec47a6fad622", "")//token .Build(); client.UseApplicationMessageReceivedHandler(ax => { Console.WriteLine($"ClientId{ ax.ClientId},msg={ax.ApplicationMessage.ConvertPayloadToString()}"); }); Task.Run(async() => { await client.ConnectAsync(options); do { var message = new MqttApplicationMessageBuilder() .WithTopic("/devices/me/telemetry") .WithPayload(JsonConvert.SerializeObject(new { RandomString = Guid.NewGuid().ToString(), NowTime = DateTime.Now })) .Build(); Console.WriteLine(message.ConvertPayloadToString()); await client.PublishAsync(message); await Task.Delay(TimeSpan.FromSeconds(10)); await client.SubscribeAsync("/devices/me/attributes/response/+"); await client.PublishAsync("/devices/me/attributes/request/1", "{\"anySide\":\"Doublevalue,longvalue,Doublevalue,longvalue\"}"); } while (Console.ReadKey().Key != ConsoleKey.Escape); await client.DisconnectAsync(); }).Wait(); }