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); }
//• 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); }
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 })); }
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 })); }
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) })); }
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; }
public void NotificarNuevaMedicion(Inteligente dispositivo) { List <Regla> reglas = ReglasManager.Instance.ObtenerReglasParaDispositivo(dispositivo); foreach (Regla regla in reglas) { regla.Ejecutar(); } }
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); }
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 })); }
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) }
// 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)); }
/// <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); }
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); }
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")); }
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 }; }
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; // } //} }
public void TestInitialize() { this.dispositivo = new Inteligente("TV LG", 100m); }
public void TestInitialize() { this.dispositivo = new Inteligente("TV LG", 100m); this.accion = new EstablecerTemperatura(); }
public void TestInitialize() { this.cliente = new Cliente(); this.d1 = new Inteligente("TV LG", 100m); this.d3 = new Estandar("TV", 200m); }
public void RegistrarDispositivo(Inteligente dispositivo) { this.dispositivos.Add(dispositivo); dispositivo.Agregar(this); }
public List <Regla> ObtenerReglasParaDispositivo(Inteligente dispositivo) { return(this.reglas[dispositivo]); }
public void RegistrarReglas(Inteligente dispositivo, List <Regla> reglas) { this.reglas.Add(dispositivo, reglas); }