Exemplo n.º 1
0
 /// <summary>
 /// Publish a message to the specified topic.
 /// </summary>
 /// <param name="topic">Topic name.</param>
 /// <param name="message">Message text.</param>
 public MqttClientHelper Publish(string topic, string message)
 {
     lock (mqttSyncLock)
     {
         mqttClient.PublishMessage <string, AsciiPayloadConverter>(topic, (MqttQos)1, message);
     }
     return(this);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Publish message to the specified topic.
        /// </summary>
        /// <param name="topic">The topic.</param>
        /// <param name="qos">The qos.</param>
        /// <param name="data">The message.</param>
        public void Publish(string topic, byte qos, string data)
        {
            if (client == null)
            {
                throw new InvalidOperationException("You must connect before you can subscribe to a topic.");
            }

            client.PublishMessage <string, AsciiPayloadConverter>(topic, (MqttQos)qos, data);
        }
Exemplo n.º 3
0
        static void SenseHatEnvironmentMqtt()
        {
            var clientId = "StrubT";

            var centerGuid      = "F386-09CA-1F9F-9A1F-BAD3-F573-64A0-2A22";
            var combinedGuid    = "B156D76BA28A425FB1626D1D9207BB4C";
            var temperatureGuid = "31B0E939B27C45229CB75A06B1E47919";
            var humidityGuid    = "EB5E6260F83E4118A919C226CAC1E82B";
            var pressureGuid    = "CF8EB59A961B4C58A075A822485708FB";

            var topicNames = new Dictionary <string, string> {
                [combinedGuid]    = "Environment",
                [temperatureGuid] = "Temperature (°C)",
                [humidityGuid]    = "Humidity (% rel)",
                [pressureGuid]    = "Pressure (mbar)"
            };

            var combinedTopic = $"siot/DAT/{centerGuid}/{combinedGuid}";
            //var combinedTopicTrigger = $"siot/TRG/{centerGuid}/{combinedGuid}";
            //var combinedTopicCommand = $"siot/CMD/{centerGuid}/{combinedGuid}";
            //var combinedTopicStatus = $"siot/STA/{centerGuid}/{combinedGuid}";

            var temperatureTopic = $"siot/DAT/{centerGuid}/{temperatureGuid}";
            var humidityTopic    = $"siot/DAT/{centerGuid}/{humidityGuid}";
            var pressureTopic    = $"siot/DAT/{centerGuid}/{pressureGuid}";

            using (var client = new MqttClient("siot.net", clientId)) {
                client.MessageAvailable += (sender, e) => Console.WriteLine($"{topicNames[e.Topic.Split('/').Last()],-20}: {e.Message:#,##0.00}");

                client.Connect();

                client.Subscribe <SenseHatEnvironment.MqttConverter>(combinedTopic, MqttQos.AtLeastOnce);
                client.Subscribe <Mqtt.DoubleConverter>(temperatureTopic, MqttQos.AtLeastOnce);
                client.Subscribe <Mqtt.DoubleConverter>(humidityTopic, MqttQos.AtLeastOnce);
                client.Subscribe <Mqtt.DoubleConverter>(pressureTopic, MqttQos.AtLeastOnce);

                Console.ReadLine();

                var r = new Random();
                for (var i = 0; i < 5; i++)
                {
                    var data = new SenseHatEnvironment {
                        Temperature = r.NextDouble() * 20 + 20, Humidity = r.NextDouble() * 20 + 20, Pressure = 1000 + (r.NextDouble() - 0.5) * 100
                    };
                    client.PublishMessage <SenseHatEnvironment.MqttConverter>(combinedTopic, data);
                    client.PublishMessage <Mqtt.DoubleConverter>(temperatureTopic, data.Temperature);
                    client.PublishMessage <Mqtt.DoubleConverter>(humidityTopic, data.Humidity);
                    client.PublishMessage <Mqtt.DoubleConverter>(pressureTopic, data.Pressure);
                }

                Thread.Sleep(250);
            }
        }
Exemplo n.º 4
0
        private void button3_Click(object sender, EventArgs e)
        {
            OperateResult send = mqttClient.PublishMessage(new MqttApplicationMessage( )
            {
                QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce,
                Topic   = textBox5.Text,
                Payload = Encoding.UTF8.GetBytes(textBox4.Text)
            });

            if (!send.IsSuccess)
            {
                MessageBox.Show("Send Failed:" + send.Message);
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            // 最多一次
            OperateResult send = mqttClient.PublishMessage(new MqttApplicationMessage( )
            {
                QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce,
                Topic   = textBox5.Text,
                Payload = Encoding.UTF8.GetBytes(textBox4.Text),
                Retain  = checkBox1.Checked                              // 如果为TRUE,该消息在服务器上进行驻留保存,方便客户端连上立即推送
            });

            if (!send.IsSuccess)
            {
                MessageBox.Show("Send Failed:" + send.Message);
            }
        }
Exemplo n.º 6
0
 private static void HNur_InventoryStreamEvent(object sender, NurApi.InventoryStreamEventArgs e)
 {
     try
     {
         if (e.data.tagsAdded > 0)
         {
             NurApi.TagStorage tags = hNur.GetTagStorage();
             foreach (NurApi.Tag tag in tags)
             {
                 //have we seen this tag yet?
                 if (!inventoryResults.Contains(tag.GetEpcString()))
                 {
                     inventoryResults.Add(tag.GetEpcString());
                     if (client != null)
                     {
                         client.PublishMessage("nurapisample/epc", System.Text.Encoding.ASCII.GetBytes(tag.GetEpcString()));
                     }
                 }
             }
         }
         //if streaming stopped, restart it
         if (e.data.stopped)
         {
             hNur.StartInventoryStream();
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Something went wrong during inventory stream event [" + ex.Message + "]");
     }
 }
Exemplo n.º 7
0
        static void SenseHatImages8x8()
        {
            var clientId = "StrubT";

            var centerGuid   = "F386-09CA-1F9F-9A1F-BAD3-F573-64A0-2A22";
            var messageGuid  = "14760cc8-4cea-c63c-a825-cef162c16146";
            var messageTopic = $"siot/DAT/{centerGuid}/{messageGuid}";

            var rng = Enumerable.Range(0, 8).ToList();

            using (var client = new MqttClient("siot.net", clientId)) {
                client.Connect();

                foreach (var img in new[] { Properties.Resources.linkedin, Properties.Resources.twitter, Properties.Resources.facebook })
                {
                    using (img) {
                        var msg = rng.SelectMany(x => rng.SelectMany(y => {
                            var pxl = img.GetPixel(x, y);
                            return(new[] { x, y, pxl.R, pxl.G, pxl.B });
                        })).ToList();
                        client.PublishMessage <Mqtt.StringConverter>(messageTopic, string.Join(",", msg));

                        Thread.Sleep(1500);
                    }
                }
            }
        }
Exemplo n.º 8
0
        static void SenseHatMessage()
        {
            var clientId = "StrubT";

            var centerGuid   = "F386-09CA-1F9F-9A1F-BAD3-F573-64A0-2A22";
            var messageGuid  = "14760cc8-4cea-c63c-a825-cef162c16146";
            var messageTopic = $"siot/DAT/{centerGuid}/{messageGuid}";

            Console.Write("Enter message: ");
            var msg = Console.ReadLine();

            using (var client = new MqttClient("siot.net", clientId)) {
                client.Connect();

                client.PublishMessage <Mqtt.StringConverter>(messageTopic, msg);
            }
        }
Exemplo n.º 9
0
 public bool SendMessage(string Topic, string Payload)
 {
     try
     {
         client.PublishMessage(new MqttApplicationMessage()
         {
             Topic = Topic,
             QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce,
             Payload = Encoding.UTF8.GetBytes(Payload),
             Retain  = false
         });
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Exemplo n.º 10
0
        static void SenseHatImageSet()
        {
            var clientId = "StrubT";

            var centerGuid   = "F386-09CA-1F9F-9A1F-BAD3-F573-64A0-2A22";
            var messageGuid  = "14760cc8-4cea-c63c-a825-cef162c16146";
            var messageTopic = $"siot/DAT/{centerGuid}/{messageGuid}";

            var rng = Enumerable.Range(0, 8).ToList();

            var borderX = 14;
            var borderY = 12;
            var margin  = 10;
            var size    = 8;

            using (var img = Properties.Resources.set)
                using (var client = new MqttClient("siot.net", clientId)) {
                    client.Connect();

                    for (var Y = 0; Y < 16; Y++)
                    {
                        for (var X = 0; X < 21; X++)
                        {
                            Console.Write($"{X}x{Y}    \r");

                            var msg = rng.SelectMany(x => rng.SelectMany(y => {
                                var pxl = img.GetPixel(borderX + X * (size + margin) + x, borderY + Y * (size + margin) + y);
                                return(new[] { x, y, pxl.R, pxl.G, pxl.B });
                            })).ToList();
                            client.PublishMessage <Mqtt.StringConverter>(messageTopic, string.Join(",", msg));

                            Thread.Sleep(250);
                        }
                    }
                }

            Console.WriteLine();
        }
Exemplo n.º 11
0
        static void SenseHatLedArray()
        {
            var clientId = "StrubT";

            var centerGuid   = "F386-09CA-1F9F-9A1F-BAD3-F573-64A0-2A22";
            var messageGuid  = "14760cc8-4cea-c63c-a825-cef162c16146";
            var messageTopic = $"siot/DAT/{centerGuid}/{messageGuid}";

            var leds = new Color[8, 8];

            leds[0, 0] = Color.Red;
            leds[2, 7] = Color.BlueViolet;
            leds[5, 5] = Color.Navy;
            leds[4, 3] = Color.PeachPuff;

            var rng = Enumerable.Range(0, 8).ToList();

            using (var client = new MqttClient("siot.net", clientId)) {
                client.Connect();

                var msg = rng.SelectMany(x => rng.SelectMany(y => new[] { x, y, leds[x, y].R, leds[x, y].G, leds[x, y].B })).ToList();
                client.PublishMessage <Mqtt.StringConverter>(messageTopic, string.Join(",", msg));
            }
        }
Exemplo n.º 12
0
 /// <summary>
 /// Publishes a message to the MQTT message broker
 /// </summary>
 /// <param name="topic">The topic to publish the message to.</param>
 /// <param name="message">The message to publish.</param>
 /// <returns>The message identifier assigned to the message.</returns>
 private short PublishMessage(string topic, string message)
 {
     byte[] messageData = Encoding.ASCII.GetBytes(message);
     return(Client.PublishMessage(topic, messageData));
 }