Exemple #1
0
        private async void Timer_Tick(object sender, object e)
        {
            timer.Stop();
            try
            {
                dDhtReading = await dht22.GetReadingAsync().AsTask().ConfigureAwait(true);

                if (dDhtReading.IsValid)
                {
                    var temperature = Convert.ToSingle(dDhtReading.Temperature);
                    var humidity    = Convert.ToSingle(dDhtReading.Humidity);
                    lblTemperature.Text = string.Format("{0:0.0} °C", temperature);
                    lblHumidity.Text    = string.Format("{0:0.0} %", humidity);
                    //_SuccessCount++;
                }
                else
                {
                    lblLog.Text = "reading fail";
                    //_FailCount++;
                }
            }
            catch (Exception ex)
            {
                lblLog.Text = ex.ToString();
                //_FailCount++;
            }
            finally
            {
                timer.Start();
            }
        }
        public async Task <TemperatureReadings> ReadAsync()
        {
            var reading = await _sensor.GetReadingAsync().AsTask();

            var readings = new TemperatureReadings
            {
                //Temperature = reading.Temperature,
                //Humidity = reading.Humidity
            };

            return(readings);
        }
        internal async Task <(bool IsValid, double Temperature)> ReadAsync()
        {
#if USE_PI
            var temperatureReading = await _sensor.GetReadingAsync();

            var isValid        = temperatureReading.IsValid;
            var temperatureNow = temperatureReading.Temperature;

            return(isValid, temperatureNow);
#else
            var temperatureNow = new Random().NextDouble() * (30 - 18) + 18;
            return(await Task.FromResult((true, temperatureNow)));
#endif
        }
Exemple #4
0
        private async Task GetSensorData()
        {
            tiSensor.Stop();
            try
            {
                reading = await objDht.GetReadingAsync().AsTask();

                if (reading.IsValid)
                {
                    strLastSuccessTime = DateTime.UtcNow.ToString();
                    string strOperationText = "{0:0.0} °C, {1:0.0} %";
                    // 取得溫濕度的資料
                    var temperature = Convert.ToSingle(reading.Temperature);
                    var humidity    = Convert.ToSingle(reading.Humidity);
                    strOperationText = string.Format(strOperationText, temperature, humidity);
                    base.SetOperation(strOperationText, DateTime.UtcNow);

                    // 送至IoT Hub
                    await this.IoTHub.Send(reading.Temperature, reading.Humidity);
                }
                else
                {
                    base.SetError("偵測裝置無法讀取");
                    // 讀不到資訊,等待一秒後再讀一次
                    await Task.Delay(TimeSpan.FromSeconds(1));

                    await this.GetSensorData();
                }
            }
            catch (Exception ex)
            {
                base.SetError(ex.Message);
            }
            finally
            {
                tiSensor.Start();
            }
        }
Exemple #5
0
        private async void MainPollDHT(GpioPin gpioPin, string Sensor)
        {
            Dht22      dht22   = new Dht22(gpioPin, GpioPinDriveMode.Input);
            DhtReading reading = await dht22.GetReadingAsync().AsTask();

            Debug.WriteLine(string.Format("{0} DHT Valid {1}", Sensor, reading.IsValid));

            if (reading.IsValid)
            {
                Debug.WriteLine(string.Format("{0} DHT Reading:", Sensor));
                Debug.WriteLine(reading.Temperature);
                Debug.WriteLine(reading.Humidity);
                if (Sensor == "Intake")
                {
                    intakeDHTData = (new DHTData()
                    {
                        Temp = reading.Temperature,
                        Hum = reading.Humidity
                    });
                }
                else if (Sensor == "Outtake")
                {
                    outtakeDHTData = (new DHTData()
                    {
                        Temp = reading.Temperature,
                        Hum = reading.Humidity
                    });
                }
                else if (Sensor == "Main")
                {
                    mainDHTData = (new DHTData()
                    {
                        Temp = reading.Temperature,
                        Hum = reading.Humidity
                    });
                }

                System.Threading.Thread.Sleep(1000);
                string cmdString = "INSERT INTO [dbo].[sensorReadings] ([timestamp],[sensor],[temp], [hum], [retryCount]) ";
                cmdString += "VALUES('" + DateTime.Now + "','" + Sensor + "', '" + reading.Temperature + "', '" + reading.Humidity + "', '" + reading.RetryCount + "');";
                cmd        = new SqlCommand(cmdString, myConnection);
                try
                {
                    cmd.ExecuteNonQuery();
                }
                catch (SqlException e)
                {
                    Debug.WriteLine(string.Format("Failed SQL- {0}", e.Message.ToString()));
                }
                catch (NullReferenceException e)
                {
                    Debug.WriteLine(string.Format("Failed Bullshit- {0}", e.Message.ToString()));
                }
                catch (InvalidOperationException e)
                {
                    Debug.WriteLine(string.Format("Failed Bullshit- {0}", e.Message.ToString()));
                }
            }
            else
            {
                //Error something here
            }
        }