Example #1
0
        public IActionResult Stop()
        {
            ViewBag.yesil = "ARABAYI ÇALIŞTIRABİLİRSİNİZ...";
            bool pinOn = controller.Read(pin1) == true;

            if (lastOn != pinOn)
            {
                controller.Write(in1, PinValue.Low);
                controller.Write(in2, PinValue.Low);
                controller.Write(in3, PinValue.Low);
                controller.Write(in4, PinValue.Low);
                ViewBag.btnDurumu = "DURDUNUZ!..";
            }
            else
            {
                ViewBag.Message = "!!! YOLDA ENGEL VAR !!!";
            }
            using (Dht11 dht = new Dht11(14))
            {
                var TempValue = dht.Temperature;
                if (TempValue.DegreesCelsius > 23)
                {
                    ViewBag.dht = $"Sıcaklık: {TempValue.DegreesCelsius:0.0#}\u00B0C";
                }
            }

            return(View("Index"));
        }
        public static void ReadSensor()
        {
            var        blinky     = false;
            GpioDriver driver     = new RaspberryPi3Driver();
            var        controller = new GpioController(PinNumberingScheme.Logical, driver);

            controller.OpenPin(16, PinMode.Output);

            using (var dht = new Dht11(4, gpioController: controller))
            {
                while (true)
                {
                    var temperature = dht.Temperature;
                    var humidity    = dht.Humidity;
                    if (dht.IsLastReadSuccessful)
                    {
                        Console.WriteLine($"Temperature: {temperature.DegreesCelsius} \u00B0C, Humidity: {humidity.Percent} %");
                    }

                    if (!blinky)
                    {
                        controller.Write(16, PinValue.High);
                    }
                    else
                    {
                        controller.Write(16, PinValue.Low);
                    }

                    blinky = !blinky;

                    Thread.Sleep(1000);
                }
            }
        }
Example #3
0
        private async Task PollDht11Continuously()
        {
            try
            {
                using var dht11 = new Dht11(24);

                while (!_applicationLifetime.ApplicationStopping.IsCancellationRequested)
                {
                    var humidity    = dht11.Humidity;
                    var temperature = dht11.Temperature;

                    if (dht11.IsLastReadSuccessful)
                    {
                        _logger.LogInformation($"H = {humidity}, T = {temperature}");

                        _eventHub.PostTemperatureMeasurement(new TemperatureMeasurementMessage(temperature.DegreesCelsius));

                        await Task.Delay(10000);
                    }
                    else
                    {
                        _logger.LogInformation("Read failed.");

                        await Task.Delay(2000);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Unexpected DHT11 read failure.");
            }
        }
Example #4
0
        private void InitHardware()
        {
            _temperaturePin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);

            _dht11 = new Dht11(_temperaturePin, GpioPinDriveMode.Input);

            _timer = new Timer(Timer_Tick, null, 0, 10000);
        }
Example #5
0
        static async Task SendEvents(ModuleClient moduleClient)
        {
            var count = 0;

            var        blinky     = false;
            GpioDriver driver     = new RaspberryPi3Driver();
            var        controller = new GpioController(PinNumberingScheme.Logical, driver);

            controller.OpenPin(16, PinMode.Output);

            using (var dht = new Dht11(4, gpioController: controller))
            {
                while (!cts.Token.IsCancellationRequested)
                {
                    var temperature = dht.Temperature;
                    var humidity    = dht.Humidity;
                    if (dht.IsLastReadSuccessful)
                    {
                        Console.WriteLine($"Temperature: {temperature.DegreesCelsius} \u00B0C, Humidity: {humidity.Percent} %");



                        var tempData = new MessageBody
                        {
                            Ambient = new Ambient
                            {
                                Temperature = temperature.DegreesCelsius,
                                Humidity    = Convert.ToInt32(humidity.Percent)
                            },
                            TimeCreated = DateTime.UtcNow
                        };

                        string dataBuffer   = JsonConvert.SerializeObject(tempData);
                        var    eventMessage = new Message(Encoding.UTF8.GetBytes(dataBuffer));
                        eventMessage.Properties.Add("sequenceNumber", count.ToString());
                        eventMessage.Properties.Add("batchId", BatchId.ToString());
                        Console.WriteLine($"\t{DateTime.Now.ToLocalTime()}> Sending message: {count}, Body: [{dataBuffer}]");

                        await moduleClient.SendEventAsync("temperatureOutput", eventMessage);

                        count++;
                    }

                    if (!blinky)
                    {
                        controller.Write(16, PinValue.High);
                    }
                    else
                    {
                        controller.Write(16, PinValue.Low);
                    }

                    blinky = !blinky;

                    await Task.Delay(1000, cts.Token);
                }
            }
        }
Example #6
0
 public DHTHostedService(
     ILogger <DHTHostedService> logger,
     Dht11 dhtController,
     IServiceProvider serviceProvider)
 {
     _logger          = logger;
     _dht             = dhtController;
     _serviceProvider = serviceProvider;
 }
Example #7
0
 public DHTService(
     ILogger <DHTService> logger,
     Dht11 dhtController,
     IHubContext <GPIOHub> hubContext
     )
 {
     _hubContext = hubContext;
     _dht        = dhtController;
     _logger     = logger;
 }
Example #8
0
		protected override void OnNavigatedFrom(NavigationEventArgs e)
		{
			_timer.Stop();

			_pin.Dispose();
			_pin = null;
			_dht11 = null;

			base.OnNavigatedFrom(e);
		}
Example #9
0
        public Dht11HumitureSensor(int pinNumber, ReadingMode mode = ReadingMode.Continuous)
            : base(mode, DEFAULT_READ_INTERVAL)
        {
            var gpio = GpioController.GetDefault();
            var pin  = gpio.OpenPin(pinNumber);

            dht11 = new Dht11(pin);

            base.InitializeTimer();
        }
        public Dht11HumitureSensor(int pinNumber, ReadingMode mode = ReadingMode.Continuous)
            : base(mode, TIMER_PERIOD)
        {
            var gpio = GpioController.GetDefault();
            var pin = gpio.OpenPin(pinNumber);

            dht11 = new Dht11(pin);

            base.Initialize();
        }
Example #11
0
        private void InitializeSensor()
        {
            if (DataPin == null)
            {
                return;
            }

            Sensor = new Dht11(DataPin, GpioPinDriveMode.Input);
            ControlerService.Instance.NotifyServiceUp("IsTemperatureSensorEnabled");
        }
Example #12
0
		protected override void OnNavigatedTo(NavigationEventArgs e)
		{
			base.OnNavigatedTo(e);

			_pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
			_dht11 = new Dht11();
			_dht11.Init(_pin);

			_timer.Start();

			_startedAt = DateTimeOffset.Now;
		}
        public async Task <SensorReadingWrapper <DhtReading> > ReadAsync()
        {
            var readingData = new SensorReadingWrapper <DhtReading>(d => d.IsValid);

            var controller = GpioController.GetDefault();

            using (GpioPin pin = controller.OpenPin(4, GpioSharingMode.Exclusive))
            {
                using (Dht11 dht11 = new Dht11(pin, GpioPinDriveMode.Input))
                {
                    readingData.Data = await dht11.GetReadingAsync().AsTask();
                }
            }

            return(readingData);
        }
        private async void startDHT11(int port)
        {
            int     realport = 5;
            GpioPin pin      = null;

            pin = GpioController.GetDefault().OpenPin(realport, GpioSharingMode.Exclusive);
            Dht11 _dht = new Dht11(pin, GpioPinDriveMode.Input);

            pins.Add(pin);

            DhtReading reading = new DhtReading();

            reading = await _dht.GetReadingAsync().AsTask();

            callURLAPI(1, reading.Temperature);
            callURLAPI(2, reading.Humidity);
        }
Example #15
0
        public async Task <IActionResult> GetTemperature(int roomId)
        {
            using (Dht11 dht = new Dht11(PIN))
            {
                Temperature temperature = dht.Temperature;
                double      humidity    = dht.Humidity;

                if (temperature.Celsius.ToString() != "NaN" && humidity.ToString() != "NaN")
                {
                    await this.repository.Insert(new TemperatureAndHumidity()
                    {
                        Temperature  = temperature.Celsius,
                        Humidity     = humidity,
                        DayOfReading = DateTime.Today,
                        RoomId       = roomId
                    });

                    return(Ok(new
                    {
                        temperature = temperature.Celsius.ToString(),
                        humidity = humidity.ToString()
                    }));
                }
                else
                {
                    IEnumerable <TemperatureAndHumidity> temps = await this.repository.Get(temp => temp.RoomId == roomId);

                    if (temps.FirstOrDefault() != null)
                    {
                        return(Ok(new
                        {
                            temperature = temps.FirstOrDefault().Temperature,
                            humidity = temps.FirstOrDefault().Humidity
                        }));
                    }
                    else
                    {
                        return(Ok(new
                        {
                            temperature = "",
                            humidity = ""
                        }));
                    }
                }
            }
        }
Example #16
0
        public static double GetTemperature(int pin, PinNumberingScheme?pinNumberingScheme)
        {
            var    tryCounter = 0;
            double temperature;

            using var dht = new Dht11(pin, pinNumberingScheme ?? PinNumberingScheme.Logical);
            do
            {
                temperature = dht.Temperature.Celsius;
                tryCounter++;
            } while (!dht.IsLastReadSuccessful || tryCounter > MaxRetryCount);

            if (!dht.IsLastReadSuccessful)
            {
                throw new Exception($"Чтение данных с датчика не удалось. Кол-во попыток {tryCounter}.");
            }

            return(temperature);
        }
Example #17
0
        public static double GetHumidity(int pin, PinNumberingScheme?pinNumberingScheme)
        {
            var    tryCounter = 0;
            double humidity;

            using var dht = new Dht11(pin, pinNumberingScheme ?? PinNumberingScheme.Logical);
            do
            {
                humidity = dht.Humidity;
                tryCounter++;
            } while (!dht.IsLastReadSuccessful || tryCounter > MaxRetryCount);

            if (!dht.IsLastReadSuccessful)
            {
                throw new Exception($"Чтение данных с датчика не удалось. Кол-во попыток {tryCounter}.");
            }

            return(humidity);
        }
Example #18
0
        public static (double temperature, double humidity) GetData(int pin, PinNumberingScheme?pinNumberingScheme)
        {
            var    tryCounter = 0;
            double temperature;
            double humidity;

            using var dht = new Dht11(pin, pinNumberingScheme ?? PinNumberingScheme.Logical);
            do
            {
                temperature = dht.Temperature.Celsius;
                humidity    = dht.Humidity;
                tryCounter++;
            } while (!dht.IsLastReadSuccessful || tryCounter > MaxRetryCount);

            if (!dht.IsLastReadSuccessful || double.IsNaN(temperature) && double.IsNaN(humidity))
            {
                throw new Exception($"Чтение данных с датчика не удалось. Кол-во попыток {tryCounter}.");
            }

            return(temperature, humidity);
        }
Example #19
0
        public Temperature()
        {
            var pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);

            Dht = new Dht11(pin, GpioPinDriveMode.Input);

            _timer.Tick += (sender, o) =>
            {
                //  Get Temperature and Humidity Reading
                GetReading();
            };
            _timer.Interval = TimeSpan.FromSeconds(1);
            _timer.Start();

            try
            {
                _deviceClient = DeviceClient.Create(iotHubUri,
                                                    new DeviceAuthenticationWithRegistrySymmetricKey(deviceName, deviceKey), TransportType.Http1);
            }
            catch (Exception)
            {
                //nothing
            }
        }
Example #20
0
 public TemperatureHostedService()
 {
     _sensor = new Dht11(SensorPin);
 }
Example #21
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello DHT!");
            Console.WriteLine("Select the DHT sensor you want to use:");
            Console.WriteLine(" 1. DHT10 on I2C");
            Console.WriteLine(" 2. DHT11 on GPIO");
            Console.WriteLine(" 3. DHT12 on GPIO");
            Console.WriteLine(" 4. DHT21 on GPIO");
            Console.WriteLine(" 5. DHT22 on GPIO");
            var choice = Console.ReadKey();

            Console.WriteLine();
            if (choice.KeyChar == '1')
            {
                Console.WriteLine("Press any key to stop the reading");
                // Init DHT10 through I2C
                I2cConnectionSettings settings = new I2cConnectionSettings(1, Dht10.DefaultI2cAddress);
                I2cDevice             device   = I2cDevice.Create(settings);

                using (Dht10 dht = new Dht10(device))
                {
                    Dht(dht);
                }

                return;
            }

            Console.WriteLine("Which pin do you want to use in the logical pin schema?");
            var pinChoise = Console.ReadLine();
            int pin;

            try
            {
                pin = Convert.ToInt32(pinChoise);
            }
            catch (Exception ex) when(ex is FormatException || ex is OverflowException)
            {
                Console.WriteLine("Can't convert pin number.");
                return;
            }

            Console.WriteLine("Press any key to stop the reading");

            switch (choice.KeyChar)
            {
            case '2':
                Console.WriteLine($"Reading temperature and humidity on DHT11, pin {pin}");
                using (var dht11 = new Dht11(pin))
                {
                    Dht(dht11);
                }

                break;

            case '3':
                Console.WriteLine($"Reading temperature and humidity on DHT12, pin {pin}");
                using (var dht12 = new Dht12(pin))
                {
                    Dht(dht12);
                }

                break;

            case '4':
                Console.WriteLine($"Reading temperature and humidity on DHT21, pin {pin}");
                using (var dht21 = new Dht21(pin))
                {
                    Dht(dht21);
                }

                break;

            case '5':
                Console.WriteLine($"Reading temperature and humidity on DHT22, pin {pin}");
                using (var dht22 = new Dht22(pin))
                {
                    Dht(dht22);
                }

                break;

            default:
                Console.WriteLine("Please select one of the option.");
                break;
            }
        }
Example #22
0
        // takes an instant reading or returns the average accumulated value, and returns
        // the interpreted value adjusted by calibration settings.
        public async Task <Models.Measurement> GetTemperature()
        {
            Measurement result = _lastMeasurement;

            try
            {
                if (_pin == null || _dht11 == null)
                {
                    int pinNumber = TEMPERATUREDATAPIN; // default
                    if (CalibrationSettings.ContainsKey(TempGpioPinNumberSetting))
                    {
                        pinNumber = Int32.Parse(CalibrationSettings[TempGpioPinNumberSetting].ToString());
                    }
                    var c = GpioController.GetDefault();
                    if (c != null)
                    {
                        _pin = c.OpenPin(pinNumber, GpioSharingMode.Exclusive);
                        if (_pin != null)
                        {
                            _dht11 = new Dht11(_pin, GpioPinDriveMode.Input);
                        }
                    }
                }
                if (_dht11 == null)
                {
                    return(null);
                }

                DhtReading reading = await _dht11.GetReadingAsync().AsTask();

                for (int retries = 0; retries < 10; retries++)
                {
                    if (reading.TimedOut)
                    {
                        Debug.Write(".");
                    }
                    else if (!reading.IsValid)
                    {
                        Debug.Write("x");
                    }
                    else
                    {
                        break;
                    }
                }
                if (reading.IsValid)
                {
                    //Debug.WriteLine($"Temp reading = {reading.Temperature}");
                    Measurement.UnitsOfMeasure units = Measurement.UnitsOfMeasure.Fahrenheit;
                    if (CalibrationSettings.ContainsKey(PreferredTemperatureUnits))
                    {
                        units = (Measurement.UnitsOfMeasure)Enum.Parse(typeof(Measurement.UnitsOfMeasure), CalibrationSettings[PreferredTemperatureUnits].ToString());
                    }
                    Measurement adjust = new Measurement(0.0f, Measurement.UnitsOfMeasure.Fahrenheit);
                    if (CalibrationSettings.ContainsKey(AdjustTemperatureSetting))
                    {
                        adjust = CalibrationSettings[AdjustTemperatureSetting] as Measurement;
                    }

                    float temperature = (float)reading.Temperature;
                    temperature   = Convert(Measurement.UnitsOfMeasure.Celsius, units, temperature);
                    adjust.Amount = Convert(adjust.Units, units, adjust.Amount);
                    adjust.Units  = units;
                    temperature  += adjust.Amount; // now that we know they are in the same (preferred) units

                    result           = new Measurement(temperature, units);
                    _lastMeasurement = result;
                    OnTemperatureChanged(new MeasurementChangedEventArgs(result));
                }
                else
                {
                    KegLogger.KegLogException(new TemperatureException("Custom: Unable to Read temperature."), "GetTemperature", SeverityLevel.Warning);
                    Debug.WriteLine($"Unable to read temperature.");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error, " + ex.Message);
                KegLogger.KegLogException(ex, "GetTemperature", SeverityLevel.Critical);
            }

            return(result);
        }