internal MQTTClient(IMQTTService mqttService, ITopicFilter [] topicFilters) { _mqttService = mqttService as MQTTService; _topicFilters = topicFilters; var factory = new MqttFactory(); _mqttClient = factory.CreateMqttClient(); }
public async Task SetupPlayer() { client = new MQTTService(); sClient = new SongClient("https://iot2.busk.cf"); await client.SetupClient(12393, "broker.busk.cf", "piezo", "piezopass", "PiezoPlayer"); await client.Subscribe("Song/#"); await client.Subscribe("Track/#"); await client.Subscribe("test/#"); //REMOVE FOR PROD Subscribe(client.GetMessageStream()); PopulateSpeakerGPIOPorts(); s = sClient.GetNextSong(100); }
public MqttServiceEventListener(MQTTService mqttService) { _mqttService = mqttService; // add event handlers }
static async Task Start() { var mqttService = new MQTTService(); var mqttClientOptions = new Options { Uri = new Uri("mqtt://test.mosquitto.org:1883"), //UseTls = true, //IgnoreCertificateChainErrors = true, //IgnoreCertificateRevocationErrors = true, //AllowUntrustedCertificates = true, //Uri = new Uri("ws://broker.mqttdashboard.com:8000/mqtt"), //Server = "broker.mqttdashboard.com", ////Port = 1883, //Port = 8000, //Url = "broker.mqttdashboard.com", //Path = "mqtt", ConnectionType = ConnectionType.Tcp, //ConnectionType = ConnectionType.WebSocket }; var topic1 = new TopicFilter { QualityOfServiceLevel = QoSLevel.ExactlyOnce, //Topic = "PP/#" Topic = "/#" }; var topic2 = new TopicFilter { QualityOfServiceLevel = QoSLevel.AtLeastOnce, //Topic = "EFM/#" Topic = "MQTTClientRx/Test" }; ITopicFilter[] topicFilters = { topic1, //topic2 }; var MQTTService = mqttService.CreateObservableMQTTService(mqttClientOptions, topicFilters); _disp1 = MQTTService.observableMessage.Subscribe( msg => { if (msg.Topic.Contains("EFM")) { Console.ForegroundColor = ConsoleColor.Yellow; } else { Console.ForegroundColor = ConsoleColor.Blue; } Console.WriteLine($"{Encoding.UTF8.GetString(msg.Payload)}, " + $"{msg.QualityOfServiceLevel.ToString()}, " + $"Retain: {msg.Retain}, " + $"Topic: {msg.Topic}"); }, ex => { Console.WriteLine($"{ex.Message} : inner {ex.InnerException.Message}"); }, () => { Console.WriteLine("Completed..."); }); await Task.Delay(TimeSpan.FromSeconds(5)); var newMessage = new MQTTMessage { Payload = Encoding.UTF8.GetBytes("Hello MQTT EO"), QualityOfServiceLevel = QoSLevel.ExactlyOnce, Retain = false, Topic = "MQTTClientRx/Test" }; await MQTTService.client.PublishAsync(newMessage); _disp2 = MQTTService.observableMessage.Subscribe( msg => { if (msg.Topic.Contains("EFM")) { Console.ForegroundColor = ConsoleColor.Cyan; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"{Encoding.UTF8.GetString(msg.Payload)}, " + $"{msg.QualityOfServiceLevel.ToString()}, " + $"Retain: {msg.Retain}, " + $"Topic: {msg.Topic}"); }, ex => { Console.WriteLine($"{ex.Message} : inner {ex.InnerException.Message}"); }, () => { Console.WriteLine("Completed..."); }); await Task.Delay(TimeSpan.FromSeconds(2)); await MQTTService.client.UnsubscribeAsync(new[] { topic2 }); await Task.Delay(TimeSpan.FromSeconds(5)); //await MQTTService.client.UnsubscribeAsync(new [] {topic1}); //await Task.Delay(TimeSpan.FromSeconds(2)); //await MQTTService.client.SubscribeAsync(new[] { topic2 }); await Task.Delay(TimeSpan.FromSeconds(2)); _disp2.Dispose(); await Task.Delay(TimeSpan.FromSeconds(2)); _disp1.Dispose(); await Task.Delay(TimeSpan.FromSeconds(30)); //var topic2a = new TopicFilter //{ // QualityOfServiceLevel = QoSLevel.ExactlyOnce, // Topic = "EFM/#" //}; //Console.ForegroundColor = ConsoleColor.DarkBlue; //await MQTTService.client.UnsubscribeAsync(new[] { topic2 }); //await MQTTService.client.SubscribeAsync(new[] { topic2a }); }
static async Task Start() { var mqttService = new MQTTService(); var mqttClientOptions = new Options { // uri sera o endereço do service ACM broker Uri = new Uri("mqtt://localhost:1883"), // ClientId é o token de conexão do usuário ClientId = "s3sHXqoqdQdKV19nRePsVCVjiyWHAXza2M8s8HU8TCUgrATTV29zHC192Tlne5Ef", // Server = "broker.mqttdashboard.com", // Port = 1883, // Port = 8000, // Url = "broker.mqttdashboard.com", // Path = "mqtt", ConnectionType = ConnectionType.Tcp, // ConnectionType = ConnectionType.WebSocket }; var topic1 = new TopicFilter { QualityOfServiceLevel = QoSLevel.ExactlyOnce, // O tópico permitido é o padrão "user/" + id do usuário do token. Topic = "user/5a0de046f47ed1037289edc8" }; ITopicFilter[] topicFilters = { topic1, }; var MQTTService = mqttService.CreateObservableMQTTService(mqttClientOptions, topicFilters); _disp1 = MQTTService.observableMessage.Subscribe( msg => { if (msg.Topic.Contains("EFM")) { Console.ForegroundColor = ConsoleColor.Yellow; } else { Console.ForegroundColor = ConsoleColor.Blue; } Console.WriteLine($"{Encoding.UTF8.GetString(msg.Payload)}, " + $"{msg.QualityOfServiceLevel.ToString()}, " + $"Retain: {msg.Retain}, " + $"Topic: {msg.Topic}"); }, ex => { Console.WriteLine($"{ex.Message} : inner {ex.InnerException.Message}"); }, () => { Console.WriteLine("Completed..."); }); await Task.Delay(TimeSpan.FromSeconds(5)); // não é permitido o envio de mensagens para o broker. // var newMessage = new MQTTMessage // { // Payload = Encoding.UTF8.GetBytes("Hello MQTT EO"), // QualityOfServiceLevel = QoSLevel.ExactlyOnce, // Retain = false, // Topic = "MQTTClientRx/Test" // }; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_test_condition); condition = FindViewById <RelativeLayout>(Resource.Id.test_condition); TextConditionCenter = FindViewById <TextView>(Resource.Id.TextConditionCenter); ContainerFold = FindViewById <Button>(Resource.Id.ContainerFold); ContainerOff = FindViewById <Button>(Resource.Id.ContainerOff); ContainerUnfold = FindViewById <Button>(Resource.Id.ContainerUnfold); ContainerOpen = FindViewById <Button>(Resource.Id.ContainerOpen); ContainerClose = FindViewById <Button>(Resource.Id.ContainerClose); btn_save_status_container = FindViewById <Button>(Resource.Id.btn_save_parameters); box_lay_fold = FindViewById <ImageView>(Resource.Id.box_lay_fold); s_situation_container = FindViewById <Spinner>(Resource.Id.s_situation); origin_topic = StaticBox.Imitators[StaticBox.DeviceId]; var client_data = new MQTTClient() { ClientId = "ESP32AndroidImitatorClient", Password = mqttPassword, Port = mqttPort, Server = mqttServer, UserName = mqttUserName }; mQTT = new MQTTService(client_data, this); GetInfoAboutBox(); //StaticBox.Sensors["Местоположение контейнера"] = "На автомобиле"; s_situation_container.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(Spinner_ItemSelected); var adapter = ArrayAdapter.CreateFromResource(this, Resource.Array.a_situation_loaded_container, Android.Resource.Layout.SimpleSpinnerItem); adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); s_situation_container.Adapter = adapter; btn_save_status_container.Click += async delegate { try { //StaticBox.Sensors["Состояние контейнера"] = (s_open_close_container.Text == "сложен") ? "0" : "1"; //StaticBox.Sensors["Состояние дверей"] = (s_lock_unlock_door.Text == "закрыта") ? "0" : "1"; var o_data = await ContainerService.EditBox(); if (o_data.Status == "1") { Toast.MakeText(this, o_data.Message, ToastLength.Long).Show(); GetInfoAboutBox(); } else { GetInfoAboutBox(); StaticBox.CameraOpenOrNo = 1; Intent authActivity = new Intent(this, typeof(Auth.SensorsDataActivity)); StartActivity(authActivity); } } catch (Exception ex) { Toast.MakeText(this, "" + ex.Message, ToastLength.Long).Show(); } }; ContainerFold.Click += delegate(object select, EventArgs eventArgs) { SetBtnBackground("fold"); StaticBox.Sensors["Состояние контейнера"] = "0"; mQTT.PublishBoxState(origin_topic, "2"); }; //остановка ContainerOff.Click += delegate(object select, EventArgs eventArgs) { SetBtnBackground("off"); StaticBox.Sensors["Состояние контейнера"] = "2"; mQTT.PublishBoxState(origin_topic, "0"); }; //разложить ContainerUnfold.Click += delegate(object select, EventArgs eventArgs) { SetBtnBackground("unfold"); StaticBox.Sensors["Состояние контейнера"] = "1"; mQTT.PublishBoxState(origin_topic, "1"); }; //изменение состояния дверей ContainerOpen.Click += async delegate { try { StaticBox.Sensors["Состояние дверей"] = "1"; SetBtnBackground("open"); } catch (Exception ex) { Toast.MakeText(this, "" + ex.Message, ToastLength.Long).Show(); } }; //изменение состояния дверей ContainerClose.Click += async delegate { try { StaticBox.Sensors["Состояние дверей"] = "0"; SetBtnBackground("close"); } catch (Exception ex) { Toast.MakeText(this, "" + ex.Message, ToastLength.Long).Show(); } }; //изменение состояния дверей //btn_lock_unlock_door.Click += async delegate //{ // try // { // if (s_lock_unlock_door.Text == "закрыта") // { // s_lock_unlock_door.Text = "открыта"; // box_lay_fold.SetImageResource(Resource.Drawable.open_door); // } // else if (s_lock_unlock_door.Text == "открыта" && s_open_close_container.Text == "разложен") // { // s_lock_unlock_door.Text = "закрыта"; // box_lay_fold.SetImageResource(Resource.Drawable.close_door); // } // else if (s_open_close_container.Text == "сложен" && s_lock_unlock_door.Text == "открыта") // { // Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this); // alert.SetTitle("Внимание !"); // alert.SetMessage("Невозможно изменить состояние дверей."); // alert.SetPositiveButton("Закрыть", (senderAlert, args) => { // Toast.MakeText(this, "Предупреждение было закрыто!", ToastLength.Short).Show(); // }); // Dialog dialog = alert.Create(); // dialog.Show(); // } // else if (s_open_close_container.Text == null && s_lock_unlock_door.Text == null) // { // Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this); // alert.SetTitle("Внимание !"); // alert.SetMessage("Невозможно изменить состояние дверей и контейнера."); // alert.SetPositiveButton("Закрыть", (senderAlert, args) => { // Toast.MakeText(this, "Предупреждение было закрыто!", ToastLength.Short).Show(); // }); // Dialog dialog = alert.Create(); // dialog.Show(); // } // else // { // Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this); // alert.SetTitle("Внимание !"); // alert.SetMessage("Невозможно изменить состояние дверей."); // alert.SetPositiveButton("Закрыть", (senderAlert, args) => { // Toast.MakeText(this, "Предупреждение было закрыто!", ToastLength.Short).Show(); // }); // Dialog dialog = alert.Create(); // dialog.Show(); // } // } // catch (Exception ex) // { // Toast.MakeText(this, "" + ex.Message, ToastLength.Long).Show(); // } //}; }