コード例 #1
0
        public void PasarAModoAhorroEnergia()
        {
            Inteligente Tele     = new Inteligente("TV", "DDEAEA7C1ADE458991D496812D5D41FA");
            Inteligente LavaRopa = new Inteligente("LAVARROPAS", "A0BA3245EAFC4EC994CC841698B835C0");

            Tele.Encender();
            Tele.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro = Tele.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro.AddHours(-300);

            LavaRopa.Encender();
            LavaRopa.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro = LavaRopa.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro.AddHours(-60);

            List <Inteligente> lista = new List <Inteligente>();

            lista.Add(Tele);
            lista.Add(LavaRopa);

            Assert.IsFalse(Tele.EstaApagado);

            Planificador pl = Planificador.getInstance();

            pl.Iniciar();
            pl.agregarTareaTest(lista, 1);

            Thread.Sleep(3000);
            pl.Detener();

            Assert.IsTrue(Tele.EstaApagado);
        }
コード例 #2
0
        //• Consumo por hogar/periodo.
        public static decimal consumoPorHogarYPeriodo(int idUsuario, DateTime fechaDesde, DateTime fechaHasta)
        {
            SGEContext context = new SGEContext();
            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>(context);
            decimal consumo = 0;

            var includesCliente = new List <Expression <Func <Cliente, object> > >()
            {
                c => c.Inteligentes
            };
            Cliente cliente = repoCliente.Single(u => u.Id == idUsuario, includesCliente);

            var includesInteligente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones
            };

            foreach (Inteligente inteligente in cliente.Inteligentes)
            {
                BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(context);
                Inteligente inte = repoInteligente.Single(i => i.Id == inteligente.Id, includesInteligente);

                consumo += inte.ObtenerConsumoPeriodo(fechaDesde, fechaHasta);
            }

            foreach (Estandar estandar in cliente.Estandars)
            {
                consumo += estandar.ConsumoAproximado((int)Math.Ceiling(fechaHasta.Subtract(fechaDesde).TotalHours));
            }

            return(consumo);
        }
コード例 #3
0
        public JsonResult CambiarEstado(int idInteligente, EstadoDispositivo estado)
        {
            SGEContext context = new SGEContext();

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(context);
            Inteligente inteligente = repoInteligente.Single(i => i.Id == idInteligente);

            inteligente.Context = context;

            switch (estado)
            {
            case EstadoDispositivo.AhorroEnergia:
                inteligente.ColocarEnAhorroEnergia();
                break;

            case EstadoDispositivo.Apagado:
                inteligente.Apagar();
                break;

            case EstadoDispositivo.Encendido:
                inteligente.Encender();
                break;

            default:
                return(Json(new { success = false, error = "Estado desconocido" }));
            }


            repoInteligente.Update(inteligente);

            return(Json(new { success = true }));
        }
コード例 #4
0
        public JsonResult ejecutarSimplex()
        {
            Dictionary <string, double> resultadoSimplex = ejecucionSimplex();
            var        UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var        user        = UserManager.FindById(User.Identity.GetUserId());
            SGEContext db          = new SGEContext();

            if (resultadoSimplex == null)
            {
                return(Json(new { success = false, error = "No se puede ejecutar el simplex" }));
            }

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(db);
            var includesCliente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.RegistroDeActivaciones,
                i => i.Clientes
            };
            Inteligente inteligente = null;

            foreach (KeyValuePair <string, double> item in resultadoSimplex)
            {
                if (item.Value > 0 && item.Key != "TotalHorasRestantes" && item.Key != "ConsumoRestanteTotal")
                {
                    inteligente = repoInteligente.Single(i => i.Nombre == item.Key && i.Clientes.Any(c => c.NombreUsuario == user.UserName), includesCliente);
                    inteligente.Encender();
                    repoInteligente.Update(inteligente);
                }
            }

            return(Json(new { success = true }));
        }
コード例 #5
0
        public JsonResult CargarAccionesYSensores(int idInteligente)
        {
            SGEContext db = new SGEContext();

            var           jsonSerialiser = new JavaScriptSerializer();
            List <object> acciones       = new List <object>();

            Inteligente inteligente = db.Inteligentes.First(i => i.Id == idInteligente);
            Catalogo    catalogo    = db.Catalogos.Include("Acciones").Include("Sensores").First(c => c.Id == inteligente.CatalogoId);

            foreach (Accion accion in catalogo.Acciones)
            {
                var objeto = Json(new { accion.Id, accion.Descripcion }).Data;

                acciones.Add(objeto);
            }

            List <object> sensores = new List <object>();

            foreach (SensorFisico sensor in db.SensoresFisicos.Where(s => s.IdDispositivo == idInteligente).ToList())
            {
                var objeto = Json(new { sensor.Id, sensor.Descripcion }).Data;

                sensores.Add(objeto);
            }

            return(Json(new { success = true, sensores = jsonSerialiser.Serialize(sensores), acciones = jsonSerialiser.Serialize(acciones) }));
        }
コード例 #6
0
        public void TestInitialize()
        {
            Cliente     cliente1 = new Cliente();
            Inteligente d1       = new Inteligente("TV LG", 100m);
            Estandar    d2       = new Estandar("TV", 200m);

            cliente1.Inteligentes.Add(d1);
            cliente1.Estandars.Add(d2);
            cliente1.TransformadorId = 1;

            Cliente     cliente2 = new Cliente();
            Inteligente d3       = new Inteligente("TV LG 55", 200m);
            Estandar    d4       = new Estandar("TV", 200m);
            Estandar    d5       = new Estandar("TV", 200m);

            cliente2.Inteligentes.Add(d3);
            cliente2.Estandars.Add(d4);
            cliente2.Estandars.Add(d5);
            cliente2.TransformadorId = 10;

            this.Clientes = new List <Cliente>
            {
                cliente1,
                cliente2
            };

            this.transformador          = new Transformador();
            this.transformador.Clientes = this.Clientes;

            //TransformadoresHelper th =new TransformadoresHelper();
            //List<Transformador> transformadores =(List<Transformador>) th.Transformadores;
        }
コード例 #7
0
        public void NotificarNuevaMedicion(Inteligente dispositivo)
        {
            List <Regla> reglas = ReglasManager.Instance.ObtenerReglasParaDispositivo(dispositivo);

            foreach (Regla regla in reglas)
            {
                regla.Ejecutar();
            }
        }
コード例 #8
0
        public void ObtenerConsumoDeUltimasNHoras_2_activacionesTest()
        {
            Inteligente dispositivo = new Inteligente("TV", 100m);
            decimal     valor;

            dispositivo.Encender();
            dispositivo.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro = dispositivo.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro.AddHours(-1);
            dispositivo.Apagar();

            valor = dispositivo.ObtenerConsumoDeUltimasNHoras(8);
            Assert.IsTrue(valor == 100m);
        }
コード例 #9
0
        public JsonResult Agregar(int idCatalogo)
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            SGEContext db = new SGEContext();

            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>(db);
            Cliente cliente = repoCliente.Single(c => c.NombreUsuario == user.UserName);

            BaseRepositorio <Catalogo> repoCatalogo = new BaseRepositorio <Catalogo>(db);
            Catalogo Catalogo = repoCatalogo.Single(c => c.Id == idCatalogo);

            Inteligente inteligente = new Inteligente()
            {
                ConsumoEnergia       = Catalogo.ConsumoEnergia,
                IdentificadorFabrica = Catalogo.IdentificadorFabrica,
                Catalogo             = Catalogo,
                CatalogoId           = Catalogo.Id
            };
            string nombreInteligente = Catalogo.Nombre + "_" + DateTime.Now.ToString("ddMMyyHHmmss");

            nombreInteligente  = nombreInteligente.Replace(" ", "_");
            inteligente.Nombre = nombreInteligente;

            inteligente.Clientes.Add(cliente);
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(db);

            repoInteligente.Create(inteligente);

            db = new SGEContext();
            List <Sensor> sensores = db.Sensores.Where(s => s.Catalogos.Any(c => c.Id == Catalogo.Id)).ToList();

            foreach (Sensor sensor in sensores)
            {
                SGEContext   db2          = new SGEContext();
                SensorFisico sensorFisico = new SensorFisico()
                {
                    //TipoSensor = sensor,
                    //Dispositivo = inteligente,
                    IdDispositivo = inteligente.Id,
                    IdTipoSensor  = sensor.Id,
                    Descripcion   = sensor.Descripcion
                };
                sensorFisico.Mediciones = null;
                //repoSensorFisico.Create(sensorFisico);
                db2.SensoresFisicos.Add(sensorFisico);
                db2.SaveChanges();
            }

            return(Json(new { success = true }));
        }
コード例 #10
0
        public void TestRegla()
        {
            DAOzona.Instancia.InitialLoad();
            DateTime           dia         = new DateTime(2018, 10, 01, 10, 00, 30);
            List <Inteligente> dispositivo = new List <Inteligente>();
            Inteligente        televisor   = new Inteligente(1, 31, 1, "Televisor", 40, false, 0, dia, false);

            dispositivo.Add(televisor);
            List <int>      reglas   = new List <int>();
            Actuador        actuador = new Actuador(1, "actuador", reglas, 31, dispositivo);
            List <Actuador> lista    = new List <Actuador>();
            //Regla regla = new Regla(1, 1, "detalle", 10, lista)
        }
コード例 #11
0
        // GET: Cliente/Inteligentes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>();
            Inteligente inteligente = repoInteligente.Single(i => i.Id == id);

            if (inteligente == null)
            {
                return(HttpNotFound());
            }
            return(View(inteligente));
        }
コード例 #12
0
        /// <summary>
        /// Agrega una restriccion minima y maxima para un determinado dispositivo.
        /// </summary>
        public SimplexNormal AgregarRestriccion(Inteligente dispositivo)
        {
            var horasEmpleadas = dispositivo.ObtenerCantidadDeHoraDeUsoMensual();

            if (horasEmpleadas >= HORAS_MINIMAS && horasEmpleadas <= HORAS_MAXIMAS)
            {
                var par = new KeyValuePair <string, Inteligente>(dispositivo.Nombre, dispositivo);
                this.Dispositivos.Add(par.Key, par.Value);

                Decision decision = new Decision(Domain.RealNonnegative, dispositivo.Nombre);
                this.Model.AddDecision(decision);
                this.Model.AddConstraint("Minimo" + this.Minimos++, decision >= HORAS_MINIMAS);
                this.Model.AddConstraint("Maximo" + this.Maximos++, decision <= HORAS_MAXIMAS - horasEmpleadas);
            }
            else
            {
                throw new Exception(); //TODO completar
            }
            return(this);
        }
コード例 #13
0
        public void ObtenerConsumoPeriodoTest()
        {
            Inteligente dispositivo = new Inteligente("TV", 100m);
            decimal     valor;

            ///TODO: el calculo de las horas está mal, en esta prueba el resultado debería ser 600m en este contexto, pero al momento de obtener
            ///el registro de activaciones trae solo las que iniciaron luego de las horas indicadas, sin embargo si habia un estado
            ///previo "encendido" pero que inicio antes de las horas indicadas no lo trae y no contabiliza las horas. No se corrige ya que se desconoce
            ///si esta contemplado o no, por el momento solo se cambia el valor de la prueba para que no falle
            dispositivo.Encender();
            dispositivo.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro = dispositivo.RegistroDeActivaciones.ElementAt(0).FechaDeRegistro.AddHours(-25);
            dispositivo.Apagar();
            dispositivo.RegistroDeActivaciones.ElementAt(1).FechaDeRegistro = dispositivo.RegistroDeActivaciones.ElementAt(1).FechaDeRegistro.AddHours(-4);
            dispositivo.Encender();
            dispositivo.RegistroDeActivaciones.ElementAt(2).FechaDeRegistro = dispositivo.RegistroDeActivaciones.ElementAt(2).FechaDeRegistro.AddHours(-3);
            dispositivo.Apagar();
            dispositivo.RegistroDeActivaciones.ElementAt(3).FechaDeRegistro = dispositivo.RegistroDeActivaciones.ElementAt(3).FechaDeRegistro.AddHours(-1);

            valor = dispositivo.ObtenerConsumoDeUltimasNHoras(8);
            Assert.IsTrue(valor == 200m);
        }
コード例 #14
0
        public ActionResult DeleteConfirmed(int id)
        {
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
            var user        = UserManager.FindById(User.Identity.GetUserId());

            SGEContext contexto = new SGEContext();

            BaseRepositorio <Cliente> repoCliente = new BaseRepositorio <Cliente>(contexto);
            Cliente cliente = repoCliente.Single(c => c.NombreUsuario == user.UserName);

            BaseRepositorio <Inteligente> repoInteligente = new BaseRepositorio <Inteligente>(contexto);
            var includesInteligente = new List <Expression <Func <Inteligente, object> > >()
            {
                i => i.Clientes
            };
            Inteligente inteligente = repoInteligente.Single(i => i.Id == id, includesInteligente);

            inteligente.Clientes.Remove(cliente);
            repoInteligente.Update(inteligente);

            return(RedirectToAction("Index"));
        }
コード例 #15
0
 public void TestInitialize()
 {
     this.dispositivo = new Inteligente("TV LG", 100m);
     dispositivo.ColocarEnAhorroEnergia();
     this.condicion1 = new Condicion()
     {
         Operador        = new Igual(),
         ValorReferencia = "Apagado",
         Sensor          = new SensorFisico()
         {
             Dispositivo = dispositivo,
             TipoSensor  = new Estado()
             {
                 Dispositivo = dispositivo
             }
         }
     };
     this.accion1 = new Encender()
     {
         Dispositivo = dispositivo
     };
 }
コード例 #16
0
        public void TestInitialize()
        {
            Cliente     cliente1 = new Cliente();
            Inteligente d1       = new Inteligente("TV LG", 100m);
            Estandar    d2       = new Estandar("TV", 200m);

            cliente1.Inteligentes.Add(d1);
            cliente1.Estandars.Add(d2);
            cliente1.Latitud         = 5.41;
            cliente1.Longitud        = 5.45;
            cliente1.TransformadorId = 1;

            Cliente     cliente2 = new Cliente();
            Inteligente d3       = new Inteligente("TV LG 55", 200m);
            Estandar    d4       = new Estandar("TV", 200m);
            Estandar    d5       = new Estandar("TV", 200m);

            cliente2.Inteligentes.Add(d3);
            cliente2.Estandars.Add(d4);
            cliente2.Estandars.Add(d5);
            cliente2.Latitud         = 5.39;
            cliente2.Longitud        = 5.43;
            cliente2.TransformadorId = 1;

            this.clientes1 = new List <Cliente> {
                cliente1, cliente2
            };


            //si se carga los transformadores con json comentar estoo
            Transformador trasformador1 = new Transformador();

            trasformador1.Id       = 1;
            trasformador1.Latitud  = 5.4;
            trasformador1.Longitud = 5.44;
            trasformador1.Clientes = clientes1;


            Cliente     cliente3 = new Cliente();
            Inteligente d6       = new Inteligente("TV LG", 100m);
            Estandar    d7       = new Estandar("TV", 200m);

            cliente3.Inteligentes.Add(d6);
            cliente3.Estandars.Add(d7);
            cliente3.Latitud         = -0.3;
            cliente3.Longitud        = -0.1;
            cliente3.TransformadorId = 10;

            Cliente     cliente4 = new Cliente();
            Inteligente d8       = new Inteligente("TV LG 55", 200m);
            Estandar    d9       = new Estandar("TV", 200m);
            Estandar    d10      = new Estandar("TV", 200m);

            cliente4.Inteligentes.Add(d8);
            cliente4.Estandars.Add(d9);
            cliente4.Estandars.Add(d10);
            cliente4.Latitud         = -0.1;
            cliente4.Longitud        = 0.1;
            cliente4.TransformadorId = 10;

            this.clientes2 = new List <Cliente> {
                cliente3, cliente4
            };

            //si se carga los transformadores con json comentar estoo
            Transformador trasformador2 = new Transformador();

            trasformador2.Id       = 10;
            trasformador2.Latitud  = -0.2;
            trasformador2.Longitud = 0;
            trasformador2.Clientes = clientes2;


            this.transformadores = new List <Transformador> {
                trasformador1, trasformador2
            };
            this.zona = new Zona();
            this.zona.Transformadores = transformadores;


            //TransformadoresHelper th = new TransformadoresHelper();
            //List<Transformador> transformadores = (List<Transformador>)th.Transformadores;
            //foreach (Transformador transformador in transformadores)
            //{
            //    if (transformador.Id==1)
            //    {
            //        transformador.Clientes = clientes1;
            //    }
            //    if (transformador.Id == 10)
            //    {
            //        transformador.Clientes = clientes2;
            //    }
            //}
        }
コード例 #17
0
 public void TestInitialize()
 {
     this.dispositivo = new Inteligente("TV LG", 100m);
 }
コード例 #18
0
 public void TestInitialize()
 {
     this.dispositivo = new Inteligente("TV LG", 100m);
     this.accion      = new EstablecerTemperatura();
 }
コード例 #19
0
 public void TestInitialize()
 {
     this.cliente = new Cliente();
     this.d1      = new Inteligente("TV LG", 100m);
     this.d3      = new Estandar("TV", 200m);
 }
コード例 #20
0
 public void RegistrarDispositivo(Inteligente dispositivo)
 {
     this.dispositivos.Add(dispositivo);
     dispositivo.Agregar(this);
 }
コード例 #21
0
 public List <Regla> ObtenerReglasParaDispositivo(Inteligente dispositivo)
 {
     return(this.reglas[dispositivo]);
 }
コード例 #22
0
 public void RegistrarReglas(Inteligente dispositivo, List <Regla> reglas)
 {
     this.reglas.Add(dispositivo, reglas);
 }