private async Task InitPlantMonitoringSystem() { try { _bme280Sensor = new BMP280Sensor33(); await _bme280Sensor.InitializeAsync(); _relaySensorLightPins = new List <GpioPin>(3); _gpioController = await GpioController.GetDefaultAsync(); foreach (HydroPonicLights hydro in Enum.GetValues(typeof(HydroPonicLights))) { _relaySensorLightPins.Add( _gpioController.OpenPin( (int)Enum.GetValues(typeof(HydroPonicLightsPinMap)).GetValue((int)hydro))); _relaySensorLightPins[(int)hydro].SetDriveMode(GpioPinDriveMode.Output); _relaySensorLightPins[(int)hydro].Write(GpioPinValue.Low); } HydroponicPlantData = new HydroponicPlantData(); _dhtTemeratureSensor.RunDHTSensor(12, _gpioController, TimeSpan.FromMilliseconds(1000)); _dhtTemeratureSensor.DhtValuesChanged += OnDhtTemperatureChange; } catch (Exception ex) { Debug.WriteLine($"{nameof(InitPlantMonitoringSystem)} threw exception: {ex.Message}"); } }
private async Task SensorLoopAsync(int milliseconds) { while (true) { HydroponicPlantData = new HydroponicPlantData(); foreach (MoistureSensor ms in Enum.GetValues(typeof(MoistureSensor))) { var moistureSensor = ReadMoistureSensor(ms); HydroponicPlantData.MoistureValue = moistureSensor; Debug.WriteLine($"Moisture Sensor {ms} = {HydroponicPlantData?.MoistureValue}"); } // HydroponicPlantData.Humidity = _bme280Sensor.Humidity; HydroponicPlantData.LightingLevel = MAX_ANALOG_VALUE - _mcp3008.RawAnalogResult(LIGHT_SENSOR_CHANNEL); //HydroponicPlantData.Altitude = await _bme280Sensor.ReadAltitude(SEA_LEVEL_LAKEVILLE_MN); //HydroponicPlantData.BarometricPressure = await _bme280Sensor.ReadPreasure(); var sensorData = await _bme280Sensor.GetSensorDataAsync(Bmp180AccuracyMode.UltraHighResolution); var temperatureText = sensorData.TemperatureFarenheight.ToString("F1"); var pressureText = sensorData.Pressure.ToString("F2"); //temperatureText += "C - hex:" + BitConverter.ToString(sensorData.UncompestatedTemperature); //pressureText += "hPa - hex:" + BitConverter.ToString(sensorData.UncompestatedPressure); Debug.WriteLine($"Temp: {temperatureText}\r\n Barometer: {pressureText}\r\n LightLevel: {HydroponicPlantData.LightingLevel}"); await Task.Delay(milliseconds); } }