Ejemplo n.º 1
0
 public PumpController(
     IEventAggregator eventAggregator,
     Hardware hardware,
     PumpStrategy pumpStrategy,
     PumpStrategyParams pumpStrategyParams
     )
 {
     _eventAggregator = eventAggregator;
     _eventAggregator.Subscribe(this);
     _hardware           = hardware;
     _pumpStrategy       = pumpStrategy;
     _pumpStrategyParams = pumpStrategyParams;
 }
Ejemplo n.º 2
0
        // should we be switching on the pump (using electricity) at this point?
        // a big assumption with putting this logic here is that both the pump and element are
        // allowed to be on at the same time.  My thinking is that this should be possible in the
        // case of a frost condition or even when 'boosting' and solar is hot and ready to go.
        public bool ShouldPumpBeOn(PumpStrategyParams @params)
        {
            var shouldStartFrostPumping =
                @params.RoofDegC < _settings.FrostDegC;

            var shouldContinueFrostPumping =
                @params.IsPumpCurrentlyOn &&
                (@params.RoofDegC < _settings.FrostDegC + _settings.HysteresisFactorDegC);

            var isTankBelowSolarTarget            = (@params.InletDegC <= _settings.SolarTargetDegC);
            var isWorthStartingPump               = (@params.RoofDegC > @params.InletDegC + _settings.PumpOnTemperatureDifference);
            var shouldStartPumpingHotterRoofWater = [email protected] && isTankBelowSolarTarget && isWorthStartingPump;

            var isWorthContinuingPump = (@params.RoofDegC > @params.InletDegC + _settings.PumpOffTemperatureDifference);
            var shouldContinuePumpingHotterRoofWater = @params.IsPumpCurrentlyOn && isWorthContinuingPump && isTankBelowSolarTarget;

            return(shouldStartFrostPumping || shouldContinueFrostPumping || shouldStartPumpingHotterRoofWater || shouldContinuePumpingHotterRoofWater);
        }
Ejemplo n.º 3
0
		// should we be switching on the pump (using electricity) at this point?
		// a big assumption with putting this logic here is that both the pump and element are 
		// allowed to be on at the same time.  My thinking is that this should be possible in the
		// case of a frost condition or even when 'boosting' and solar is hot and ready to go.
		public bool ShouldPumpBeOn(PumpStrategyParams @params)
		{
			var shouldStartFrostPumping =
				@params.RoofDegC < _settings.FrostDegC;

			var shouldContinueFrostPumping = 
				@params.IsPumpCurrentlyOn && 
				(@params.RoofDegC < _settings.FrostDegC + _settings.HysteresisFactorDegC);

			var isTankBelowSolarTarget = (@params.InletDegC <= _settings.SolarTargetDegC);
			var isWorthStartingPump = (@params.RoofDegC > @params.InletDegC + _settings.PumpOnTemperatureDifference);
			var shouldStartPumpingHotterRoofWater = [email protected] && isTankBelowSolarTarget && isWorthStartingPump;
			
			var isWorthContinuingPump = (@params.RoofDegC > @params.InletDegC + _settings.PumpOffTemperatureDifference);
			var shouldContinuePumpingHotterRoofWater = @params.IsPumpCurrentlyOn && isWorthContinuingPump && isTankBelowSolarTarget;

			return (shouldStartFrostPumping || shouldContinueFrostPumping || shouldStartPumpingHotterRoofWater || shouldContinuePumpingHotterRoofWater);
		}