public EntireNetworkViewModel()
        {
            _ders  = new ObservableCollection <TableSMItem>();
            _roots = new List <NetworkRootViewModel>();
            _roots.Add(new NetworkRootViewModel(_ders));

            ShowCharts       = Visibility.Collapsed;
            ShowForecast     = Visibility.Collapsed;
            ShowData         = Visibility.Visible;
            ShowTableCommand = new RelayCommand(() => ExecuteShowTableCommand());
            ShowChartCommand = new RelayCommand(() => ExecuteShowChartCommand());
            FilterCommand    = new RelayCommand(() => ExecuteFilterCommand());
            SearchCommand    = new RelayCommand(() => ExecuteSearchCommand());
            //ShowForecastCommand = new RelayCommand(() => ExecuteShowForecastCommand());
            EventSystem.Subscribe <string>(ShowTable);
            EventSystem.Subscribe <long>(ObjectSelected);
            EventSystem.Subscribe <DateTime>(DisplayLastDateTime);
            EventSystem.Subscribe <ObservableCollection <TableSMItem> >(DisplayPowerAndFlexibility);
            EventSystem.Subscribe <TableSMItem>(DisplayPowerAndFlexibility);
            EventSystem.Subscribe <ForecastObjData>(ForecastForObject);
            WeatherWidgetVisible = Visibility.Hidden;
            dersToSend           = null;
            derToSend            = null;
            TypesForFilter       = new List <string>();
            TypesForFilter.Add("Sun");
            TypesForFilter.Add("Wind");
            FilterButton    = "Filter";
            SearchButton    = "Search";
            IsSearchEnabled = true;
            IsFilterEnabled = true;
            selectedGid     = -1;

            ConnectToCalculationEngine();
        }
Example #2
0
        private void ExecuteActivePowerCommand()
        {
            _ders.Clear();

            var allDers = rdAdapter.GetDERs(_region.GlobalId);

            foreach (SynchronousMachine der in allDers)
            {
                TableSMItem item = new TableSMItem();
                item = (TableSMItem)CacheReceiver.Instance.TableItemList.Where(o => o.Gid.Equals(der.GlobalId)).FirstOrDefault();
                if (item == null)
                {
                    item           = new TableSMItem();
                    item.CurrentP  = 0;
                    item.TimeStamp = new DateTime();
                    item.CurrentQ  = 0;
                    item.PDecrease = 0;
                    item.PIncrease = 0;
                    item.QDecrease = 0;
                    item.QIncrease = 0;
                }
                item.Der = der;
                _ders.Add(item);
            }

            base.IsSelected = true;
            EventSystem.Publish <ObservableCollection <TableSMItem> >(_ders);
            EventSystem.Publish <ForecastObjData>(new ForecastObjData()
            {
                Gid = _region.GlobalId, Power = true, IsGroup = true
            });
        }
Example #3
0
        private void DisplayPowerAndFlexibility(ObservableCollection <TableSMItem> DERS, TableSMItem _der)
        {
            this.DERS = DERS;
            this._der = _der;

            new Thread(() =>
            {
                if (DERS != null)
                {
                    float sumActualPower = 0;
                    float sumIncrease    = 0;
                    float sumDecrease    = 0;

                    foreach (TableSMItem der in DERS)
                    {
                        if (powerType == PowerType.Active)
                        {
                            sumActualPower += der.CurrentP;
                            sumIncrease    += der.PIncrease;
                            sumDecrease    += der.PDecrease;
                        }
                        else
                        {
                            sumActualPower += der.CurrentQ;
                            sumIncrease    += der.QIncrease;
                            sumDecrease    += der.QDecrease;
                        }
                    }

                    PowerOfObject     = Math.Round(sumActualPower, 2).ToString();
                    IncreaseForObject = Math.Round(sumIncrease - sumActualPower, 2).ToString();
                    DecreaseForObject = Math.Abs(Math.Round(sumActualPower - sumDecrease, 2)).ToString();
                }
                if (_der != null)
                {
                    if (powerType == PowerType.Active)
                    {
                        PowerOfObject     = Math.Round(_der.CurrentP, 2).ToString();
                        IncreaseForObject = Math.Round(_der.PIncrease - _der.CurrentP, 2).ToString();
                        DecreaseForObject = Math.Abs(Math.Round(_der.CurrentP - _der.PDecrease, 2)).ToString();
                    }
                    else
                    {
                        PowerOfObject     = Math.Round(_der.CurrentQ, 2).ToString();
                        IncreaseForObject = Math.Round(_der.QIncrease - _der.CurrentQ, 2).ToString();
                        DecreaseForObject = Math.Abs(Math.Round(_der.CurrentQ - _der.QDecrease, 2)).ToString();
                    }
                }
            }).Start();
        }
 protected override void LoadDERS()
 {
     EventSystem.Publish <long>(-1);
     _ders.Clear();
     foreach (SynchronousMachine der in rdAdapter.GetAllDERs())
     {
         TableSMItem item = new TableSMItem();
         item = (TableSMItem)CacheReceiver.Instance.TableItemList.Where(o => o.Gid.Equals(der.GlobalId)).FirstOrDefault();
         if (item == null)
         {
             item           = new TableSMItem();
             item.CurrentP  = 0;
             item.TimeStamp = new DateTime();
             item.CurrentQ  = 0;
         }
         item.Der = der;
         _ders.Add(item);
     }
 }
Example #5
0
        private void ExecuteReactivePowerCommand()
        {
            TableSMItem item = new TableSMItem();

            item = (TableSMItem)CacheReceiver.Instance.TableItemList.Where(o => o.Gid.Equals(_synchronousMachine.GlobalId)).FirstOrDefault();
            if (item == null)
            {
                item           = new TableSMItem();
                item.CurrentP  = 0;
                item.TimeStamp = new DateTime();
                item.CurrentQ  = 0;
                item.PDecrease = 0;
                item.PIncrease = 0;
                item.QDecrease = 0;
                item.QIncrease = 0;
            }
            item.Der        = _synchronousMachine;
            base.IsSelected = true;
            EventSystem.Publish <TableSMItem>(item);
            EventSystem.Publish <ForecastObjData>(new ForecastObjData()
            {
                Gid = _synchronousMachine.GlobalId, Power = false, IsGroup = false
            });
        }
 private void DisplayPowerAndFlexibility(TableSMItem _forecastder)
 {
     derToSend  = _forecastder;
     dersToSend = null;
 }
 private void DisplayPowerAndFlexibility(ObservableCollection <TableSMItem> _forecastders)
 {
     dersToSend = _forecastders;
     derToSend  = null;
 }
Example #8
0
        public GenerationForecastViewModel(long selectedObjectGid, bool _active, bool isGroup, ObservableCollection <TableSMItem> _forecastDERS, TableSMItem _forecastDER)
        {
            #region Chart initialize
            ForecastSeries_Y = new SeriesCollection();

            ForecastSeries_Y.Add(
                new LineSeries
            {
                Title          = "Max Increase",
                Values         = new ChartValues <float>(),
                PointGeometry  = DefaultGeometries.Circle,
                Opacity        = 0,
                Stroke         = Brushes.Green,
                Fill           = new SolidColorBrush(Color.FromArgb(100, 0, 255, 0)),
                LineSmoothness = 1
            });

            ForecastSeries_Y.Add(
                new LineSeries
            {
                Title          = "Actual Power",
                Values         = new ChartValues <float>(),
                PointGeometry  = DefaultGeometries.Circle,
                Opacity        = 0,
                Stroke         = Brushes.Yellow,
                Fill           = new SolidColorBrush(Color.FromArgb(190, 255, 0, 0)),
                LineSmoothness = 1
            });

            ForecastSeries_Y.Add(
                new LineSeries
            {
                Title          = "Max Decrease",
                Values         = new ChartValues <float>(),
                PointGeometry  = DefaultGeometries.Circle,
                Opacity        = 0,
                Stroke         = Brushes.Red,
                Fill           = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#282828")),
                LineSmoothness = 1
            });
            #endregion Chart initialize

            SelectedDER      = selectedObjectGid;
            SelectedTime     = 1;
            IsNominalChecked = true;

            active = _active;
            if (_active)
            {
                meteringUnit = "kW";
            }
            else
            {
                meteringUnit = "kVAr";
            }
            group = isGroup;
            InitGUIElements();
            IncreaseCommandValue   = new RelayCommand(() => IncreaseCommandValueExecute(), () => true);
            DecreaseCommandValue   = new RelayCommand(() => DecreaseCommandValueExecute(), () => true);
            ExecuteSetpointCommand = new RelayCommand(() => ExecuteSetpointCommandExecute(), () => true);
            StopSetpointCommand    = new RelayCommand(() => StopSetpointCommandExecute(), () => true);
            EventSystem.Subscribe <string>(NullifyCommand);


            DisplayPowerAndFlexibility(_forecastDERS, _forecastDER);
            LoadChartData();
            SortedDictionary <long, float> commands = CommandProxy.Proxy.GetApplaiedCommands(SelectedDER, powerType);
            CommandTimeLineData(commands, SelectedDER + "commands.xml");
        }