/// <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); }
/// <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); }
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); } }
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); } }
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 + "]"); } }
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); } } } }
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); } }
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); } }
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(); }
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)); } }
/// <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)); }