protected BaseReadingService(IMqttFactory factory, IMqttClientOptions options, ILogger logger, IHostApplicationLifetime lifetime) { Factory = factory; Options = options; Logger = logger; Lifetime = lifetime; SensorName = options.ClientId; }
/// <summary> /// Crate a <see cref="IRxMqttClient"/> from the factory. /// </summary> /// <param name="factory">The factory to use.</param> /// <returns>The <see cref="IRxMqttClient"/>.</returns> public static IRxMqttClient CreateRxMqttClient(this IMqttFactory factory) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } return(new RxMqttClient(factory.CreateManagedMqttClient(), factory.DefaultLogger)); }
public static IMqttFactory UseWebSocket4Net(this IMqttFactory mqttFactory) { if (mqttFactory == null) { throw new ArgumentNullException(nameof(mqttFactory)); } return(mqttFactory.UseClientAdapterFactory(new WebSocket4NetMqttClientAdapterFactory())); }
public MqttReceiverService(ILogger <MqttReceiverService> logger, IMqttFactory mqttFactory, IOptions <MqttConfiguration> configurationOptions, IHostApplicationLifetime hostApplicationLifetime, ChannelWriter <MqttApplicationMessage> channelWriter) : base(logger, mqttFactory, configurationOptions.Value, hostApplicationLifetime) { ChannelWriter = channelWriter; SubscriptionOptions = new MqttClientSubscribeOptionsBuilder() .WithTopicFilter( new MqttTopicFilterBuilder() .WithTopic("#") .Build() ).Build(); }
/// <summary> /// Crate a <see cref="IRxMqttClient"/> from the factory. /// </summary> /// <param name="factory">The factory to use.</param> /// <param name="logger">The mqtt net logger to use.</param> /// <returns>The <see cref="IRxMqttClient"/>.</returns> public static IRxMqttClient CreateRxMqttClient(this IMqttFactory factory, IMqttNetLogger logger) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } return(new RxMqttClient(factory.CreateManagedMqttClient(logger), logger)); }
public MQTTPublisher(IMqttFactory factory, MQTTOptions options) { _mqttClient = factory.CreateMqttClient(); _options = options; var builder = new MqttClientOptionsBuilder().WithTcpServer(_options.Host, _options.Port); if (!string.IsNullOrEmpty(_options.Username) || !string.IsNullOrEmpty(_options.Password.ToString())) { builder.WithCredentials(_options.Username, _options.Password.ToString()); } _mqttClientOptions = builder.Build(); }
protected ReliableMqttClient(ILogger logger, IMqttFactory factory, TConfiguration configuration, IHostApplicationLifetime applicationLifetime) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } _foreverJitter = new ForeverJitter(TimeSpan.FromSeconds(1), 10, TimeSpan.FromSeconds(60)); _jitterBackoff = new JitterBackoff(_foreverJitter); Logger = logger; ApplicationLifetime = applicationLifetime; Client = factory.CreateMqttClient(); Options = configuration.GetOptions(); Configuration = configuration; _policy = Policy.Handle <MqttCommunicationException>() .WaitAndRetryAsync(_foreverJitter); }
public static IServiceCollection AddAndConfigureMqtt(this IServiceCollection services, string applicationName, Action <HassMqttManagerConfiguration> hassMqttManagerConfiguration = null, Action <ManagedMqttClientOptionsBuilder> mqttOptionsBuilder = null) { // MQTT setup // This client will be configured to use MqttEvents to distribute connect/disconnect events services .AddMqttClientFactoryWithLogging() .AddSingleton <IManagedMqttClientOptions>(provider => { CommonMqttConfiguration mqttConfig = provider.GetRequiredService <IOptions <CommonMqttConfiguration> >().Value; // Prepare options ManagedMqttClientOptionsBuilder optionsBuilder = new ManagedMqttClientOptionsBuilder() .WithClientOptions(builder => { builder .WithTcpServer(mqttConfig.Server, mqttConfig.Port) .WithCleanSession(false) .WithClientId(mqttConfig.ClientId); // Configure HASS LWT for alive services builder.ConfigureHassConnectedEntityServiceLastWill(provider); if (!string.IsNullOrEmpty(mqttConfig.Username)) { builder.WithCredentials(mqttConfig.Username, mqttConfig.Password); } if (mqttConfig.KeepAlivePeriod.HasValue) { builder.WithKeepAlivePeriod(mqttConfig.KeepAlivePeriod.Value); } }); optionsBuilder.WithAutoReconnect() .WithAutoReconnectDelay(mqttConfig.ReconnectInterval) .WithMaxPendingMessages(10000) .WithPendingMessagesOverflowStrategy(MqttPendingMessagesOverflowStrategy.DropNewMessage); // Additional config mqttOptionsBuilder?.Invoke(optionsBuilder); return(optionsBuilder.Build()); }) .AddSingleton(provider => { // TODO: Support TLS & client certs IHostApplicationLifetime appLifetime = provider.GetRequiredService <IHostApplicationLifetime>(); CancellationToken stoppingtoken = appLifetime.ApplicationStopping; IMqttFactory factory = provider.GetRequiredService <IMqttFactory>(); IManagedMqttClient mqttClient = factory.CreateManagedMqttClient(); // Hook up event handlers mqttClient.ConfigureMqttEvents(provider, stoppingtoken); return(mqttClient); }); // Add MQTT events manager to help us distribute connected/disconnected events services.AddMqttEvents(); // Add MQTT events manager to help us distribute subscribed messages services.AddMqttMessageReceiverService(); // Add HASS service that indicates if we're alive or not (uses LWT feature of MQTT) services.AddHassConnectedEntityService(applicationName); // Add HASS MQTT Manager services.AddHassMqttManager(hassMqttManagerConfiguration); // Add connecter services.AddMqttLifetimeService(); return(services); }
public Shelly1PM(IMqttFactory factory, string broker, string controlTopic) { _factory = factory; _broker = broker; _controlTopic = controlTopic; }
public MqttNetAdapter(IMqttFactory mqttFactory, IOptions <MqttConfig> mqttConfig) { _mqtt = mqttFactory.CreateMqttClient(); _mqttConfig = mqttConfig.Value; }
public ManagedMqttClientFactory(IMqttFactory mqttFactory) { _mqttFactory = mqttFactory; }
public ReadingService(IMqttFactory factory, IMqttClientOptions options, ILogger <ReadingService> logger, IHostApplicationLifetime lifetime) : base(factory, options, logger, lifetime) { }
public TasmotaSwitch(IMqttFactory factory, string broker, string controlTopic) { _factory = factory; _broker = broker; _controlTopic = controlTopic; }
/// <summary> /// Standard functionality - set the IMqttFactory that will return a client /// </summary> /// <param name="mqttFactory"></param> public MqttFactoryWrapper(IMqttFactory mqttFactory) { _mqttFactory = mqttFactory; }
public ReadingService(IMqttFactory factory, IMqttClientOptions options, ILogger <ReadingService> logger, IHostApplicationLifetime lifetime, IOptions <ReadingServiceOptions> serviceOptions) : base(factory, options, logger, lifetime) { _serviceOptions = serviceOptions.Value; }