Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
Sample project(s) available on GitHub
Syntax
public class SwitchingRainGauge : SamplingSensorBase<Length>, IObservable<IChangeResult<Length>>, ISamplingSensor<Length>, ISensor<Length>, IDisposable
Constructors
SwitchingRainGauge(IDigitalInterruptPort, Length)
Create a new SwitchingRainGauge object
Declaration
public SwitchingRainGauge(IDigitalInterruptPort rainSensorPort, Length depthPerClick)
Parameters
Type | Name | Description |
---|---|---|
IDigitalInterruptPort | rainSensorPort | The port for the rain sensor pin |
Length | depthPerClick | The depth per click |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
SwitchingRainGauge(IPin)
Create a new SwitchingRainGauge object with a default depth of 0.2794 per click
Declaration
public SwitchingRainGauge(IPin rainSensorPin)
Parameters
Type | Name | Description |
---|---|---|
IPin | rainSensorPin | The rain sensor pin |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
SwitchingRainGauge(IPin, Length)
Create a new SwitchingRainGauge object
Declaration
public SwitchingRainGauge(IPin rainSensorPin, Length depthPerClick)
Parameters
Type | Name | Description |
---|---|---|
IPin | rainSensorPin | The rain sensor pin |
Length | depthPerClick | The depth per click |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
Properties
ClickCount
The number of times the rain tilt sensor has triggered This count is multiplied by the depth per click to calculate the rain depth
Declaration
public int ClickCount { get; protected set; }
Property Value
Type | Description |
---|---|
int |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
DepthPerClick
The amount of rain recorded per rain-gauge event
Declaration
public Length DepthPerClick { get; set; }
Property Value
Type | Description |
---|---|
Length |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
IsDisposed
Is the object disposed
Declaration
public bool IsDisposed { get; }
Property Value
Type | Description |
---|---|
bool |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
RainDepth
The total accumulated rain depth
Declaration
public Length RainDepth { get; }
Property Value
Type | Description |
---|---|
Length |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
Methods
Dispose()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
Declaration
public void Dispose()
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
Dispose(bool)
Dispose of the object
Declaration
protected virtual void Dispose(bool disposing)
Parameters
Type | Name | Description |
---|---|---|
bool | disposing | Is disposing |
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
ReadSensor()
Convenience method to get the current rain depth
Declaration
protected override Task<Length> ReadSensor()
Returns
Type | Description |
---|---|
Task<Length> |
Overrides
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
Reset()
Reset the rain height
Declaration
public void Reset()
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
StartUpdating(TimeSpan?)
Start the sensor
Declaration
public override void StartUpdating(TimeSpan? updateInterval = null)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan? | updateInterval |
Overrides
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}
StopUpdating()
Stops sampling the sensor
Declaration
public override void StopUpdating()
Overrides
Remarks
SwitchingRainGauge | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
SwitchingRainGauge rainGauge;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
// initialize the rain gauge driver
rainGauge = new SwitchingRainGauge(Device.Pins.D14);
//==== Classic event example:
rainGauge.Updated += (sender, result) => Resolver.Log.Info($"Updated event {result.New.Millimeters}mm");
//==== IObservable Pattern
var observer = SwitchingRainGauge.CreateObserver(
handler: result => Resolver.Log.Info($"Rain depth: {result.New.Millimeters}mm"),
filter: null
);
rainGauge.Subscribe(observer);
return Task.CompletedTask;
}
public override async Task Run()
{
// get initial reading, just to test the API - should be 0
Length rainFall = await rainGauge.Read();
Resolver.Log.Info($"Initial depth: {rainFall.Millimeters}mm");
// start the sensor
rainGauge.StartUpdating();
}