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);
                }
            }
        }
Esempio n. 2
0
        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
                        },
                    };
                }
            });
        }