public RelayTask( string name, IGpioPin pin, string assetId, int recurrence, int onTimeInMs, Action <string, bool?> onStatusChanged) : base(recurrence, name, "Relay", onTimeInMs) { _name = name; _driver = new RelayDriver(pin, assetId, onStatusChanged); }
public DoubleRelayTask( string name, RelayDriver relayA, IGpioPin pinB, string assetId, int recurrence, int onTimeInMs, Action <string, bool?> onStatusChanged) : base(recurrence, name, "Relay", onTimeInMs) { _name = name; _relayA = relayA; _relayB = new RelayDriver(pinB, assetId, onStatusChanged); _onTimeInMs = onTimeInMs; }
static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .WriteTo.Console() .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); try { Log.Information("Bootstrapping wiring"); Pi.Init <BootstrapWiringPi>(); _pumpRelay = new RelayDriver(Pi.Gpio[BcmPin.Gpio00], "Pump", OnStatusChanged); var twoMinutes = MillisecondsPerMinute * 2; var tasks = new PiTask[] { new DoubleRelayTask("Solenoid 3", relayA: _pumpRelay, pinB: Pi.Gpio[BcmPin.Gpio02], assetId: "Solenoid_1", recurrence: MillisecondsPerDay / 2, onTimeInMs: twoMinutes, onStatusChanged: OnStatusChanged), new DoubleRelayTask("Solenoid 1", relayA: _pumpRelay, pinB: Pi.Gpio[BcmPin.Gpio03], assetId: "Solenoid_2", recurrence: MillisecondsPerDay / 2, onTimeInMs: twoMinutes, onStatusChanged: OnStatusChanged), new DoubleRelayTask("Solenoid 2", relayA: _pumpRelay, pinB: Pi.Gpio[BcmPin.Gpio21], assetId: "Solenoid_3", recurrence: MillisecondsPerDay / 2, onTimeInMs: twoMinutes, onStatusChanged: OnStatusChanged), new DoubleRelayTask("Solenoid 4", relayA: _pumpRelay, pinB: Pi.Gpio[BcmPin.Gpio22], assetId: "Solenoid_4", recurrence: MillisecondsPerDay / 2, onTimeInMs: twoMinutes, onStatusChanged: OnStatusChanged), new EnvironmentTask("DHT11", pin: Pi.Gpio[BcmPin.Gpio25], recurrence: twoMinutes, sendIoTMessage: Program.SendIoTMessage) }; Log.Information("Scheduling Tasks", tasks); var scheduler = new Scheduler(tasks, granularityInMilliseconds: MillisecondsPerMinute / 12); scheduler.Run(); } catch (Exception ex) { Log.Error(ex, "Fatal Error"); throw; } }