private static bool CanSwitchState(DateTime now, HeaterState heater, PowerZoneState heaterPowerZoneState, bool forceImmidiateAction) { if (forceImmidiateAction) { return(true); } return((now - heater.LastStateChange).TotalSeconds >= heater.Heater.MinimumStateChangeIntervalSeconds && (heaterPowerZoneState == null || (now - heaterPowerZoneState.LastOutputStateChange).TotalSeconds >= heaterPowerZoneState.PowerZone.SwitchDelayBetweenOutputsSeconds)); }
public void setState(bool OnOff) { if (OnOff) { heaterState = HeaterState.ON; } else { heaterState = HeaterState.OFF; } }
void AddToGraph(HeaterState state) { cartesianChart.AxisX[0].Labels.Add(DateTime.Now.ToString("T", DateTimeFormatInfo.InvariantInfo)); for (int i = 0; i < 3; i++) { sensorCharts[i].Values.Add(state.SensorsTemperature[i]); } ambientChart.Values.Add(state.AmbientTemperature); outputCharts[0].Values.Add((int)state.OutputValues[0]); }
public TankHeater(int temp, string unit) { if (temp != 0) { heaterState = HeaterState.ON; } else { heaterState = HeaterState.OFF; } heaterTemp = temp; heatUnit = unit; }
public virtual IActionResult GetHeaterState([FromRoute] string zoneId) { //string exampleJson = null; const ConnectorPin triggerPin = ConnectorPin.P1Pin38; const ConnectorPin echoPin = ConnectorPin.P1Pin40; double distance = 0; string state = null; Console.WriteLine("info: HC-SR04 distance measure"); Console.WriteLine(" Trigger: {0}", triggerPin); Console.WriteLine(" Echo: {0}", echoPin); var driver = GpioConnectionSettings.DefaultDriver; using (var connection = new HcSr04Connection( driver.Out(triggerPin.ToProcessor()), driver.In(echoPin.ToProcessor()))) try { distance = connection.GetDistance().Centimeters; Console.WriteLine(string.Format("{0:0.0} cm", distance).PadRight(16)); //Console.CursorTop--; } catch (TimeoutException e) { state = "Timeout: " + e.Message; } if (state == null) { state = string.Format("{0:0.0} cm", distance); } HeaterState hs = new HeaterState { Id = zoneId, State = state }; var hs_state = hs ?? default(HeaterState); return(new ObjectResult(hs_state)); }
public void Collect(HeaterState heaterState, ControllerState controllerState) { var heater = heaterState.Heater; if (!heaterState.OutputState) { _counterAccumulator.Accumulate(new CounterAccumulatorInput { HeaterId = heater.HeaterId, SecondsToAccumulate = (int)(DateTime.UtcNow - heaterState.LastCounterStart).TotalSeconds }); } heaterState.LastCounterStart = DateTime.UtcNow; controllerState.InstantUsage = controllerState.HeaterIdToState .Values .GroupBy(x => x.Heater.UsageUnit) .ToDictionary(x => x.Key, x => x.Where(h => h.OutputState) .Sum(h => h.Heater.UsagePerHour)); }
private bool StateShouldBeUpdated(HeaterState heater) { return(heater.OutputState != _powerOutputProvider.Provide(heater.Heater.DigitalOutput.ProtocolName) .GetState(heater.Heater.DigitalOutput.OutputDescriptor)); }
public void iterates_over_available_heaters(byte iteration, bool state1, bool state2, bool state3, bool state4) { // Arrange var heater1 = new Heater { HeaterId = 1, UsagePerHour = 0.9m }; var heater2 = new Heater { HeaterId = 2, UsagePerHour = 0.9m }; var heater3 = new Heater { HeaterId = 3, UsagePerHour = 0.9m }; var heater4 = new Heater { HeaterId = 4, UsagePerHour = 0.9m }; var heaterState1 = new HeaterState { Heater = heater1, OutputState = true }; var heaterState2 = new HeaterState { Heater = heater2, OutputState = true }; var heaterState3 = new HeaterState { Heater = heater3, OutputState = true }; var heaterState4 = new HeaterState { Heater = heater4, OutputState = true }; var powerZoneState = new PowerZoneState { NextIntervalOffset = iteration, PowerZone = new PowerZone { MaxUsage = 2.1m, Heaters = new List <Heater> { heater1, heater2, heater3, heater4 } } }; var controllerState = new ControllerState { HeaterIdToState = new Dictionary <int, HeaterState> { [1] = heaterState1, [2] = heaterState2, [3] = heaterState3, [4] = heaterState4 } }; // Act var powerZoneOutputAllowanceCalculator = new PowerZoneOutputLimiter(); powerZoneOutputAllowanceCalculator.Limit(powerZoneState, controllerState); // Assert Assert.Equal(state1, heaterState1.OutputState); Assert.Equal(state2, heaterState2.OutputState); Assert.Equal(state3, heaterState3.OutputState); Assert.Equal(state4, heaterState4.OutputState); }