/// <summary> /// Writes provided settings to the config file and invokes a reconfigure to the current mqqtClient /// </summary> /// <param name="settings"></param> public async void WriteMqttBrokerSettingsAsync(MqttSettings settings) { while (this._brokerSettingsFileLocked) { await Task.Delay(500); } this._brokerSettingsFileLocked = true; using (FileStream stream = new FileStream(Path.Combine(path, "mqttbroker.json"), FileMode.Open)) { stream.SetLength(0); Log.Logger.Information($"writing configured mqttbroker to: {stream.Name}"); ConfiguredMqttBroker configuredBroker = new ConfiguredMqttBroker() { Host = settings.Host, Username = settings.Username, Password = settings.Password }; await JsonSerializer.SerializeAsync(stream, configuredBroker); stream.Close(); } this._brokerSettingsFileLocked = false; this.MqqtConfigChangedHandler.Invoke(await this.GetMqttClientOptionsAsync()); }
public async Task <IManagedMqttClientOptions> GetMqttClientOptionsAsync() { ConfiguredMqttBroker configuredBroker = await ReadMqttSettingsAsync(); if (configuredBroker != null && configuredBroker.Host != null) { var mqttClientOptions = new MqttClientOptionsBuilder() .WithTcpServer(configuredBroker.Host, configuredBroker.Port) .WithTls(new MqttClientOptionsBuilderTlsParameters() { UseTls = configuredBroker.UseTLS, AllowUntrustedCertificates = true }) .WithCredentials(configuredBroker.Username, configuredBroker.Password.ToString()) .WithKeepAlivePeriod(TimeSpan.FromSeconds(30)) .WithWillMessage(new MqttApplicationMessageBuilder() .WithRetainFlag() .WithTopic($"homeassistant/sensor/{_deviceConfigModel.Name}/availability") .WithPayload("offline") .Build()) .Build(); return(new ManagedMqttClientOptionsBuilder().WithClientOptions(mqttClientOptions).Build()); } else { Program.StartUI(); return(null); } }
public async Task <MqttSettings> GetMqttBrokerSettings() { ConfiguredMqttBroker broker = await ReadMqttSettingsAsync(); return(new MqttSettings { Host = broker?.Host, Username = broker?.Username, Password = broker?.Password }); }
public async Task <IMqttClientOptions> GetMqttClientOptionsAsync() { ConfiguredMqttBroker configuredBroker = await ReadMqttSettingsAsync(); if (configuredBroker != null && configuredBroker.Host != null) { var mqttClientOptions = new MqttClientOptionsBuilder() .WithTcpServer(configuredBroker.Host) // .WithTls() .WithCredentials(configuredBroker.Username, configuredBroker.Password.ToString()) .Build(); return(mqttClientOptions); } else { Program.StartUI(); return(null); } }
/// <summary> /// Gets the saved broker settings from configfile. Null if not found. /// </summary> /// <returns></returns> public async Task <ConfiguredMqttBroker> ReadMqttSettingsAsync() { while (this._brokerSettingsFileLocked) { await Task.Delay(500); } this._brokerSettingsFileLocked = true; ConfiguredMqttBroker configuredBroker = null; using (FileStream stream = new FileStream(Path.Combine(path, "mqttbroker.json"), FileMode.Open)) { Log.Logger.Information($"reading configured mqttbroker from: {stream.Name}"); if (stream.Length > 0) { configuredBroker = await JsonSerializer.DeserializeAsync <ConfiguredMqttBroker>(stream); } stream.Close(); } this._brokerSettingsFileLocked = false; return(configuredBroker); }
public async Task <IMqttClientOptions> GetMqttClientOptionsAsync() { ConfiguredMqttBroker configuredBroker = await ReadMqttSettingsAsync(); if (configuredBroker != null && configuredBroker.Host != null) { var mqttClientOptions = new MqttClientOptionsBuilder() .WithTcpServer(configuredBroker.Host, configuredBroker.Port) .WithTls(new MqttClientOptionsBuilderTlsParameters() { UseTls = configuredBroker.UseTLS, AllowUntrustedCertificates = true }) .WithCredentials(configuredBroker.Username, configuredBroker.Password.ToString()) .Build(); return(mqttClientOptions); } else { Program.StartUI(); return(null); } }