public MqttClientMain(IMqttService mqttService) { this.mqttService = mqttService; mqttClient = new MqttFactory().CreateMqttClient(); var option = new MqttClientOptionsBuilder() .WithCleanSession(true) .WithClientId("Main client") .WithCommunicationTimeout(TimeSpan.FromSeconds(5)) .WithKeepAlivePeriod(TimeSpan.FromSeconds(5)) .WithProtocolVersion(MqttProtocolVersion.V311) .WithTcpServer("127.0.0.1", Convert.ToInt32(1883)); mqttClient.ConnectAsync(option.Build()); mqttClient.Connected += (sender, e) => { string str = string.Format("Main Client connected"); Console.WriteLine(str); }; mqttClient.Disconnected += (sender, e) => { string str = string.Format("Main Client disconnected"); Console.WriteLine(str); }; mqttClient.ApplicationMessageReceived += (sender, e) => { string result = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload); string str = string.Format("Main Client received message: {0}", result); Console.WriteLine(str); if (e.ApplicationMessage.Topic == "scale") { MqttEntity mqttEntity = JsonConvert.DeserializeObject <MqttEntity>(result); mqttService.UpdateWeightFromScale(mqttEntity); } if (e.ApplicationMessage.Topic.ToLower().Contains("state")) { mqttService.UpdateOpenCabinet(e.ApplicationMessage.Topic.ToLower()); } }; listTopic = new List <string>(); }