Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
        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);
             * }*/
        }
Beispiel #5
0
        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();
        }