Beispiel #1
0
        public virtual IActionResult GetZoneTemperature([FromRoute] string zoneId)
        {
            TemperatureZoneStatus tzs = null;

            I2cDriver driver = new I2cDriver(Raspberry.IO.GeneralPurpose.ProcessorPin.Pin02, Raspberry.IO.GeneralPurpose.ProcessorPin.Pin03);

            if (driver != null)
            {
                BMP180PressureTempSensor p_sensor = new BMP180PressureTempSensor(driver, 0x77, BMP085Mode.UltraHighRes);

                //BH1750Connection l_sensor = new BH1750Connection(driver.Connect(0x40));

                var ht_sensor = new Htu21dfConnection(driver.Connect(0x40));
                ht_sensor.Begin();

                tzs = new TemperatureZoneStatus
                {
                    Id               = zoneId,
                    Name             = "HTU21DF-BMP180",
                    TemperatureValue = ht_sensor.ReadTemperature(),
                    PressureValue    = p_sensor.ReadSealevelPressure(),
                    HumidityValue    = ht_sensor.ReadHumidity(),
                    Units            = TemperatureZoneStatus.UnitsEnum.CelsiusEnum,
                    Timestamp        = DateTime.Now
                };
            }

            var example = tzs ?? default(TemperatureZoneStatus);

            return(new ObjectResult(example));
        }
        public virtual IActionResult GetZoneTemperature([FromRoute] string zoneId)
        {
            //string exampleJson = null;
            //var example = exampleJson != null
            //? JsonConvert.DeserializeObject<TemperatureZoneStatus>(exampleJson)
            //: default(TemperatureZoneStatus);

            // This is a TEST
            // Since there is a single Temperature Sensor DS18B20 configured for 1-wire
            // And that Linux activated the proper module
            // All zones will return the same value measured by DS18B20
            // TODO: test the CRC check for a YES
            TemperatureZoneStatus tzs = null;

            DirectoryInfo devicesDir = new DirectoryInfo("/sys/bus/w1/devices");

            foreach (var deviceDir in devicesDir.EnumerateDirectories("28*"))
            {
                var w1slavetext =
                    deviceDir.GetFiles("w1_slave").FirstOrDefault().OpenText().ReadToEnd();
                string temptext =
                    w1slavetext.Split(new string[] { "t=" }, StringSplitOptions.RemoveEmptyEntries)[1];
                string name = deviceDir.Name;

                tzs = new TemperatureZoneStatus
                {
                    Id        = zoneId,
                    Name      = deviceDir.Name,
                    Value     = double.Parse(temptext) / 1000,
                    Units     = TemperatureZoneStatus.UnitsEnum.CelsiusEnum,
                    Timestamp = DateTime.Now
                };
            }

            var example = tzs ?? default(TemperatureZoneStatus);

            return(new ObjectResult(example));
        }