public void Monitor(EngineRoomServiceDB erdb, List <Message> messages, bool returnEventsOnly) { //if not enabled OR it has only just been initialised then don't monitor ... the distance sensor device needs time to build an accurate reading if (!Enabled || DateTime.Now.Subtract(_initialisedAt).TotalSeconds < 45) { return; } Message msg = null; String desc = null; EngineRoomServiceDB.LogEventType let; FluidLevel waterLevel = Level; //old level Level = FluidTank.GetFluidLevel(PercentFull); //current level bool fillingUp = waterLevel < Level; switch (Level) { case FluidLevel.VERY_LOW: let = fillingUp ? EngineRoomServiceDB.LogEventType.INFO : EngineRoomServiceDB.LogEventType.WARNING; desc = String.Format("Water Level: {0} @ {1}% and {2}L remaining", Level, PercentFull, Remaining); BBAlarmsService.AlarmState alarmState = fillingUp ? BBAlarmsService.AlarmState.OFF : BBAlarmsService.AlarmState.MODERATE; msg = BBAlarmsService.AlarmsMessageSchema.AlertAlarmStateChange(ID, alarmState, desc); break; case FluidLevel.EMPTY: let = EngineRoomServiceDB.LogEventType.WARNING; desc = String.Format("Water Level: {0} @ {1}% and {2}L remaining", Level, PercentFull, Remaining); msg = BBAlarmsService.AlarmsMessageSchema.AlertAlarmStateChange(ID, BBAlarmsService.AlarmState.SEVERE, desc); break; default: let = EngineRoomServiceDB.LogEventType.INFO; desc = String.Format("Water Level: {0} @ {1}% and {2}L remaining", Level, PercentFull, Remaining); msg = BBAlarmsService.AlarmsMessageSchema.AlertAlarmStateChange(ID, BBAlarmsService.AlarmState.OFF, desc); break; } if (msg != null && (waterLevel != Level || !returnEventsOnly)) { messages.Add(msg); if (returnEventsOnly) { erdb.LogEvent(let, ID, desc); } } }
private void DrawCharts() { App.Current.Dispatcher.Invoke((System.Action) delegate { IncomeSeries = new SeriesCollection { new LineSeries { Title = "Income", Values = Income.AsChartValues(), Stroke = Brushes.LightGray, }, }; FluidLevelSeries = new SeriesCollection { new LineSeries { Title = "Fluid level", Values = FluidLevel.AsChartValues(), Stroke = Brushes.LightGray }, }; if (Hours.Count > 0) { WorkingSeries1 = new SeriesCollection { new LineSeries { Title = "Time", Values = Hours[0].Hours.AsChartValues(), Stroke = Brushes.LightGray }, }; } if (Hours.Count > 1) { WorkingSeries2 = new SeriesCollection { new LineSeries { Title = "Time", Values = Hours[1].Hours.AsChartValues(), Stroke = Brushes.LightGray }, }; } if (Hours.Count > 2) { WorkingSeries3 = new SeriesCollection { new LineSeries { Title = "Time", Values = Hours[2].Hours.AsChartValues(), Stroke = Brushes.LightGray }, }; } if (Flows.Count > 0) { FlowSeries1 = new SeriesCollection { new LineSeries { Title = "Flow", Values = Flows[0].Flows.AsChartValues(), Stroke = Brushes.LightGray }, }; } if (Flows.Count > 1) { FlowSeries2 = new SeriesCollection { new LineSeries { Title = "Flow", Values = Flows[1].Flows.AsChartValues(), Stroke = Brushes.LightGray }, }; } if (Flows.Count > 2) { FlowSeries3 = new SeriesCollection { new LineSeries { Title = "Flow", Values = Flows[2].Flows.AsChartValues(), Stroke = Brushes.LightGray }, }; } }); }