public override IActionResult ProcessRequest(UpdateFanTaskProcessorRequestVersionOne record)
        {
            var jobToUpdate       = JobStateHelper.GetJobByName(record.JobName);
            var currentJobOptions = (FanJobOptions)jobToUpdate.JobOptions;

            var newJobState = new JobState()
            {
                JobOptions = new FanJobOptions
                {
                    RunInterval  = record?.RunInterval ?? currentJobOptions.RunInterval,
                    RunDuration  = record?.RunDuration ?? currentJobOptions.RunDuration,
                    RelayGpioPin = record?.RelayGpioPin ?? currentJobOptions.RelayGpioPin
                },
                LastRunTime = jobToUpdate.LastRunTime,
                NextRunTime = jobToUpdate.NextRunTime
            };

            JobStateHelper.AddOrUpdateJobState(newJobState, record.JobName);

            return(new OkObjectResult(newJobState));
        }
Beispiel #2
0
        public override IActionResult ProcessRequest(UpdateHumidifierTaskProcessorRequestVersionOne record)
        {
            var jobToUpdate       = JobStateHelper.GetJobByName(record.JobName);
            var currentJobOptions = (HumidifierPressureAltitudeTemperatureJobOptions)jobToUpdate.JobOptions;

            var newJobState = new JobState()
            {
                JobOptions = new HumidifierPressureAltitudeTemperatureJobOptions
                {
                    CheckInterval      = record?.CheckInterval ?? currentJobOptions.CheckInterval,
                    HumiditySensorGpio = record?.HumiditySensorGpio ?? currentJobOptions.HumiditySensorGpio,
                    TargetHumidity     = record?.TargetHumidity ?? currentJobOptions.TargetHumidity,
                    RelayGpio          = record?.RelayGpio ?? currentJobOptions.RelayGpio
                },
                LastRunTime = jobToUpdate.LastRunTime,
                NextRunTime = jobToUpdate.NextRunTime
            };

            JobStateHelper.AddOrUpdateJobState(newJobState, record.JobName);

            return(new OkObjectResult(newJobState));
        }
Beispiel #3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var devMachineNames = Configuration.GetSection("DevMachineNames").Get <List <string> >();

            var relays       = Configuration.GetSection("Relays").Get <List <Relay> >();
            var relayOptions = new RelayClientOptions
            {
                Relays = relays
            };

            var sensors       = Configuration.GetSection("Sensors").Get <List <Sensor> >();
            var sensorOptions = new SensorClientOptions
            {
                Sensors = sensors
            };

            var humidifierJobOptions = Configuration.GetSection("HumidifierJobOptions")
                                       .Get <HumidifierPressureAltitudeTemperatureJobOptions>();

            var fanJobOptions = Configuration.GetSection("FanJobOptions")
                                .Get <FanJobOptions>();

            JobStateHelper.AddOrUpdateJobState(new JobState()
            {
                JobOptions = humidifierJobOptions
            },
                                               "HumidifierPressureAltitudeTemperatureJob");

            JobStateHelper.AddOrUpdateJobState(new JobState()
            {
                JobOptions = fanJobOptions
            },
                                               "FanJob");

            //TODO: use a real logger eventually
            var loggerFactory = new LoggerFactory();

            services.AddTransient(provider => loggerFactory);

            if (devMachineNames.Contains(Environment.MachineName))
            {
                services.AddSingleton <IGpioController, MockGpioDriver>();
            }
            else
            {
                services.AddSingleton <IGpioController, GpioController>();
            }

            services.AddSingleton <HumidifierPressureAltitudeTemperatureJobOptions>(provider => humidifierJobOptions);
            services.AddSingleton <FanJobOptions>(provider => fanJobOptions);
            services.AddSingleton <IRelayClientOptions>(provider => relayOptions);
            services.AddSingleton <ISensorClientOptions>(provider => sensorOptions);
            services.AddTransient <ISensorReadingClientFactory, SensorReadingClientFactory>();
            services.AddSingleton <IRelayClient, RelayClient.RelayClient>();
            services.AddSingleton <ISensorClient, SensorClient.SensorClient>();

            services.AddTransient <IProcessorFactory, ProcessorFactory>();

            services.AddSingleton <IHostedService, HumidifierPressureAltitudeTemperatureJob>();
            services.AddSingleton <IHostedService, FanJob>();


            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }