Characteristic Locus
Inheritance System.Object ObservableBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> SamplingSensorBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> PollingSensorBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> ByteCommsSensorBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> > Scd4xBase > Scd40 > Scd41
Implements ISamplingSensor<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> ISamplingSensor<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> IDisposable ITemperatureSensor IHumiditySensor IConcentrationSensor
Inherited Members ByteCommsSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Peripheral ByteCommsSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.ReadBuffer ByteCommsSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.WriteBuffer ByteCommsSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Init(Int32, Int32) ByteCommsSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Dispose(Boolean) ByteCommsSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Dispose() PollingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.StartUpdating(Nullable<TimeSpan>) PollingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.StopUpdating() SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.samplingLock SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Updated SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.SamplingTokenSource SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Conditions SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.IsSampling SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.UpdateInterval SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.ReadSensor() SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.RaiseEventsAndNotify(IChangeResult<>) SamplingSensorBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.Read() ObservableBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.observers ObservableBase<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>.NotifyObservers(IChangeResult<>) Meadow.Foundation.ObservableBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>>.Subscribe(IObserver<>) Meadow.Foundation.ObservableBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>>.CreateObserver(Action<>, System.Nullable<Predicate<IChangeResult<UNIT>>>)
Namespace Meadow.Foundation.Sensors.Environmental
Assembly Scd4x.dll

Syntax

public abstract class Scd4xBase : ByteCommsSensorBase<(Concentration? Concentration, Units.Temperature? Temperature, RelativeHumidity? Humidity)>, ISamplingSensor<(Concentration? Concentration, Units.Temperature? Temperature, RelativeHumidity? Humidity)>, ISamplingSensor<(Concentration? Concentration, Units.Temperature? Temperature, RelativeHumidity? Humidity)>, IDisposable, ITemperatureSensor, IHumiditySensor, IConcentrationSensor

Constructors

Scd4xBase(II2cBus, Byte)

Create a new Scd4xBase object

Declaration
public Scd4xBase(II2cBus i2cBus, byte address = null)

Parameters

Type Name Description
II2cBus i2cBus

The I2C bus

System.Byte address

The I2C address

Remarks

The constructor sends the stop periodic updates method otherwise the sensor may not respond to new commands

Properties

Concentration

The current C02 concentration value

Declaration
public Concentration? Concentration { get; }

Property Value

Type Description
System.Nullable<Concentration>

Humidity

The current humidity

Declaration
public RelativeHumidity? Humidity { get; }

Property Value

Type Description
System.Nullable<RelativeHumidity>

Temperature

The current temperature

Declaration
public Units.Temperature? Temperature { get; }

Property Value

Type Description
System.Nullable<Units.Temperature>

Methods

GetSerialNumber()

Get Serial Number from the device

Declaration
public byte[] GetSerialNumber()

Returns

Type Description
System.Byte[]

a 48bit (6 byte) serial number as a byte array

IsDataReady()

Is there sensor measurement data ready Sensor returns data ~5 seconds in normal operation and ~30 seconds in low power mode

Declaration
protected bool IsDataReady()

Returns

Type Description
System.Boolean

True if ready

PerformFactoryReset()

Device factory reset and clear all saved settings

Declaration
public void PerformFactoryReset()

PerformForcedRecalibration()

Forced recalibration allows recalibration using an external CO2 reference

Declaration
public Task PerformForcedRecalibration()

Returns

Type Description
Task

PersistSettings()

Persist settings to EEPROM

Declaration
public void PersistSettings()

RaiseChangedAndNotify(IChangeResult<(Nullable<Concentration> Concentration, Nullable<Units.Temperature> Temperature, Nullable<RelativeHumidity> Humidity)>)

Raise change events for subscribers

Declaration
protected void RaiseChangedAndNotify(IChangeResult<(Concentration? Concentration, Units.Temperature? Temperature, RelativeHumidity? Humidity)> changeResult)

Parameters

Type Name Description
IChangeResult<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>> changeResult

The change result with the current sensor data

ReadSensor()

Get Scdx40 C02 Gas Concentration and Update the Concentration property

Declaration
protected override Task<(Concentration? Concentration, Units.Temperature? Temperature, RelativeHumidity? Humidity)> ReadSensor()

Returns

Type Description
Task<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>>

Overrides

Meadow.Foundation.SamplingSensorBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>>.ReadSensor()

ReInitialize()

Re-initialize the sensor

Declaration
public Task ReInitialize()

Returns

Type Description
Task

StartUpdating(Nullable<TimeSpan>)

Starts updating the sensor on the updateInterval frequency specified The sensor updates every 5 seconds, its recommended to choose an interval of 5s or longer If the update interval is 30 seconds or longer, the sensor will run in low power mode

Declaration
public override void StartUpdating(TimeSpan? updateInterval = null)

Parameters

Type Name Description
System.Nullable<TimeSpan> updateInterval

StopUpdating()

Stop updating the sensor The sensor will not respond to commands for 500ms The call will delay the calling thread for 500ms

Declaration
public override void StopUpdating()

Overrides

Meadow.Foundation.PollingSensorBase<System.ValueTuple<System.Nullable<Concentration>, System.Nullable<Units.Temperature>, System.Nullable<RelativeHumidity>>>.StopUpdating()

Events

ConcentrationUpdated

Raised when the concentration changes

Declaration
public event EventHandler<IChangeResult<Concentration>> ConcentrationUpdated

Event Type

Type Description
EventHandler<IChangeResult<Concentration>>

HumidityUpdated

Raised when the humidity value changes

Declaration
public event EventHandler<IChangeResult<RelativeHumidity>> HumidityUpdated

Event Type

Type Description
EventHandler<IChangeResult<RelativeHumidity>>

TemperatureUpdated

Raised when the temperature value changes

Declaration
public event EventHandler<IChangeResult<Units.Temperature>> TemperatureUpdated

Event Type

Type Description
EventHandler<IChangeResult<Units.Temperature>>