monitor de temperatura

19
Monitor de Temperatura

Upload: dandre

Post on 19-Jan-2016

35 views

Category:

Documents


0 download

DESCRIPTION

Monitor de Temperatura. OBJETIVO. Monitoreo de Temperatura en Salas de Computo Elaborar graficas de comportamiento Envío de Alertas. Termómetro Digital interfase Serial. Diagrama de Clases de Persistencia. Capas significativas de la Aplicaci ó n. Vista. Servicios. Integración. .Net. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Monitor de Temperatura

Monitor de Temperatura

Page 2: Monitor de Temperatura

OBJETIVO

Monitoreo de Temperatura en Salas de Computo

Elaborar graficas de comportamiento

Envío de Alertas

Page 3: Monitor de Temperatura

Termómetro Digital interfase Serial

Page 4: Monitor de Temperatura

Diagrama de Clases de Persistencia

class System

Ubicacion

- IdUbicacion: int- Descripcion: char- Volumen: int

Lectura

- IdLectura: int- Valor: int- Fecha: int- Hora: int

Alarm

- IdAlarm: int- Status: boolean- Max: int- Min: int

Unidad

- IdUnidad: int- NombreUnidad: int- Status: boolean

AlarmLog

- IdAlarmLog: int- Hora: int- Fecha: int

1 0..*

1

1

1

0..*

1

1

1

0..*

1 1..*

Page 5: Monitor de Temperatura

.Net

Vista Servicios Integración

Capas significativas de la Aplicación

Page 6: Monitor de Temperatura

Mapeo de capas con Vista Física

Vista -> Administrador Web, MotorTemperatura.exeServicios -> MonitorTemperatura.Operaciones , EmailIntegración -> MonitorTemperatura.DataAccess : Acceso a Servidor DB4O

Page 7: Monitor de Temperatura

Vistas

Page 8: Monitor de Temperatura

Configuracion DB4O Client/Server

Iniciar Servidor

class Monitor {...private void buttonStart_Click(object sender, EventArgs e) { Comun c = new Comun(); c.AsyncStartServer(); }

}

class Comun{...public delegate void MethodDelegate();

public void AsyncStartServer() { MethodDelegate dlgt = startServer; IAsyncResult ar = dlgt.BeginInvoke(null,null); } private void startServer() { StartServer server = new StartServer(); server.RunServer(); }}

Cliente

Operaciones

Page 9: Monitor de Temperatura

Configuracion DB4O Client/ServerClass StartServer : Util {…public void RunServer() { lock (this) { try { IObjectServer server = Db4oFactory.OpenServer(YapFileName, PORT); server.GrantAccess(USER, PASS); server.Ext().Configure().ClientServer().SetMessageRecipient(this); try { if (!this.stop) { Monitor.Wait(this); } } catch (Exception exception) { System.Diagnostics.EventLog.WriteEntry("MonitorTemperatura", exception.ToString()); } server.Close(); } catch (Exception ex) { System.Diagnostics.EventLog.WriteEntry("MonitorTemperatura", ex.ToString()); } }}

Acceso a Datos

Page 10: Monitor de Temperatura

Configuracion DB4O Client/Server

Detener Servidor

class Monitor {...private void buttonStop_Click(object sender, EventArgs e) { Comun c = new Comun(); c.stopServer(); }}

class Comun{... public void stopServer() { StopServer.Stop(); }}

Cliente

Operaciones

Page 11: Monitor de Temperatura

Configuracion DB4O Client/Server

Class StopServer : Util{

public static void Stop() { IObjectContainer container = null; try { container = Db4oFactory.OpenClient("localhost", PORT, USER, PASS); } catch (Exception exception) { System.Diagnostics.EventLog.WriteEntry("MonitorTemperatura", exception.ToString()); } if (container != null) { container.Ext().Configure().ClientServer().GetMessageSender().Send(new StopServer()); container.Close(); } }}

Acceso a Datos

Page 12: Monitor de Temperatura

Configuracion Base de Datos public class Util { public static readonly string ServerPassword = "password"; public static readonly string ServerUser = "user“; public static readonly string YapFileName = “MonitorTemperaturaDB.yap"; public static readonly string PASS = "db4o"; public static readonly string HOST = "localhost"; public static readonly int PORT = 0x1188; public static readonly string USER = "db4o";}

public class ComunDAO { private IObjectContainer OpenFileRemote() { IObjectContainer db = Db4oFactory.OpenClient(Util.HOST, Util.PORT, Util.USER, Util.PASS); ConfigureDBObjects(); return db; } private void CloseFile(IObjectContainer db) { db.Close(); } private void ConfigureDBObjects() // Permite la Actualizacion de Objetos y el Borrado en Cascada { Db4oFactory.Configure().ObjectClass(typeof(Ubicacion)).CascadeOnUpdate(true); Db4oFactory.Configure().ObjectClass(typeof(Ubicacion)).CascadeOnDelete(true); }}

Page 13: Monitor de Temperatura

Queries public class UbicacionDAO { public Hashtable ObtenerUbicaciones(Ubicacion filtro) {

db = OpenFileRemote(); list = db.QueryByExample(filtro); Hashtable t = GetDataTable(list); CloseFile(db); return t; } public Ubicacion ObtenerUbicacion(Ubicacion filtro) { return ObtenerUbicacion(filtro,true); } public Ubicacion ObtenerUbicacion(Ubicacion filtro, bool closedb) {

db = OpenFileRemote(); list = db.QueryByExample(filtro); Ubicacion obj2=null; if (list.Count > 0) { obj2 = (Ubicacion)list.Next(); } if (closedb) CloseFile(db); return obj2; }

Page 14: Monitor de Temperatura

Grabado public class UbicacionDAO { public void GrabarUbicacion(Ubicacion obj) { UbicacionDAO dao = new UbicacionDAO(); dao.GrabarUbicacion(obj); }

public void GrabarLecturas(Ubicacion obj) { UbicacionDAO dao = new UbicacionDAO();

Ubicacion filtro = new Ubicacion(); Ubicacion obj2; if( obj.IdUbicacion>0) filtro.IdUbicacion = obj.IdUbicacion; obj2 = (Ubicacion)dao.ObtenerUbicacion(filtro,false); // false-> no cierra la conexion para actualizalo if (obj2!= null) { obj2.Estado = obj.Estado; if (obj.Lecturas[0] != null) { obj.Lecturas[0].idLectura = (obj2.Index+1).ToString(); obj2.Lecturas[obj2.Index] = obj.Lecturas[0]; obj2.Index++; } .

Page 15: Monitor de Temperatura

Grabado ...

dao.GrabarUbicacion(obj2); } else { obj.Estado = true; dao.GrabarUbicacion(obj); } }

}

Class UbicacionDAO{ public void GrabarUbicacion(Ubicacion obj) { GrabarUbicacion(obj, true); }

public void GrabarUbicacion(Ubicacion obj, bool closedb) { db = OpenFileRemote(); db.Store(obj); if (closedb) CloseFile(db); }}

Page 16: Monitor de Temperatura

Borrado de Datospublic class ComunDAO {

.

.

. public void DeleteAll() { IObjectContainer db = OpenFileRemote(); Util.DeleteAll(db); CloseFile(db); }}

public class Util {... public static void DeleteAll(IObjectContainer db) { object obj = new object(); IObjectSet set = db.QueryByExample(obj); foreach (object obj2 in set) { db.Delete(obj2); } }}

Page 17: Monitor de Temperatura

Simulación de Lecturaspublic class Lector {

private void startReader() { stop = true; EstablecerEstadoBotones(); int i = 1; int top = int.Parse(ConfigurationManager.AppSettings["MaxLecturas"].Trim()); while (i < top && stop) { double val = ObtenerLectura(); labelLectura.Text = val.ToString() + " °C"; GrabarLectura(val); i++; } }

private static double ObtenerLectura() { return RandomDouble(15,70); }...

Page 18: Monitor de Temperatura

Simulación de Lecturas... private void GrabarLectura(double val, bool agregarlectura) { UbicacionOP op = new MonitorTemperatura.Operciones.UbicacionOP(); Ubicacion obj = new Ubicacion(); obj.IdUbicacion = int.Parse(ConfigurationManager.AppSettings["IdUbicacion"].Trim()); obj.Descripcion = ConfigurationManager.AppSettings["Descripcion"].Trim(); obj.Estado = stop; if (agregarlectura) { Lectura l = new Lectura(); l.Tipounidad.IdUnidad = ConfigurationManager.AppSettings["TipoUnidad"].Trim(); l.Valor = val; l.Fecha = System.DateTime.Now; l.Hora = System.DateTime.Now; obj.Lecturas[0] = l; } op.GrabarLecturas(obj);

}}

Page 19: Monitor de Temperatura

Configuracion Cliente

<configuration><appSettings>

<add key="IdUbicacion" value="1" /><add key="Descripcion" value="Ubicacion Prueba 1" /><add key="TipoUnidad" value="1" /><add key="MaxLecturas" value="20" /><add key="WebAdmin"

value="http://localhost/MonitorTemperatura.View/Default.aspx" /></appSettings>

</configuration>