Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

Characteristic Locus
Inheritance object ObservableBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> PollingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> > Pmsa003i
Implements IObservable<IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>> ISamplingSensor<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> ISensor<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> IDisposable II2cPeripheral
Inherited Members ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.BusComms ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.ReadBuffer ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.WriteBuffer ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Init(int, int) ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Dispose(bool) ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Dispose() PollingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.StartUpdating(TimeSpan?) PollingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.StopUpdating() SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.samplingLock SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Updated SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.SamplingTokenSource SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Conditions SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.IsSampling SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.UpdateInterval SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.ReadSensor() SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.RaiseEventsAndNotify(IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>) SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Read() ObservableBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.observers ObservableBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.NotifyObservers(IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>) ObservableBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.Subscribe(IObserver<IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>>) ObservableBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.CreateObserver(Action<IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>>, Predicate<IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>>) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()
Namespace Meadow.Foundation.Sensors.Environmental
Assembly Pmsa300i.dll

Syntax

public class Pmsa003i : ByteCommsSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>, IObservable<IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>>, ISamplingSensor<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>, ISensor<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>, IDisposable, II2cPeripheral

Constructors

Pmsa003i(II2cBus)

Create a new PMSA003I sensor object

Declaration
public Pmsa003i(II2cBus i2cBus)

Parameters

Type Name Description
II2cBus i2cBus

The I2C bus

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

Properties

CountOf0_3micronParticles

Particle density of 0 - 0.3 micron particles in air

Declaration
public ParticleDensity? CountOf0_3micronParticles { get; }

Property Value

Type Description
ParticleDensity?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf0_5micronParticles

Particle density of 0.3 - 0.5 micron particles in air

Declaration
public ParticleDensity? CountOf0_5micronParticles { get; }

Property Value

Type Description
ParticleDensity?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf100micronParticles

Particle density of 50 - 100 micron particles in air

Declaration
public ParticleDensity? CountOf100micronParticles { get; }

Property Value

Type Description
ParticleDensity?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf10micronParticles

Particle density of 0.5 - 10 micron particles in air

Declaration
public ParticleDensity? CountOf10micronParticles { get; }

Property Value

Type Description
ParticleDensity?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf25micronParticles

Particle density of 0.5 - 10 micron particles in air

Declaration
public ParticleDensity? CountOf25micronParticles { get; }

Property Value

Type Description
ParticleDensity?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf50micronParticles

Particle density of 10 - 50 micron particles in air

Declaration
public ParticleDensity? CountOf50micronParticles { get; }

Property Value

Type Description
ParticleDensity?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

DefaultI2cAddress

The default I2C address for the peripheral

Declaration
public byte DefaultI2cAddress { get; }

Property Value

Type Description
byte

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

PM10_0Env

Standard particulate matter PM10 density

Declaration
public Density? PM10_0Env { get; }

Property Value

Type Description
Density?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

PM10_0Std

Standard particulate matter PM10 density

Declaration
public Density? PM10_0Std { get; }

Property Value

Type Description
Density?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

PM1_0Env

Standard particulate matter PM1.0 density

Declaration
public Density? PM1_0Env { get; }

Property Value

Type Description
Density?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

PM1_0Std

Standard particulate matter PM1.0 density

Declaration
public Density? PM1_0Std { get; }

Property Value

Type Description
Density?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

PM2_5Env

Standard particulate matter PM2.5 density

Declaration
public Density? PM2_5Env { get; }

Property Value

Type Description
Density?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

PM2_5Std

Standard particulate matter PM2.5 density

Declaration
public Density? PM2_5Std { get; }

Property Value

Type Description
Density?

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

Methods

RaiseEventsAndNotify(IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>)

Raise change events for subscribers

Declaration
protected override void RaiseEventsAndNotify(IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> changeResult)

Parameters

Type Name Description
IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> changeResult

The change result with the current sensor data

Overrides

SamplingSensorBase<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>.RaiseEventsAndNotify(IChangeResult<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>)

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

ReadSensor()

Read data from the sensor

Declaration
protected override Task<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)> ReadSensor()

Returns

Type Description
Task<(Density? StandardParticulateMatter_1micron, Density? StandardParticulateMatter_2_5micron, Density? StandardParticulateMatter_10micron, Density? EnvironmentalParticulateMatter_1micron, Density? EnvironmentalParticulateMatter_2_5micron, Density? EnvironmentalParticulateMatter_10micron, ParticleDensity? ParticleDensity_0_3microns, ParticleDensity? ParticleDensity_0_5microns, ParticleDensity? ParticleDensity_10microns, ParticleDensity? ParticleDensity_25microns, ParticleDensity? ParticleDensity_50microns, ParticleDensity? ParticleDensity_100microns)>

Overrides

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

Exceptions

Type Condition
Exception

StartUpdating(TimeSpan?)

Starts updating the sensor on the updateInterval frequency specified

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

Parameters

Type Name Description
TimeSpan? updateInterval

Overrides

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

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

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

Events

CountOf0_3micronParticlesUpdated

Raised when the number of 0-0.3 micron particles (in 0.1 liters of air) changes

Declaration
public event EventHandler<IChangeResult<ParticleDensity>> CountOf0_3micronParticlesUpdated

Event Type

Type Description
EventHandler<IChangeResult<ParticleDensity>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf0_5micronParticlesUpdated

Raised when the number of 0.3-0.5 micron particles (in 0.1 liters of air) changes

Declaration
public event EventHandler<IChangeResult<ParticleDensity>> CountOf0_5micronParticlesUpdated

Event Type

Type Description
EventHandler<IChangeResult<ParticleDensity>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf100micronParticlesUpdated

Raised when the number of 50-100 micron particles (in 0.1 liters of air) changes

Declaration
public event EventHandler<IChangeResult<ParticleDensity>> CountOf100micronParticlesUpdated

Event Type

Type Description
EventHandler<IChangeResult<ParticleDensity>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf10micronParticlesUpdated

Raised when the number of 0.5-10 micron particles changes

Declaration
public event EventHandler<IChangeResult<ParticleDensity>> CountOf10micronParticlesUpdated

Event Type

Type Description
EventHandler<IChangeResult<ParticleDensity>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf25micronParticlesUpdated

Raised when the number of 10-25 micron particles (in 0.1 liters of air) changes

Declaration
public event EventHandler<IChangeResult<ParticleDensity>> CountOf25micronParticlesUpdated

Event Type

Type Description
EventHandler<IChangeResult<ParticleDensity>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

CountOf50micronParticlesUpdated

Raised when the number of 25-50 micron particles (in 0.1 liters of air) changes

Declaration
public event EventHandler<IChangeResult<ParticleDensity>> CountOf50micronParticlesUpdated

Event Type

Type Description
EventHandler<IChangeResult<ParticleDensity>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

EnvironmentalPM_10micronUpdated

Raised when the Environment particulate matter PM10.0 density changes

Declaration
public event EventHandler<IChangeResult<Density>> EnvironmentalPM_10micronUpdated

Event Type

Type Description
EventHandler<IChangeResult<Density>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

EnvironmentalPM_1micronUpdated

Raised when the Environment particulate matter PM1.0 density changes

Declaration
public event EventHandler<IChangeResult<Density>> EnvironmentalPM_1micronUpdated

Event Type

Type Description
EventHandler<IChangeResult<Density>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

EnvironmentalPM_2_5micronUpdated

Raised when the Environment particulate matter PM2.5 density changes

Declaration
public event EventHandler<IChangeResult<Density>> EnvironmentalPM_2_5micronUpdated

Event Type

Type Description
EventHandler<IChangeResult<Density>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

StandardPM_10micronUpdated

Raised when the Standard particulate matter PM10.0 density changes

Declaration
public event EventHandler<IChangeResult<Density>> StandardPM_10micronUpdated

Event Type

Type Description
EventHandler<IChangeResult<Density>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

StandardPM_1micronUpdated

Raised when the Standard particulate matter PM1.0 density changes

Declaration
public event EventHandler<IChangeResult<Density>> StandardPM_1micronUpdated

Event Type

Type Description
EventHandler<IChangeResult<Density>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub

StandardPM_2_5micronUpdated

Raised when the Standard particulate matter PM2.5 density changes

Declaration
public event EventHandler<IChangeResult<Density>> StandardPM_2_5micronUpdated

Event Type

Type Description
EventHandler<IChangeResult<Density>>

Remarks

Pmsa003i
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Environmental.Pmsa300i

Code Example

Pmsa003i pmsa003i;

public override Task Initialize()
{
    var bus = Device.CreateI2cBus(I2cBusSpeed.Standard);
    pmsa003i = new Pmsa003i(bus);

    pmsa003i.Updated += Pmsa003i_Updated;

    return base.Initialize();
}

public override Task Run()
{
    Resolver.Log.Info("Run...");

    pmsa003i.StartUpdating(TimeSpan.FromSeconds(2));

    return base.Run();
}

private void Pmsa003i_Updated(object sender, IChangeResult<(
    Density? StandardParticulateMatter_1micron,
    Density? StandardParticulateMatter_2_5micron,
    Density? StandardParticulateMatter_10micron,
    Density? EnvironmentalParticulateMatter_1micron,
    Density? EnvironmentalParticulateMatter_2_5micron,
    Density? EnvironmentalParticulateMatter_10micron,
    ParticleDensity? ParticleDensity_0_3microns,
    ParticleDensity? ParticleDensity_0_5microns,
    ParticleDensity? ParticleDensity_10microns,
    ParticleDensity? ParticleDensity_25microns,
    ParticleDensity? ParticleDensity_50microns,
    ParticleDensity? ParticleDensity_100microns)> e)
{
    Resolver.Log.Info($"Standard Particulate Matter 1 micron: {e.New.StandardParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 2_5micron: {e.New.StandardParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Standard Particulate Matter 10 micron: {e.New.StandardParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 1 micron: {e.New.EnvironmentalParticulateMatter_1micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 2.5 micron: {e.New.EnvironmentalParticulateMatter_2_5micron.Value.MicroGramsPerMetersCubed} micrograms per m^3");
    Resolver.Log.Info($"Environmental Particulate Matter 10 micron: {e.New.EnvironmentalParticulateMatter_10micron.Value.MicroGramsPerMetersCubed} micrograms per m^3"); ;

    Resolver.Log.Info($"Count of particles - 0.3 microns: {e.New.ParticleDensity_0_3microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 0.5 microns: {e.New.ParticleDensity_0_5microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 10 microns: {e.New.ParticleDensity_10microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 25 microns: {e.New.ParticleDensity_25microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 50 microns: {e.New.ParticleDensity_50microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
    Resolver.Log.Info($"Count of particles - 100 microns: {e.New.ParticleDensity_100microns.Value.ParticlesPerCentiliter} in 0.1 liters of air");
}

Sample project(s) available on GitHub