Esempio n. 1
0
        public ChannelReader <Reading> SensorsTick()
        {
            var channel = Channel.CreateUnbounded <Reading>();

            _ = WriteToChannel(channel.Writer);
            return(channel.Reader);

            async Task WriteToChannel(ChannelWriter <Reading> writer)
            {
                while (isStreaming)
                {
                    await led.LedFlash(settings.RedLedPin, settings.FlashingDelay);

                    var luminosity = await sensor.ReadLuminosity();

                    await Task.Delay(settings.ReadingDelay);

                    var temperature = await sensor.ReadTemperature();

                    await Task.Delay(settings.ReadingDelay);

                    var infrared = await sensor.ReadInfrared();

                    await Task.Delay(settings.ReadingDelay);

                    //if (infrared > settings.InfraredDistance)
                    //{
                    //    Led.LedFlash(settings.BlueLedPin, settings.FlashingDelay);
                    //}

                    var distance = await sensor.ReadDistance();

                    await Task.Delay(settings.ReadingDelay);

                    //if (distance < settings.ProximityDistance)
                    //{
                    //    Led.LedFlash(settings.BlueLedPin, settings.FlashingDelay);
                    //}

                    ConsoleHelper.HighlightLine($"lux={luminosity} temp={temperature} infra={infrared} dist={distance} source={Source}");

                    var reading = new Reading
                    {
                        Luminosity  = luminosity,
                        Temperature = temperature,
                        Infrared    = infrared,
                        Distance    = distance,
                        Source      = Source.ToString()
                    };

                    await writer.WriteAsync(reading);

                    await context.Readings.AddAsync(reading);

                    await context.SaveChangesAsync();
                }
            }
        }