public override bool Configure(string jsonDeviceConfiguration) { var config = DeserializeDeviceConfig <Si7021Configuration>(jsonDeviceConfiguration); var i2CSettings = new I2cConnectionSettings(1, config.I2CAddress); var i2CDevice = I2cDevice.Create(i2CSettings); // TODO: probably requires try catch?! Check device availability _si7021 = new Si7021(i2CDevice) { Heater = config.HeaterIsEnabled, Resolution = config.Resolution }; return(true); }
static void Main(string[] args) { I2cConnectionSettings settings = new I2cConnectionSettings(1, Si7021.DefaultI2cAddress); I2cDevice device = I2cDevice.Create(settings); using (Si7021 sensor = new Si7021(device, Resolution.Resolution1)) { while (true) { Console.WriteLine($"Temperature: {sensor.Temperature.Celsius}℃"); Console.WriteLine($"Humidity: {sensor.Humidity}%"); Console.WriteLine(); Thread.Sleep(1000); } } }
static void Main(string[] args) { Console.WriteLine("Hello Si7021!"); const int Si7021Address = 0x40; const int BusId = 1; var i2cSettings = new I2cConnectionSettings(BusId, Si7021Address); var i2cDevice = new Windows10I2cDevice(i2cSettings); var i2CSi7021 = new Si7021(i2cDevice); using (i2CSi7021) { Console.WriteLine($"Temperature in fahrenheit: {i2CSi7021.ReadTemperatureInFahrenheit()}"); Console.WriteLine($"Temperature in celcius: {i2CSi7021.ReadTemperatureInCelcius()}"); Console.WriteLine($"Relative humidity is: {i2CSi7021.ReadHumidity()}%"); } }
public static (double temperatureFahrenheit, double relativeHumidityPercent) GetSiTemperatureAndHumidity() { // bus id on the raspberry pi 3 and 4 const int busId = 1; // set this to the current sea level pressure in the area for correct altitude readings I2cConnectionSettings i2CSettings = new(busId, Si7021.DefaultI2cAddress); var i2CDevice = I2cDevice.Create(i2CSettings); using var i2CSi7021 = new Si7021(i2CDevice); var temperature = i2CSi7021.Temperature; Console.WriteLine($"Temperature: {Green($"{temperature.DegreesFahrenheit:0.#}\u00B0F")}"); var humidity = i2CSi7021.Humidity; Console.WriteLine($"Humidity: {Green($"{humidity.Percent:0}%")}"); return(temperature.DegreesFahrenheit, humidity.Percent); }
public static void Main(string[] args) { I2cConnectionSettings settings = new I2cConnectionSettings(1, Si7021.DefaultI2cAddress); I2cDevice device = I2cDevice.Create(settings); using (Si7021 sensor = new Si7021(device, Resolution.Resolution1)) { while (true) { var tempValue = sensor.Temperature; var humValue = sensor.Humidity; Console.WriteLine($"Temperature: {tempValue.DegreesCelsius:0.#}\u00B0C"); Console.WriteLine($"Relative humidity: {humValue.Percent:0.#}%"); // WeatherHelper supports more calculations, such as saturated vapor pressure, actual vapor pressure and absolute humidity. Console.WriteLine($"Heat index: {WeatherHelper.CalculateHeatIndex(tempValue, humValue).DegreesCelsius:0.#}\u00B0C"); Console.WriteLine($"Dew point: {WeatherHelper.CalculateDewPoint(tempValue, humValue).DegreesCelsius:0.#}\u00B0C"); Console.WriteLine(); Thread.Sleep(1000); } } }
static async Task Main(string[] args) { try { // // Parse options // Options = new AppOptions(); Options.Parse(args); if (Options.Exit) { return; } // // Open Device // using (var device = await Si7021.Open()) { if (null == device) { throw new ApplicationException($"Unable to open sensor. Please ensure that no other applications are using this device."); } // // Dump device info // Log.WriteLineRaw($"Model: {device.Model}"); Log.WriteLineRaw($"Serial Number: {device.SerialNumber}"); Log.WriteLineRaw($"Firmware Rev: {device.FirmwareRevision}"); // // Init module client // if (Options.UseEdge) { Init().Wait(); } // // Launch background thread to obtain readings // var background = Task.Run(async() => { while (true) { device.Update(); var message = new MessageBody(); message.Ambient.Temperature = device.Temperature; message.Ambient.Humidity = device.Humidity; message.TimeCreated = DateTime.Now; string dataBuffer = JsonConvert.SerializeObject(message); var eventMessage = new Message(Encoding.UTF8.GetBytes(dataBuffer)); Log.WriteLineRaw($"SendEvent: [{dataBuffer}]"); if (Options.UseEdge) { await ioTHubModuleClient.SendEventAsync("temperatureOutput", eventMessage); } await Task.Delay(1000); } }); // // Wait until the app unloads or is cancelled // var cts = new CancellationTokenSource(); AssemblyLoadContext.Default.Unloading += (ctx) => cts.Cancel(); Console.CancelKeyPress += (sender, cpe) => cts.Cancel(); WhenCancelled(cts.Token).Wait(); } } catch (Exception ex) { Log.WriteLineException(ex); } }
public void Dispose() { _si7021.Heater = false; _si7021.Dispose(); _si7021 = null; }