public GrovePiPlusBlueLEDButton(GrovePiPlus shield, int ledPin, int buttonPin)
 {
     grovePiPlus    = shield;
     this.ledPin    = (GrovePiPlus.Pin)ledPin;
     this.buttonPin = (GrovePiPlus.Pin)buttonPin;
     grovePiPlus.SetPinMode(this.ledPin, GrovePiPlus.PinMode.Output);
     grovePiPlus.SetPinMode(this.buttonPin, GrovePiPlus.PinMode.Input);
 }
 public GrovePiLightSensor(GrovePiPlus shield, int sensorPin)
 {
     this.grovePiPlus = shield;
     this.sensorPin   = (GrovePiPlus.Pin)sensorPin;
     this.grovePiPlus.SetPinMode(this.sensorPin, GrovePiPlus.PinMode.Output);
 }
        static void Main(string[] args)
        {
#if (REMOTE_DEBUG)
            // for remote debug attaching
            for (; ;)
            {
                Console.WriteLine("waiting for debugger attach");
                if (Debugger.IsAttached)
                {
                    break;
                }
                System.Threading.Thread.Sleep(1000);
            }
#endif
            if (args.Length != 1)
            {
                Console.WriteLine("Command line:");
                Console.WriteLine("dotnet run iothub-device-connection-string");
                return;
            }
            string iothubcs = args[0];
            Console.WriteLine("Environment monitoring device with BME280 sensor.");
            Console.WriteLine($"Connection string of IoT Hub Device:{iothubcs}");

            var groveShield    = new EG.IoT.Grove.GrovePiPlus(1);
            var gblueLedButton = new EG.IoT.Grove.GrovePiPlusBlueLEDButton(groveShield, 4, 5);

            for (int i = 0; i < 3; i++)
            {
                gblueLedButton.TurnOn();
                Thread.Sleep(1000);
                gblueLedButton.TurnOff();
                Thread.Sleep(1000);
            }

            var bme280 = new EG.IoT.Grove.BarometerBME280(1);
            bme280.Initialize();
            bme280.Read();
            var temperature = bme280.ReadTemperature();
            var humidity    = bme280.ReadHumidity();
            var pressure    = bme280.ReadPressure();
            Console.WriteLine($"T={temperature}C,H={humidity}%,P={pressure}hPa");

#if USE_LIGHT_SENSE
            lightSensor = new GrovePiLightSensor(groveShield, 0);
            var lightSensorValue      = lightSensor.SensorValue();
            var lightSensorResistance = lightSensor.Resitance(lightSensorValue);
            Console.WriteLine($"lightSensor={lightSensorValue},resistance={lightSensorResistance}");
#endif

            co2Sensor = new CO2SensorMHZ19B()
            {
                Port = "/dev/serial0"
            };
            if (co2Sensor.Initialize())
            {
                for (int i = 0; i < 3; i++)
                {
                    var co2 = co2Sensor.SensorValue();
                    Console.WriteLine($"CO2:{co2} ppm");
                    Thread.Sleep(1000);
                }
            }

            EG.IoT.Utils.IoTHubConnector iothubClient = new EG.IoT.Utils.DeviceClientConnector(iothubcs);
            var sensingDevice = new EG.IoT.EnvironmentSensing.EnvironmentSensingDeviceClient(iothubClient, bme280, gblueLedButton, lightSensor, co2Sensor);

            var tokenSource = new CancellationTokenSource();
            var ct          = tokenSource.Token;

            sensingDevice.Initialize(ct).Wait();

            var key = Console.ReadLine();
            Console.WriteLine("End Apps");
            tokenSource.Cancel();
            Thread.Sleep(5000);

            sensingDevice.Terminate().Wait();
        }