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);
            }
        }