public SingleBlueRiiotPoolUpdaterFactory(ILoggerFactory loggerFactory, HassMqttManager hassMqttManager, FeatureUpdateManager updateManager, BlueClient blueClient, IOptions <BlueRiiotConfiguration> config) { _loggerFactory = loggerFactory; _hassMqttManager = hassMqttManager; _updateManager = updateManager; _blueClient = blueClient; _config = config.Value; }
public SingleBlueRiiotPoolUpdater(ILogger logger, HassMqttManager hassMqttManager, FeatureUpdateManager updateManager, BlueClient blueClient, BlueRiiotConfiguration config, SwimmingPool pool) { _logger = logger; _hassMqttManager = hassMqttManager; _pool = pool; _updateManager = updateManager; _blueClient = blueClient; _config = config; _delayCalculator = new DelayCalculator(_logger, config, pool.Name); _backgroundTask = new Task(async() => await Run(), _stoppingToken.Token); }
public BlueRiiotMqttService( ILogger <BlueRiiotMqttService> logger, IOptions <BlueRiiotConfiguration> config, BlueClient blueClient, HassMqttManager hassMqttManager, SingleBlueRiiotPoolUpdaterFactory updaterFactory) { _logger = logger; _blueClient = blueClient; _hassMqttManager = hassMqttManager; _updaterFactory = updaterFactory; _config = config.Value; }
private static void ConfigureServices(HostBuilderContext context, IServiceCollection services) { services .AddAndConfigureMqtt("BlueRiiot2MQTT", configuration => { BlueRiiotHassConfiguration blueRiiotConfig = context.Configuration.GetSection("HASS").Get <BlueRiiotHassConfiguration>(); configuration.SendDiscoveryDocuments = blueRiiotConfig.EnableHASSDiscovery; }) .Configure <CommonMqttConfiguration>(x => x.ClientId = "blueriiot2mqtt") .Configure <CommonMqttConfiguration>(context.Configuration.GetSection("MQTT")); // Commands services .AddMqttCommandService() .AddMqttCommandHandler <ForceSyncCommand>() .AddMqttCommandHandler <ReleaseLastUnprocessedCommand>() .AddMqttCommandHandler <SetPumpScheduleCommand>(); services .Configure <BlueRiiotHassConfiguration>(context.Configuration.GetSection("HASS")) .Configure <HassConfiguration>(context.Configuration.GetSection("HASS")) .Configure <BlueRiiotConfiguration>(context.Configuration.GetSection("BlueRiiot")) .Configure <ProxyConfiguration>(context.Configuration.GetSection("Proxy")) .AddSingleton(x => new HassMqttTopicBuilder(x.GetOptions <HassConfiguration>())) .AddHttpClient("blueriiot") .AddTransientHttpErrorPolicy(builder => builder.WaitAndRetryAsync(new[] { TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(60) })) .ConfigurePrimaryHttpMessageHandler(provider => { ProxyConfiguration proxyConfig = provider.GetOptions <ProxyConfiguration>(); SocketsHttpHandler handler = new SocketsHttpHandler(); if (proxyConfig.Uri != null) { handler.Proxy = new WebProxy(proxyConfig.Uri); } return(handler); }) .Services .AddBlueRiiotClient((provider, builder) => { IHttpClientFactory httpFactory = provider.GetRequiredService <IHttpClientFactory>(); BlueRiiotConfiguration config = provider.GetOptions <BlueRiiotConfiguration>(); builder .UseUsernamePassword(config.Username, config.Password) .UseHttpClientFactory(httpFactory, "blueriiot", settings => { if (config.ServerUrl != null) { settings.ServerUri = config.ServerUrl; } }); }); services .AddAllFeatureUpdaters() .AddSingleton <FeatureUpdateManager>() .AddSingleton <SingleBlueRiiotPoolUpdaterFactory>() .AddSingleton <BlueRiiotMqttService>() .AddHostedService(x => x.GetRequiredService <BlueRiiotMqttService>()); }
public DelayCalculator(ILogger logger, BlueRiiotConfiguration config, string poolName) { _logger = logger; _config = config; _poolName = poolName; }