private Double[] lerArquivoEntradaPrevisor(ParqueEolico p)
        {
            DirectoryInfo dir = new DirectoryInfo(PREVISOR_TR_DIRECTORY_NAME + "/" + p.SiglaPrevEOL + "/" + PASTA_ENTRADAS);

            FileInfo[] fileInfo  = dir.GetFiles();
            Double[]   inputData = new Double[0];
            if (fileInfo.Length != 0)
            {
                foreach (FileInfo file in fileInfo)
                {
                    StreamReader inputFile = file.OpenText();
                    String       linha     = inputFile.ReadLine(); //data
                    linha = inputFile.ReadLine();                  //dados


                    string[] linha2 = linha.Split('\t');
                    inputData = new Double[linha2.Count() - 1];
                    for (int i = 0; i < linha2.Count() - 1; i++)
                    {
                        inputData[i] = Double.Parse(linha2[i].Replace('.', ','));
                    }
                }
            }

            return(inputData);
        }
        private void ExcluirParque_Click(object sender, RoutedEventArgs e)
        {
            int index = this.dataGridParqueEolico.SelectedIndex;

            if (index == -1)
            {
                MessageBox.Show("Por favor, selecione um parque eólico.");
            }
            else
            {
                try
                {
                    if (MessageBox.Show("Tem certeza que deseja remover o parque eólico selecionado? Atenção, sua exclusão pode implicar na exclusão dos dados já importados associados a este parque.", Constants.CONFIRMATION_CAPTION, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                    {
                        ParqueEolico parqueSelecionado = (ParqueEolico)this.dataGridParqueEolico.SelectedItem;
                        FactoryController.getInstance().ParqueEolicoController.Delete(parqueSelecionado);
                        this.listaParquesEolicos.Remove((ParqueEolico)this.dataGridParqueEolico.SelectedItem);

                        MessageBox.Show("Parque eólico removido com sucesso.");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        public void CalibrarPotenciaPotencia(ParqueEolico parqueEolico, bool isTempoReal)
        {
            try
            {
                if (isTempoReal)
                {
                    this.criarCaminhoDeDiscoCalibrador(Path.GetFullPath(CALIBRADOR_TR_DIRECTORY_NAME));
                    this.criarPastaDeTrabalhoCalibrador(CALIBRADOR_TR_DIRECTORY_NAME + PASTA_TRABALHO, parqueEolico, "TR");
                    var process = Process.Start(CALIBRADOR_TR_EXE);
                    process.WaitForExit();

                    FactoryController.getInstance().PrevisorController.montarEstruturaParaPrevisao(parqueEolico.SiglaPrevEOL, PrevisorController.PREVISAO_TIPO.TEMPO_REAL);
                    this.copiarPesosOtimos(parqueEolico, PrevisorController.PREVISAO_TIPO.TEMPO_REAL);
                    this.criarAtualizarArquivoParquesCalibrados(parqueEolico, PrevisorController.PREVISAO_TIPO.TEMPO_REAL);
                }
                else
                {
                    this.criarCaminhoDeDiscoCalibrador(Path.GetFullPath(CALIBRADOR_PP_DIRECTORY_NAME));
                    this.criarPastaDeTrabalhoCalibrador(CALIBRADOR_PP_DIRECTORY_NAME + PASTA_TRABALHO, parqueEolico, "PP");
                    var process = Process.Start(CALIBRADOR_PP_EXE);
                    process.WaitForExit();

                    FactoryController.getInstance().PrevisorController.montarEstruturaParaPrevisao(parqueEolico.SiglaPrevEOL, PrevisorController.PREVISAO_TIPO.POTENCIA_POTENCIA);
                    this.copiarPesosOtimos(parqueEolico, PrevisorController.PREVISAO_TIPO.POTENCIA_POTENCIA);
                    this.criarAtualizarArquivoParquesCalibrados(parqueEolico, PrevisorController.PREVISAO_TIPO.POTENCIA_POTENCIA);
                }
                FactoryDAO.getInstance().ParqueEolicoDAO.atualizarParqueFoiCalibrado(parqueEolico);
            }
            catch (Exception e)
            {
                throw new Exception("Ops, ocorreu um erro na calibração dos dados.");
            }
        }
        internal void atualizarParqueFoiPrevisto(ParqueEolico p)
        {
            try
            {
                SqlConnection connection = (SqlConnection)Database.openConnection();
                SqlCommand    command    = connection.CreateCommand();

                command.CommandText = "SELECT COUNT(*) FROM previsao WHERE idParque = " + p.Id + " AND tipo = '" + p.Previsao.Tipo + "'";
                int?count = int.Parse(command.ExecuteScalar().ToString());

                if (count != null && count != 0)
                {
                    command.CommandText = "UPDATE previsao SET data = GetDate() WHERE idParque = " + p.Id + ";";
                }
                else
                {
                    command.CommandText = "INSERT INTO previsao (foiPrevisto, data, idParque, tipo) VALUES (1,GetDate(), " + p.Id + ", '" + p.Previsao.Tipo + "')";
                }

                command.ExecuteNonQuery();
                connection.Close();
            }
            catch (Exception e)
            {
                throw new Exception("Ops, não foi possível atualizar o status de previsão do parque eólico." + e.Data);
            }
        }
Example #5
0
        public void gerarArquivosPotenciaMedia(ParqueEolico parqueEolico, string caminhoArquivo,
                                               String intervalo)
        {
            StreamWriter arquivo = new StreamWriter(caminhoArquivo + "\\" + parqueEolico.Nome + ".txt");

            try
            {
                SqlConnection connection = (SqlConnection)Database.openConnection();
                SqlCommand    command    = connection.CreateCommand();


                for (int mes = 1; mes <= 12; mes++)
                {
                    queryAgregarMesesCalcularMedia(command, parqueEolico, arquivo, mes.ToString(), intervalo);
                }

                arquivo.Close();
                connection.Close();
            }
            catch (Exception e)
            {
                arquivo.Close();
                throw e;
            }
        }
Example #6
0
        private static void queryAgregarMesesCalcularMedia(SqlCommand command, ParqueEolico parque,
                                                           StreamWriter file, String padraoMeses, String intervalo)
        {
            String query = "SELECT count(*), AVG(potenciaMedia), hora FROM parque_eolico_importacao WHERE mes in (" +
                           padraoMeses + ") AND idParque = " + parque.Id + " AND minuto = 0 AND ano >= 2012 AND potenciaMedia != '-999' " +
                           " AND intervalo = '" + intervalo + "' GROUP BY  hora;";

            command.CommandText = query;

            SqlDataReader reader = command.ExecuteReader();

            int contadorDeMeses = 1;

            while (reader.Read())
            {
                file.Write(Math.Round(reader.GetDouble((int)PotenciaMediaHoraMes.EnumCampos.POTENCIA_MEDIA), 4).ToString().Replace(",", ".") + " ");
                contadorDeMeses++;
            }
            // Se o contador de meses for menor que 24 é porque está faltando
            // a média de uma determinada hora do dia, em um determinado mês...
            if (contadorDeMeses < 25)
            {
                throw new Exception("Erro. Desculpe, está faltando importar dados para geração correta do arquivo de potência média...");
            }

            file.WriteLine();
            reader.Close();
        }
        private void criarPastaDeTrabalhoCalibrador(string caminhoCalibrador, ParqueEolico parqueEolico, string tipoCalibrador)
        {
            if (tipoCalibrador.Equals("PP"))
            {
                StreamWriter file = new StreamWriter(caminhoCalibrador);
                file.WriteLine(parqueEolico.SiglaPrevEOL);
                file.WriteLine(parqueEolico.PotenciaMaxima.ToString().Replace(',', '.'));
                file.WriteLine("8");
                file.WriteLine("5");
                file.Close();
            }

            if (tipoCalibrador.Equals("TR"))
            {
                StreamWriter file = new StreamWriter(caminhoCalibrador);
                file.WriteLine(parqueEolico.SiglaPrevEOL);
                file.WriteLine(parqueEolico.PotenciaMaxima.ToString().Replace(',', '.'));
                file.WriteLine("20");
                file.WriteLine("1");
                file.Close();
            }
            if (tipoCalibrador.Equals("VP"))
            {
                StreamWriter file = new StreamWriter(caminhoCalibrador);
                file.WriteLine(parqueEolico.SiglaPrevEOL);
                file.WriteLine(parqueEolico.PotenciaMaxima.ToString().Replace(',', '.'));
                file.WriteLine("6");
                file.WriteLine("5");
                file.Close();
            }
        }
        internal EntradaVentoPotencia GetDadosPrevisaoPotenciaVentoVisualizar(ParqueEolico parque)
        {
            EntradaVentoPotencia ret = null;

            try
            {
                SqlConnection connection = (SqlConnection)Database.openConnection();
                SqlCommand    command    = connection.CreateCommand();

                /*
                 * string query = "SELECT p.id, p.nome, p.siglaCPTEC, p.siglaPrevEOL, vv.dia, vv.mes, vv.ano, vv.mes " +
                 *  " FROM velocidadevento vv, direcaovento dv, parque p WHERE p.id = " + parque.Id +
                 *  " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id +
                 *  " AND vv.dia = dv.dia " +
                 *  " AND vv.mes = dv.mes " +
                 *  " AND vv.ano = dv.ano " +
                 *  " AND str_to_date(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia),'%Y-%m-%d') <= '" + String.Format("{0:yyyy-M-d}", DateTime.Now) + "'" +
                 *  " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC " +
                 *  " LIMIT 1;";
                 */
                /*
                 * string query = "SELECT TOP 1 p.id, p.nome, p.siglaCPTEC, p.siglaPrevEOL, p.siglaGETOT, vv.dia, vv.mes, vv.ano " +
                 * " FROM [NeuroEolica].[dbo].[velocidadevento] vv, [NeuroEolica].[dbo].[direcaovento] dv, [NeuroEolica].[dbo].[parque] p WHERE p.id = " + parque.Id +
                 * " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id +
                 * " AND vv.dia = dv.dia " +
                 * " AND vv.mes = dv.mes " +
                 * " AND vv.ano = dv.ano " +
                 * " AND CONVERT(DATETIME,(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia)),101) <= '" + DateTime.Now + "'" +
                 * " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC; ";*/
                DateTime dataAtual = DateTime.Now;
                string   query     = "SELECT TOP 1 p.id, p.nome, p.siglaCPTEC, p.siglaPrevEOL, p.siglaGETOT, vv.dia, vv.mes, vv.ano " +
                                     " FROM [NeuroEolica].[dbo].[velocidadevento] vv, [NeuroEolica].[dbo].[direcaovento] dv, [NeuroEolica].[dbo].[parque] p WHERE p.id = " + parque.Id +
                                     " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id +
                                     " AND vv.dia = dv.dia " +
                                     " AND vv.mes = dv.mes " +
                                     " AND vv.ano = dv.ano " +
                                     " AND CONVERT(DATETIME,(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia)),102) <= '" + String.Format("{0:yyyy-M-d}", dataAtual) + "' " +
                                     " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC; ";


                command.CommandText = query;

                SqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {
                    ParqueEolico p = new ParqueEolico(reader.GetInt32(0), reader.GetString(1),
                                                      reader.GetString(2), reader.GetString(3), reader.GetString(4), -1, -1, new Calibracao());

                    ret = new EntradaVentoPotencia(p, reader.GetInt32(5), reader.GetInt32(6), reader.GetInt32(7), -1, "", "", "");
                }

                reader.Close();
            }
            catch (Exception e)
            {
                throw e;
            }
            return(ret);
        }
Example #9
0
        public void gerarArquivoTreinamentoVentoPotencia(ParqueEolico parqueEolico, string caminhoArquivo, string caminhoPotenciaMedia,
                                                         DateTime dataInicial, DateTime dataFinal, String intervalo)
        {
            SqlConnection connection = (SqlConnection)Database.openConnection();
            SqlCommand    command    = connection.CreateCommand();

            //command.CommandTimeout = 120;
            try
            {
                Dictionary <String, Object> dicPotenciaMedia = FactoryDAO.getInstance().PotenciaMediaHoraMesDAO.
                                                               carregarArquivoPotenciaMedia(caminhoPotenciaMedia, parqueEolico.Nome);

                for (int diaPrevisto = 0; diaPrevisto < 5; diaPrevisto++)
                {
                    this.montarArquivoVentoPotencia(command, dicPotenciaMedia, diaPrevisto, parqueEolico, caminhoArquivo,
                                                    dataInicial, dataFinal, intervalo);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
                throw e;
            }
            connection.Close();;
        }
        public bool Exists(ParqueEolico parque)
        {
            bool ret = false;

            try
            {
                SqlConnection connection = (SqlConnection)Database.openConnection();
                SqlCommand    command    = connection.CreateCommand();
                command.CommandText = "SELECT count(*) FROM parque WHERE (nome = @Nome OR siglaPrevEOL = @SiglaPrevEOL AND siglaCPTEC= @SiglaCPTEC) AND id != @Id;";
                command.Parameters.AddWithValue("Id", parque.Id);
                command.Parameters.AddWithValue("Nome", parque.Nome);
                command.Parameters.AddWithValue("SiglaCPTEC", parque.SiglaCPTEC);
                command.Parameters.AddWithValue("SiglaPrevEOL", parque.SiglaPrevEOL);
                SqlDataReader reader = command.ExecuteReader();

                // Corresponde ao count(*)
                reader.Read();
                if (reader.GetInt32(0) > 0)
                {
                    ret = true;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(ret);
        }
        internal void realizarPrevisao(ParqueEolico parque, string tipo)
        {
            String tag = parque.SiglaGETOT;

            String initialDate     = "06/08/2014 13:00:00";
            String currentDateTime = "06/08/2014 13:00:00";

            TimeSpan span   = new TimeSpan(3, 0, 0);
            string   format = "dd/MM/yyyy HH:mm:ss";

            //Get current date
            DateTime time2 = DateTime.Now;

            currentDateTime = time2.ToString(format);

            //Get past date from desired time interval
            DateTime time1 = time2.Subtract(span);

            initialDate = time1.ToString(format);

            MyPiFileUtil fileReader = new MyPiFileUtil();

            if (tipo.Equals("PP"))
            {
                this.atualizarParquePastaTrabalho(parque.SiglaPrevEOL, PREVISOR_PP_DIRECTORY_NAME);
                this.atualizarCaminhoDoExecutavelDoPrevisor(Path.GetFullPath(PREVISOR_PP_DIRECTORY_NAME));

                //Abrir PI
                MyPiController controller = new MyPiController(tag, initialDate, currentDateTime);
                controller.run();
                ArrayList integralizedPowerList = fileReader.readPotRequestFile(tag, PREVISOR_PP_NUMERO_ENTRADAS);

                String path = PREVISOR_PP_DIRECTORY_NAME + "/" + parque.SiglaPrevEOL + PASTA_ENTRADAS;

                //Escrever arquivo com entradas para previsão
                fileReader.writeFile(integralizedPowerList, tag, path);

                this.executarPrevisor(PREVISOR_PP_EXE);
            }
            else if (tipo.Equals("TR"))
            {
                this.atualizarParquePastaTrabalho(parque.SiglaPrevEOL, PREVISOR_TR_DIRECTORY_NAME);
                this.atualizarCaminhoDoExecutavelDoPrevisor(Path.GetFullPath(PREVISOR_TR_DIRECTORY_NAME));

                //Abrir PI
                MyPiController controller = new MyPiController(tag, initialDate, currentDateTime);
                controller.run();
                ArrayList integralizedPowerList = fileReader.readPotRequestFile(tag, PREVISOR_TR_NUMERO_ENTRADAS);

                String path = PREVISOR_TR_DIRECTORY_NAME + "/" + parque.SiglaPrevEOL + PASTA_ENTRADAS;

                //Escrever arquivo com entradas para previsão
                fileReader.writeFile(integralizedPowerList, tag, path);

                //executar previsão
                this.executarPrevisor(PREVISOR_TR_EXE);
            }
            FactoryDAO.getInstance().ParqueEolicoDAO.atualizarParqueFoiPrevisto(parque);
        }
 private void criarAtualizarArquivoParquesCalibrados(ParqueEolico parqueEolico, PrevisorController.PREVISAO_TIPO tipo)
 {
     if (parqueEolico.Calibracao.FoiCalibrado == 0)
     {
         StreamWriter file = File.AppendText(Path.GetFullPath("Arquivos") + ARQUIVO_PARQUES_CALIBRADOS);
         file.WriteLine(parqueEolico.SiglaPrevEOL + "_" + tipo);
         file.Close();
     }
 }
        public void gerarArquivoTreinamentoVentoPotencia(ParqueEolico parqueEolico, DateTime dataInicial, DateTime dataFinal, String intervalo)
        {
            DirectoryInfo directoryInfoCalibrador    = Util.Util.GetOrCreateIfNotExistsDiretoriosCalibracao(CALIBRADOR_VP_DIRECTORY_NAME + "/" + parqueEolico.SiglaPrevEOL);
            DirectoryInfo directoryInfoPotenciaMedia = Util.Util.GetOrCreateIfNotExistsDiretorioPotenciaMedia();

            FactoryDAO.getInstance().PotenciaMediaHoraMesDAO.gerarArquivosPotenciaMedia(parqueEolico, directoryInfoPotenciaMedia.FullName, intervalo);
            FactoryDAO.getInstance().CPTECDAO.gerarArquivoTreinamentoVentoPotencia(parqueEolico, directoryInfoCalibrador.FullName + Util.Util.getEntradaPath(),
                                                                                   directoryInfoPotenciaMedia.FullName, dataInicial, dataFinal, intervalo);
            this.criarAtualizarArquivoParquesCalibrados(parqueEolico, PrevisorController.PREVISAO_TIPO.VENTO_POTENCIA);
        }
Example #14
0
 public void atualizar(ParqueEolico parque)
 {
     if (!ParqueEolicoDAO.Exists(parque))
     {
         ParqueEolicoDAO.Update(parque);
     }
     else
     {
         throw new Exception("Já existe um parque eólico cadastrado com o nome ou código informado.");
     }
 }
 public void Delete(ParqueEolico parque)
 {
     try
     {
         SqlConnection connection = (SqlConnection)Database.openConnection();
         SqlCommand    command    = connection.CreateCommand();
         command.CommandText = "DELETE FROM parque WHERE id = @Id";
         command.Parameters.AddWithValue("Id", parque.Id);
         command.ExecuteNonQuery();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        private void UpdateDatagridRowsAndColumns(bool verTodosOsAtributos)
        {
            if (this.cmbBoxParquesEolicos.SelectedItem != null)
            {
                ParqueEolico parqueEolico = (ParqueEolico)this.cmbBoxParquesEolicos.SelectedItem;
                String       intervalo    = ((ComboBoxItem)this.cmbBoxIntervalo.SelectedItem).Tag.ToString();

                BackgroundWorker worker = new BackgroundWorker();

                worker.DoWork += (o, ea) =>
                {
                    try
                    {
                        List <ParqueEolicoImportacaoPrevEOL> listaDadosImportados = FactoryController.getInstance().
                                                                                    PrevEOL_Controller.getDadosImportados(parqueEolico.Id, this.Limit, verTodosOsAtributos,
                                                                                                                          intervalo);

                        this.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            if (listaDadosImportados.Count > 0)
                            {
                                this.ShowDataGrid();
                                this.dataGridVisualizarDados.ItemsSource = listaDadosImportados;
                            }
                            else
                            {
                                this.ShowMessageEmptyData();
                            }
                        }));
                    }
                    catch (Exception e)
                    {
                        this.Dispatcher.BeginInvoke(new Action(() => { this.txtMessage.Text = e.Message; }));
                    }
                };
                worker.RunWorkerCompleted += (param, args) =>
                {
                    if (args.Error != null)
                    {
                        MessageBox.Show(args.Error.ToString());
                    }
                    this.BusyIndicatorCarregando.IsBusy = false;
                };

                BusyIndicatorCarregando.IsBusy = true;
                worker.RunWorkerAsync();
            }
        }
        public List <ParqueEolicoImportacaoPrevEOL> GetList(ParqueEolico parqueEolico,
                                                            DateTime dataInicial, DateTime dataFinal, String intervalo)
        {
            SqlConnection connection = (SqlConnection)Database.openConnection();
            SqlCommand    command    = connection.CreateCommand();

            List <ParqueEolicoImportacaoPrevEOL> listaCompleta = new List <ParqueEolicoImportacaoPrevEOL>();


            List <ParqueEolicoImportacaoPrevEOL> listaMesAtual = new List <ParqueEolicoImportacaoPrevEOL>();

            /*
             * command.CommandText = "SELECT dia, mes, ano, hora, minuto, segundo, velocidademedia," +
             *  "direcaomedia, PotenciaMedia FROM parque_eolico_importacao WHERE idParque = " + parqueEolico.Id +
             *  " AND CONVERT(DATETIME,(CONCAT(ano,'-',mes,'-',dia)),102) >= '" + String.Format("{0:yyyy-M-d}", dataInicial) + "' " +
             *  " AND CONVERT(DATETIME,(CONCAT(ano,'-',mes,'-',dia)),102) <= '" + String.Format("{0:yyyy-M-d}", dataFinal) + "' " +
             *  " AND intervalo = '" + intervalo + "'"
             +" ORDER BY ano, mes, dia, hora, minuto LIMIT 18000;" ;// Tamanho máximo de instâncias para o treinamento
             */
            command.CommandText = "SELECT TOP 18000 dia, mes, ano, hora, minuto, segundo, velocidademedia," +
                                  "direcaomedia, PotenciaMedia FROM parque_eolico_importacao WHERE idParque = " + parqueEolico.Id +
                                  " AND CONVERT(DATETIME,(CONCAT(ano,'-',mes,'-',dia)),102) >= '" + String.Format("{0:yyyy-M-d}", dataInicial) + "' " +
                                  " AND CONVERT(DATETIME,(CONCAT(ano,'-',mes,'-',dia)),102) <= '" + String.Format("{0:yyyy-M-d}", dataFinal) + "' " +
                                  " AND intervalo = '" + intervalo + "'"
                                  + " ORDER BY ano, mes, dia, hora, minuto;";// Tamanho máximo de instâncias para o treinamento

            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                listaMesAtual.Add(new ParqueEolicoImportacaoPrevEOL(reader.GetInt32((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.DIA),
                                                                    reader.GetInt32((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.MES), reader.GetInt32((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.ANO),
                                                                    reader.GetInt32((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.HORA), reader.GetInt32((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.MINUTO),
                                                                    reader.GetInt32((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.SEGUNDO),
                                                                    Double.Parse(reader.GetString((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.VELOCIDADE_MEDIA).Replace(".", ",")),
                                                                    Double.Parse(reader.GetString((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.DIRECAO_MEDIA).Replace(".", ",")),
                                                                    reader.GetDouble((int)ParqueEolicoImportacaoPrevEOL.EnumCampos.POTENCIA)));
            }
            reader.Close();

            //listaCompleta.AddRange(ajustarTamanhoLista(listaMesAtual, 1200));
            listaCompleta.AddRange(listaMesAtual);

            connection.Close();

            return(listaCompleta);
        }
        public void calibrarVentoPotencia(ParqueEolico parqueEolico)
        {
            try
            {
                this.criarCaminhoDeDiscoCalibrador(Path.GetFullPath(CALIBRADOR_VP_DIRECTORY_NAME));
                this.criarPastaDeTrabalhoCalibrador(CALIBRADOR_VP_DIRECTORY_NAME + PASTA_TRABALHO, parqueEolico, "VP");
                var process = Process.Start(CALIBRADOR_VP_EXE);
                process.WaitForExit();

                FactoryDAO.getInstance().ParqueEolicoDAO.atualizarParqueFoiCalibrado(parqueEolico);
                FactoryController.getInstance().PrevisorController.montarEstruturaParaPrevisao(parqueEolico.SiglaPrevEOL, PrevisorController.PREVISAO_TIPO.VENTO_POTENCIA);
                this.copiarPesosOtimos(parqueEolico, PrevisorController.PREVISAO_TIPO.VENTO_POTENCIA);
            }
            catch (Exception ex)
            {
                throw new Exception("Ops, ocorreu um erro durante a calibração dos dados.");
            }
        }
        public void gerarArquivosTreinamentoPotenciaPotencia(ParqueEolico parqueEolico, int numeroDeEntradas,
                                                             DateTime dataInicial, DateTime dataFinal, String intervalo, bool isTempoReal)
        {
            String parque      = parqueEolico.Nome.Replace(' ', '_');
            String nomeArquivo = "";

            try
            {
                List <ParqueEolicoImportacaoPrevEOL> listaCompleta = FactoryDAO.getInstance().PrevEOLDAO.GetList(parqueEolico,
                                                                                                                 dataInicial, dataFinal, intervalo);

                DirectoryInfo directoryInfo;
                if (isTempoReal)
                {
                    directoryInfo = Util.Util.GetOrCreateIfNotExistsDiretoriosCalibracao(CALIBRADOR_TR_DIRECTORY_NAME + "/" + parqueEolico.SiglaPrevEOL);
                }
                else
                {
                    directoryInfo = Util.Util.GetOrCreateIfNotExistsDiretoriosCalibracao(CALIBRADOR_PP_DIRECTORY_NAME + "/" + parqueEolico.SiglaPrevEOL);
                }

                if (intervalo.Equals(Util.Util.DEZ_MINUTOS))
                {
                    nomeArquivo = parque + "_10_min_full_" + (2 + numeroDeEntradas) + "_36.txt";
                    this.gerarArquivoPotenciaPotenciaCompleto(directoryInfo.FullName + Util.Util.getEntradaPath(),
                                                              numeroDeEntradas, nomeArquivo, 1, 36, listaCompleta);
                    this.gerarArquivosPotenciaPotenciaDiarios10min(directoryInfo.FullName + Util.Util.getEntradaPath(),
                                                                   numeroDeEntradas, nomeArquivo, parque);
                }
                else if (intervalo.Equals(Util.Util.TRINTA_MINUTOS))
                {
                    nomeArquivo = parque + "_30_min_full_" + (2 + numeroDeEntradas) + "_48.txt";
                    this.gerarArquivoPotenciaPotenciaCompleto(directoryInfo.FullName + Util.Util.getEntradaPath(),
                                                              numeroDeEntradas, nomeArquivo, 5, 48, listaCompleta);
                    this.gerarArquivosPotenciaPotenciaDiarios30min(directoryInfo.FullName + Util.Util.getEntradaPath(),
                                                                   numeroDeEntradas, nomeArquivo, parque);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
            }
        }
 private void copiarPesosOtimos(ParqueEolico p, PrevisorController.PREVISAO_TIPO tipo)
 {
     if (tipo == PrevisorController.PREVISAO_TIPO.POTENCIA_POTENCIA)
     {
         DirectoryInfo dir      = new DirectoryInfo(CALIBRADOR_PP_DIRECTORY_NAME + "/" + p.SiglaPrevEOL + "/" + PASTA_PESOS_OTIMOS);
         FileInfo[]    fileInfo = dir.GetFiles();
         if (fileInfo.Length != 0)
         {
             foreach (FileInfo file in fileInfo)
             {
                 FactoryController.getInstance().PrevisorController.importarPesoOtimo(file,
                                                                                      PrevisorController.PREVISAO_TIPO.POTENCIA_POTENCIA, p.SiglaPrevEOL);
             }
         }
     }
     else if (tipo == PrevisorController.PREVISAO_TIPO.TEMPO_REAL)
     {
         DirectoryInfo dir      = new DirectoryInfo(CALIBRADOR_TR_DIRECTORY_NAME + "/" + p.SiglaPrevEOL + "/" + PASTA_PESOS_OTIMOS);
         FileInfo[]    fileInfo = dir.GetFiles();
         if (fileInfo.Length != 0)
         {
             foreach (FileInfo file in fileInfo)
             {
                 FactoryController.getInstance().PrevisorController.importarPesoOtimo(file,
                                                                                      PrevisorController.PREVISAO_TIPO.TEMPO_REAL, p.SiglaPrevEOL);
             }
         }
     }
     else
     {
         DirectoryInfo dir      = new DirectoryInfo(CALIBRADOR_VP_DIRECTORY_NAME + "/" + p.SiglaPrevEOL + "/" + PASTA_PESOS_OTIMOS);
         FileInfo[]    fileInfo = dir.GetFiles();
         if (fileInfo.Length != 0)
         {
             foreach (FileInfo file in fileInfo)
             {
                 FactoryController.getInstance().PrevisorController.importarPesoOtimo(file,
                                                                                      PrevisorController.PREVISAO_TIPO.VENTO_POTENCIA, p.SiglaPrevEOL);
             }
         }
     }
 }
        private void InitializeMyComponents(EnumParqueEolicoFormType tipo, object elemento)
        {
            if (tipo == EnumParqueEolicoFormType.CADASTRAR)
            {
                this.btnAction.Content = "Cadastrar";
                this.txtTitulo.Text    = "Cadastrar Parque Eólico";

                this.parqueEolico      = new ParqueEolico();
                this.strPotenciaMaxima = "0";
            }
            else if (tipo == EnumParqueEolicoFormType.ALTERAR)
            {
                this.btnAction.Content = "Alterar";
                this.txtTitulo.Text    = "Alterar Parque Eólico";

                this.parqueEolico      = (ParqueEolico)elemento;
                this.strPotenciaMaxima = Math.Round(this.parqueEolico.PotenciaMaxima, 2).ToString().Replace(".", ",");
            }
            this.DataContext = parqueEolico;
        }
 public void Insert(ParqueEolico parque)
 {
     try
     {
         SqlConnection connection = (SqlConnection)Database.openConnection();
         SqlCommand    command    = connection.CreateCommand();
         command.CommandText = "INSERT INTO parque (nome, siglaCPTEC, siglaPrevEOL, siglaGETOT, numMaquinas, potenciaMaxima) VALUES (@Nome, @SiglaCPTEC, @SiglaPrevEOL, @SiglaGETOT, @NumMaquinas, @PotenciaMaxima)";
         command.Parameters.AddWithValue("Nome", parque.Nome);
         command.Parameters.AddWithValue("SiglaCPTEC", parque.SiglaCPTEC);
         command.Parameters.AddWithValue("SiglaPrevEOL", parque.SiglaPrevEOL);
         command.Parameters.AddWithValue("SiglaGETOT", parque.SiglaGETOT);
         command.Parameters.AddWithValue("NumMaquinas", parque.NumMaquinas);
         command.Parameters.AddWithValue("PotenciaMaxima", parque.PotenciaMaxima);
         command.ExecuteNonQuery();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
 public void Update(ParqueEolico parque)
 {
     try
     {
         SqlConnection connection = (SqlConnection)Database.openConnection();
         SqlCommand    command    = connection.CreateCommand();
         command.CommandText = "UPDATE parque SET nome = @Nome, siglaCPTEC = @SiglaCPTEC, siglaPrevEOL = @SiglaPrevEOL, siglaGETOT = @SiglaGETOT, numMaquinas = @NumMaquinas, " +
                               "potenciaMaxima = @PotenciaMaxima WHERE id = @Id";
         command.Parameters.AddWithValue("Id", parque.Id);
         command.Parameters.AddWithValue("Nome", parque.Nome);
         command.Parameters.AddWithValue("SiglaCPTEC", parque.SiglaCPTEC);
         command.Parameters.AddWithValue("SiglaPrevEOL", parque.SiglaPrevEOL);
         command.Parameters.AddWithValue("SiglaGETOT", parque.SiglaGETOT);
         command.Parameters.AddWithValue("NumMaquinas", parque.NumMaquinas);
         command.Parameters.AddWithValue("PotenciaMaxima", parque.PotenciaMaxima);
         int numRowsUpdated = command.ExecuteNonQuery();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Example #24
0
        private void montarArquivoVentoPotencia(SqlCommand command, Dictionary <String, Object> dic, int diaPrevisto,
                                                ParqueEolico parqueEolico, string caminhoArquivo, DateTime dataInicial, DateTime dataFinal, String intervalo)
        {
            StreamWriter file = null;

            try
            {
                String fileName = caminhoArquivo + "NEURO_EOLICA_ENTRADAS_0" + (diaPrevisto + 1) + ".txt";

                /*
                 * command.CommandText = "SELECT parque.potenciaMedia, parque.dia, parque.mes, parque.ano, parque.hora, v.velocidade00 , v.velocidade01," +
                 *      "v.velocidade02, v.velocidade03, v.velocidade04, v.velocidade05, v.velocidade06, v.velocidade07, " +
                 *      "v.velocidade08, v.velocidade09, v.velocidade10, v.velocidade11, v.velocidade12, v.velocidade13, " +
                 *      "v.velocidade14, v.velocidade15, v.velocidade16, v.velocidade17, v.velocidade18, v.velocidade19, " +
                 *      "v.velocidade20, v.velocidade21, v.velocidade22, v.velocidade23, d.direcao00 , d.direcao01, d.direcao02, " +
                 *      "d.direcao03, d.direcao04, d.direcao05, d.direcao06, d.direcao07, d.direcao08, d.direcao09, d.direcao10, " +
                 *      "d.direcao11, d.direcao12, d.direcao13, d.direcao14, d.direcao15, d.direcao16, d.direcao17, d.direcao18, " +
                 *      "d.direcao19, d.direcao20, d.direcao21, d.direcao22, d.direcao23 " +
                 *      "FROM velocidadevento v, direcaovento d, parque_eolico_importacao parque " +
                 *      "WHERE v.diaPrevisto = " + diaPrevisto + " AND d.diaPrevisto = " + diaPrevisto +
                 *      " AND v.idParque = " + parqueEolico.Id + " AND d.idParque = " + parqueEolico.Id + " and parque.idParque = " + parqueEolico.Id +
                 *      " AND str_to_date(CONCAT(v.ano,'-',v.mes,'-',v.dia),'%Y-%m-%d')  = str_to_date(CONCAT(d.ano,'-',d.mes,'-',d.dia),'%Y-%m-%d')" +
                 *      " AND str_to_date(CONCAT(v.ano,'-',v.mes,'-',v.dia),'%Y-%m-%d')  = str_to_date(CONCAT(parque.ano,'-',parque.mes,'-',parque.dia),'%Y-%m-%d')" +
                 *      " AND str_to_date(CONCAT(v.ano,'-',v.mes,'-',v.dia),'%Y-%m-%d') >= '" + String.Format("{0:yyyy-M-d}", dataInicial) + "' " +
                 *      " AND str_to_date(CONCAT(v.ano,'-',v.mes,'-',v.dia),'%Y-%m-%d') <= '" + String.Format("{0:yyyy-M-d}", dataFinal) + "' " +
                 *      " AND parque.minuto = 00 AND parque.intervalo = '" + intervalo + "';";
                 */

                command.CommandText = "SELECT parque.potenciaMedia, parque.dia, parque.mes, parque.ano, parque.hora, v.velocidade00 , v.velocidade01," +
                                      "v.velocidade02, v.velocidade03, v.velocidade04, v.velocidade05, v.velocidade06, v.velocidade07, " +
                                      "v.velocidade08, v.velocidade09, v.velocidade10, v.velocidade11, v.velocidade12, v.velocidade13, " +
                                      "v.velocidade14, v.velocidade15, v.velocidade16, v.velocidade17, v.velocidade18, v.velocidade19, " +
                                      "v.velocidade20, v.velocidade21, v.velocidade22, v.velocidade23, d.direcao00 , d.direcao01, d.direcao02, " +
                                      "d.direcao03, d.direcao04, d.direcao05, d.direcao06, d.direcao07, d.direcao08, d.direcao09, d.direcao10, " +
                                      "d.direcao11, d.direcao12, d.direcao13, d.direcao14, d.direcao15, d.direcao16, d.direcao17, d.direcao18, " +
                                      "d.direcao19, d.direcao20, d.direcao21, d.direcao22, d.direcao23 " +
                                      "FROM [NeuroEolica].[dbo].[velocidadevento] v, [NeuroEolica].[dbo].[direcaovento] d, [NeuroEolica].[dbo].[parque_eolico_importacao] parque " +
                                      "WHERE v.diaPrevisto = " + diaPrevisto + " AND d.diaPrevisto = " + diaPrevisto +
                                      " AND v.idParque = " + parqueEolico.Id + " AND d.idParque = " + parqueEolico.Id + " and parque.idParque = " + parqueEolico.Id +
                                      " AND CONVERT(DATETIME,(CONCAT(v.ano,'-',v.mes,'-',v.dia)),102)  = CONVERT(DATETIME,(CONCAT(d.ano,'-',d.mes,'-',d.dia)),102)" +
                                      " AND CONVERT(DATETIME,(CONCAT(v.ano,'-',v.mes,'-',v.dia)),102)  = CONVERT(DATETIME,(CONCAT(parque.ano,'-',parque.mes,'-',parque.dia)),102)" +
                                      " AND CONVERT(DATETIME,(CONCAT(v.ano,'-',v.mes,'-',v.dia)),102) >= '" + String.Format("{0:yyyy-M-d}", dataInicial) + "' " +
                                      " AND CONVERT(DATETIME,(CONCAT(v.ano,'-',v.mes,'-',v.dia)),102) <= '" + String.Format("{0:yyyy-M-d}", dataFinal) + "' " +
                                      " AND parque.minuto = 00 AND parque.intervalo = '" + intervalo + "';";

                SqlDataReader reader = command.ExecuteReader();

                file = new StreamWriter(fileName);

                //this.criarCabecalhoArquivo(file);
                this.criarCorpoArquivo(file, reader, dic);

                reader.Close();
                file.Close();
            }
            catch (Exception e)
            {
                file.Close();
                Console.WriteLine(e.Message);
            }
        }
        public List <List <EntradaVentoPotencia> > GetDadosPrevisaoPotenciaVento(ParqueEolico parque, Dictionary <String, Object> dicPotenciaMedia)
        {
            List <List <EntradaVentoPotencia> > ret = new List <List <EntradaVentoPotencia> >();

            SqlConnection connection = (SqlConnection)Database.openConnection();
            SqlCommand    command    = connection.CreateCommand();

            for (int diaPrevisto = 0; diaPrevisto < 5; diaPrevisto++)
            {
                /*
                 * string query = "SELECT p.id, p.nome, vv.dia, vv.mes, vv.ano, vv.mes, vv.velocidade00, vv.velocidade01, " +
                 * " vv.velocidade02, vv.velocidade03, vv.velocidade04, vv.velocidade05, vv.velocidade06, vv.velocidade07, vv.velocidade08," +
                 * " vv.velocidade09, vv.velocidade10, vv.velocidade11, vv.velocidade12, vv.velocidade13, vv.velocidade14, vv.velocidade15," +
                 * " vv.velocidade16, vv.velocidade17, vv.velocidade18, vv.velocidade19, vv.velocidade20, vv.velocidade21, vv.velocidade22, " +
                 * " vv.velocidade23, dv.direcao00, dv.direcao01, dv.direcao02, dv.direcao03, dv.direcao04, dv.direcao05, dv.direcao06, " +
                 * " dv.direcao07, dv.direcao08, dv.direcao09, dv.direcao10, dv.direcao11, dv.direcao12, dv.direcao13, dv.direcao14, dv.direcao15," +
                 * " dv.direcao16, dv.direcao17, dv.direcao18, dv.direcao19, dv.direcao20, dv.direcao21, dv.direcao22, " +
                 * " dv.direcao23 FROM velocidadevento vv, direcaovento dv, parque p WHERE p.id = " + parque.Id +
                 *  " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id +
                 *  " AND vv.dia = dv.dia " +
                 *  " AND vv.mes = dv.mes " +
                 *  " AND vv.ano = dv.ano " +
                 *  " AND vv.diaPrevisto = " + diaPrevisto +
                 *  " AND str_to_date(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia),'%Y-%m-%d') <= '" + String.Format("{0:yyyy-M-d}", DateTime.Now) + "'" +
                 *  " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC " +
                 *  " LIMIT 1;";
                 */
                DateTime dataAgora = DateTime.Now;

                string query = "SELECT TOP 1 p.id, p.nome, vv.dia, vv.mes, vv.ano, vv.velocidade00, vv.velocidade01, " +
                               " vv.velocidade02, vv.velocidade03, vv.velocidade04, vv.velocidade05, vv.velocidade06, vv.velocidade07, vv.velocidade08," +
                               " vv.velocidade09, vv.velocidade10, vv.velocidade11, vv.velocidade12, vv.velocidade13, vv.velocidade14, vv.velocidade15," +
                               " vv.velocidade16, vv.velocidade17, vv.velocidade18, vv.velocidade19, vv.velocidade20, vv.velocidade21, vv.velocidade22, " +
                               " vv.velocidade23, dv.direcao00, dv.direcao01, dv.direcao02, dv.direcao03, dv.direcao04, dv.direcao05, dv.direcao06, " +
                               " dv.direcao07, dv.direcao08, dv.direcao09, dv.direcao10, dv.direcao11, dv.direcao12, dv.direcao13, dv.direcao14, dv.direcao15," +
                               " dv.direcao16, dv.direcao17, dv.direcao18, dv.direcao19, dv.direcao20, dv.direcao21, dv.direcao22, " +
                               " dv.direcao23 FROM velocidadevento vv, direcaovento dv, parque p WHERE p.id = " + parque.Id +
                               " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id +
                               " AND vv.dia = dv.dia " +
                               " AND vv.mes = dv.mes " +
                               " AND vv.ano = dv.ano " +
                               " AND vv.diaPrevisto = " + diaPrevisto +
                               " AND CONVERT(DATETIME,(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia)),102) <= '" + String.Format("{0:yyyy-M-d}", dataAgora) + "' " +
                               " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC;";

                command.CommandText = query;

                SqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {
                    List <EntradaVentoPotencia> entrada = new List <EntradaVentoPotencia>();
                    // 24 valores de velocidade e direção correspondentes a 1 valor por hora.
                    int totalHorasPorDia = 24;
                    for (int hora = 0; hora < totalHorasPorDia; hora++)
                    {
                        // A chave do dictionary de potencias medias é a hora;mes
                        string key = hora + ";" + reader.GetInt32(3);

                        ParqueEolico p = new ParqueEolico(reader.GetInt32(0), reader.GetString(1), "", "", "", 0, 0, new Calibracao());

                        entrada.Add(new EntradaVentoPotencia(p, reader.GetInt32(2), reader.GetInt32(3),
                                                             reader.GetInt32(4), hora, reader.GetString(5 + hora), reader.GetString(29 + hora),
                                                             (string)dicPotenciaMedia[key]));
                    }
                    ret.Add(entrada);
                }

                reader.Close();
            }
            return(ret);
        }
Example #26
0
 public void Delete(ParqueEolico parque)
 {
     ParqueEolicoDAO.Delete(parque);
 }
        private void UpdateDatagridItemsSourceCPTEC()
        {
            this.cmbBoxIntervalo.Visibility = Visibility.Hidden;
            if (this.cmbBoxParquesEolicos.SelectedItem != null)
            {
                ParqueEolico parqueEolico = (ParqueEolico)this.cmbBoxParquesEolicos.SelectedItem;

                BackgroundWorker worker = new BackgroundWorker();

                worker.DoWork += (o, ea) =>
                {
                    try
                    {
                        List <ParqueEolicoImportacaoCPTEC> dados = FactoryController.getInstance().
                                                                   CPTEC_Controller.getDadosImportados(parqueEolico.Id, this.Limit);

                        this.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            if (dados.Count > 0)
                            {
                                this.TreeViewDadosCPTEC.Items.Clear();
                            }

                            for (int i = 0; i < dados.Count; i++)
                            {
                                TreeViewItem item = new TreeViewItem();
                                item.Header       = "Dia Previsto: " + (dados[i].diaPrevisto + 1).ToString().PadLeft(2, '0') +
                                                    " | " + dados[i].dia.PadLeft(2, '0') + "/" + dados[i].mes.PadLeft(2, '0') + "/" + dados[i].ano;
                                item.Margin = new Thickness(5);

                                List <string> listVelocidadeDirecao = new List <string>();
                                List <string> listaVelocidades      = dados[i].velocidades;
                                List <string> listaDirecoes         = dados[i].direcoes;
                                for (int k = 0; k < listaVelocidades.Count; k++)
                                {
                                    listVelocidadeDirecao.Add("Hora: " + k.ToString().PadLeft(2, '0') + ": " +
                                                              "| Velocidade: " + dados[i].velocidades[k].PadLeft(5, '0') + " " +
                                                              "| Direção: " + dados[i].direcoes[k]);
                                }

                                item.ItemsSource = listVelocidadeDirecao;

                                this.TreeViewDadosCPTEC.Items.Add(item);
                            }
                            this.ShowTreeView();
                        }));
                    }
                    catch (Exception e)
                    {
                        this.Dispatcher.BeginInvoke(new Action(() => { this.txtMessage.Text = e.Message; }));
                    }
                };
                worker.RunWorkerCompleted += (param, args) =>
                {
                    if (args.Error != null)
                    {
                        MessageBox.Show(args.Error.ToString());
                    }
                    this.BusyIndicatorCarregando.IsBusy = false;
                };

                BusyIndicatorCarregando.IsBusy = true;
                worker.RunWorkerAsync();
            }
        }