Example #1
0
 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);
 }
Example #2
0
 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;
 }
Example #3
0
        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;
            }
        }