Elaboración de software para el control de intensidad de luz prototipo Aula Magna

271
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE SANTO DOMINGO ESCUELA DE SISTEMAS Disertación de Grado previa la obtención del título de Ingeniería en Sistemas ELABORACIÓN DE SOFTWARE PARA EL CONTROL DE INTENSIDAD DE LUZ PROTOTIPO AULA MAGNA AUTORES: CHIMBO VALLEJO LEONARDO DANIEL SALAZAR LARREATEGUI EDUARDO XAVIER DIRECTOR: ING. M.Sc. ROBERTO RAMÍREZ SANTO DOMINGO - ECUADOR 2013

description

Disertación de Grado – ESIS – Nº 3 – 2013 – PUCE SD

Transcript of Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Page 1: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR

SEDE SANTO DOMINGO

ESCUELA DE SISTEMAS

Disertación de Grado previa la obtención del título de Ingeniería en Sistemas

ELABORACIÓN DE SOFTWARE PARA EL CONTROL DE INTENSIDAD DE LUZ

PROTOTIPO AULA MAGNA

AUTORES: CHIMBO VALLEJO LEONARDO DANIEL

SALAZAR LARREATEGUI EDUARDO XAVIER

DIRECTOR: ING. M.Sc. ROBERTO RAMÍREZ

SANTO DOMINGO - ECUADOR

2013

Page 2: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

II

PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR

SEDE SANTO DOMINGO

APROBACIÓN DE LA DISERTACIÓN DE GRADO

ELABORACIÓN DE SOFTWARE PARA EL CONTROL DE INTENSIDAD DE

LUZ PROTOTIPO AULA MAGNA

AUTORES: CHIMBO VALLEJO LEONARDO DANIEL

SALAZAR LARREÁTEGUI EDUARDO XAVIER

TRIBUNAL

Ing. M.Sc. Roberto Ramírez

DIRECTOR DE LA DISERTACIÓN _________________________________

Ing. José Luis Centeno

MIEMBRO DEL TRIBUNAL _________________________________

Ing. Margareth Hurtado

MIEMBRO DEL TRIBUNAL _________________________________

Santo Domingo, Septiembre de 2013

Page 3: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

III

AUTORÍA

Nosotros, CHIMBO VALLEJO LEONARDO DANIEL portador de la cédula de ciudadanía

Nº 1716448376 y SALAZAR LARREÁTEGUI EDUARDO XAVIER portador de la cédula

de ciudadanía Nº 1718883729, cedemos los derechos de autoría intelectual a la Pontificia

Universidad Católica sede Santo Domingo, incluyendo los derechos de edición y

publicación.

--------------------------------------------- ---------------------------------------------

Chimbo Vallejo Leonardo Daniel Salazar Larreátegui Eduardo Xavier

Page 4: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

IV

DEDICATORIA

Existe una mujer en mi vida que me ha enseñado, desde mi primer día en la tierra, el

verdadero significado del amor. No existen palabras ni actos para agradecer todo lo que

con cariño y sacrificio ha hecho por mí.

A mi madre, Glenda Larreátegui, le dedico todo el trabajo que invertí en este proyecto,

así como el de mis logros venideros porque ella es mi fuente de inspiración y mi fortaleza,

porque gracias a su amor soy la persona que soy.

Salazar Larreátegui Eduardo Xavier.

A mis padres por todo el apoyo que me han brindado y por ser una fuente de inspiración

y trabajo.

Chimbo Vallejo Leonardo Daniel.

Page 5: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

V

AGRADECIMIENTO

Dedicamos estas líneas para agradecer de manera muy especial a las personas e

instituciones que, a través del aporte de sus conocimientos y la apertura de espacios,

hicieron posible la culminación exitosa de este proyecto.

A nuestro director de proyecto, Ing. Roberto Ramírez, por su guía y apoyo durante este

proceso.

A la Pontificia Universidad Católica del Ecuador Sede Santo Domingo, y a sus directivos,

por confiarnos la responsabilidad de llevar a cabo un proyecto de esta magnitud, el que

nos ha permitido consolidar las habilidades adquiridas a lo largo de nuestra formación

universitaria.

Finalmente, pero con más fervor, a Dios, por iluminarnos con su sabiduría y bendecirnos

con su maravillosa presencia en cada etapa de nuestra vida.

Gracias a todas y todos los que con pequeños o grandes actos hicieron de este sueño

una realidad.

Page 6: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

VI

RESUMEN

El presente proyecto tuvo como finalidad la elaboración de un software para controlar la

intensidad de la luz, aplicado como prototipo en el Aula Magna de la PUCESD, para lo

cual se realizó un análisis del sistema eléctrico, el manejo de las luminarias y la

tecnología a usarse junto con el lenguaje de programación.

La tecnología inalámbrica Z-Wave en conjunto con el lenguaje de programación C#

cumplen con las características para realizar un control efectivo de la iluminación sin

perder el control manual al que ya están acostumbrados.

El resultado obtenido con la realización de este proyecto fue un software que maneja de

forma centralizada tanto la regulación como el encendido/apagado de las luminarias pero

a un costo elevado en comparación con los equipos tradicionales.

.

Page 7: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

VII

ABSTRACT

This Project was aimed to development a software which controls the light intensity

applied as prototype at the PUCESD Aula Magna, for which we made an analysis of the

electrical system, management of the luminaires and the technology to be used in

conjunction with the programming language.

The Z-Wave wireless technology in combination with the programming language C # meet

the characteristics for effective control of lighting without losing the manual control which

they are familiar.

The result obtained with the accomplishment of this project was a software that centrally

manages both the regulation and the on/off of the luminaires but at a high cost compared

to traditional equipment.

Page 8: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

VIII

ÍNDICE

AUTORÍA ........................................................................................................................................... III

DEDICATORIA .................................................................................................................................. IV

AGRADECIMIENTO ........................................................................................................................... V

RESUMEN ......................................................................................................................................... VI

ABSTRACT ...................................................................................................................................... VII

ÍNDICE ............................................................................................................................................ VIII

LISTA DE ILUSTRACIONES ............................................................................................................ XI

LISTA DE TABLAS ..........................................................................................................................XIV

INTRODUCCIÓN.............................................................................................................................. 15

1. ANTECEDENTES Y JUSTIFICACIÓN ..................................................................................... 17

1.1 DESCRIPCIÓN HISTÓRICA ............................................................................................ 17

1.2 SITUACIÓN ACTUAL ....................................................................................................... 18

1.3 LA PROBLEMÁTICA OBSERVADA ................................................................................. 18

1.4 NECESIDADES Y PROBLEMAS IDENTIFICADOS ....................................................... 18

1.5 ALTERNATIVAS Y SOLUCIONES POSIBLES ............................................................... 19

1.6 BENEFICIOS ESPERADOS ............................................................................................ 19

1.7 OBJETIVO GENERAL ...................................................................................................... 19

1.8 OBJETIVOS ESPECÍFICOS ............................................................................................ 19

1.9 ANÁLISIS DE IMPACTO .................................................................................................. 20

1.9.1 Impacto tecnológico .................................................................................................. 21

1.9.2 Impacto Ambiental .................................................................................................... 22

1.9.3 Impacto Social .......................................................................................................... 23

1.9.4 Impacto Económico .................................................................................................. 24

1.9.5 Impacto general ........................................................................................................ 25

2 MARCO TEÓRICO ................................................................................................................... 27

2.1 ILUMINACIÓN .................................................................................................................. 27

2.1.1 Control de Iluminación. ............................................................................................. 27

2.2 SISTEMAS DE ILUMINACIÓN ......................................................................................... 28

2.2.1 Lámparas incandescentes ....................................................................................... 28

2.2.2 Lámparas fluorescentes o de descarga ................................................................... 29

2.3 BALASTROS .................................................................................................................... 30

2.3.1 Balastro electromagnético ........................................................................................ 31

2.3.2 Balastro electrónico .................................................................................................. 31

2.4 DIMMERS ......................................................................................................................... 31

2.5 ¿QUÉ ES LA DOMÓTICA? .............................................................................................. 32

2.5.1 Aplicaciones de la domótica ..................................................................................... 33

2.6 TECNOLOGÍA Z-WAVE ................................................................................................... 33

2.6.1 Protocolo Z-Wave ..................................................................................................... 34

2.6.1.1 Controladores y nodos esclavos .......................................................................... 35

2.6.1.2 Capa MAC ............................................................................................................ 36

2.6.1.2.1 Colisiones ........................................................................................................ 36

2.6.1.3 Capa de transporte ............................................................................................... 37

2.6.1.3.1 Estructura del paquete ..................................................................................... 37

2.6.1.3.2 Envío simple de paquetes (Singlecast frame type) ......................................... 38

Page 9: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

IX

2.6.1.3.3 Acuses de recibido (Acknowledge, Ack) ......................................................... 38

2.6.1.3.4 Envío múltiple de paquetes (Multicast frame type) .......................................... 38

2.6.1.3.5 Envío general (Broadcast frame type) ............................................................. 39

2.6.1.4 Capa de enrutado ................................................................................................. 40

2.6.1.4.1 Marco de diseño .............................................................................................. 40

2.6.1.4.2 Enrutamiento simple de paquetes ................................................................... 40

2.6.1.4.3 Enrutamiento de acuse de recibo (Ack) .......................................................... 41

2.6.1.4.4 Tabla de enrutamiento ..................................................................................... 41

2.6.1.5 Capa de aplicación ............................................................................................... 42

2.6.2 Switchs y dimmers Z-Wave ...................................................................................... 42

2.6.2.1 Switchs Z-Wave .................................................................................................... 42

2.6.2.1.1 Leviton VRS05-1LX - vizia rf + 5A Switch ....................................................... 43

2.6.2.1.2 Leviton VRS05-1LX - vizia rf + 15A Switch ..................................................... 43

2.6.2.2 Dimmers Z-Wave .................................................................................................. 44

2.6.2.2.1 Leviton VRI06-1LX – vizia rf + 600W/1000W Incandescent Dimmer .............. 44

2.6.3 Controlador USB (ThinkStick Z-Wave® USB Adapter) ............................................ 45

2.7 PROTOCOLO TCP/IP ...................................................................................................... 46

2.7.1 Capa de subred ........................................................................................................ 48

2.7.2 Capa de interred ....................................................................................................... 48

2.7.3 Capa de transporte ................................................................................................... 48

2.7.4 Capa de aplicación ................................................................................................... 48

2.8 CLIENTE/SERVIDOR....................................................................................................... 50

2.9 .NET FRAMEWORK ......................................................................................................... 51

2.9.1 Common Language Runtime (CLR) ......................................................................... 51

2.9.2 Bibliotecas de Clase .NET ........................................................................................ 52

2.9.3 Lenguajes de Programación .NET ........................................................................... 53

2.9.4 Entorno ASP.NET ..................................................................................................... 54

2.10 EL LENGUAJE DE PROGRAMACIÓN C SHARP ............................................................ 54

2.10.1.1 Programación en red síncrona/asíncrona ............................................................ 55

2.10.1.2 Clases Socket ....................................................................................................... 55

2.11 MICROSOFT BLEND ....................................................................................................... 56

2.12 WINDOWS PRESENTATION FOUNDATION .................................................................. 57

2.12.1 La evolución de los gráficos de Windows. ........................................................... 57

2.12.1.1 DirectX: El nuevo motor gráfico ............................................................................ 58

2.12.2 La arquitectura de WPF........................................................................................ 59

3 METODOLOGÍA ....................................................................................................................... 61

3.1 SOFTWARE DE CONTROL DE INTENSIDAD DE LUZ ................................................... 61

3.1.1 Introducción .............................................................................................................. 61

3.1.2 Levantamiento de requerimientos ............................................................................ 61

3.1.2.1 Limitaciones del sistema ...................................................................................... 62

3.1.3 Casos de Uso ........................................................................................................... 63

3.1.3.1 Diagrama General del Sistema ............................................................................ 63

3.1.3.2 Servidor ................................................................................................................ 64

3.1.3.2.1 Gestionar Red Z-Wave .................................................................................... 64

3.1.3.2.2 Zonas y Nodos ................................................................................................. 66

3.1.3.2.3 Gestionar Datos de Conexión.......................................................................... 67

3.1.3.2.4 Iniciar el Sistema ............................................................................................. 69

3.1.3.2.5 Iniciar Red Z-Wave .......................................................................................... 71

3.1.3.2.6 Iniciar Conexiones de Red. .............................................................................. 72

3.1.3.2.7 Enviar/Recibir Datos ........................................................................................ 73

3.1.3.3 Cliente................................................................................................................... 75

Page 10: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

X

3.1.3.3.1 Interactuar Mapa de Zonas .............................................................................. 75

3.1.3.3.2 Datos del Servidor ........................................................................................... 76

3.1.3.3.3 Gestionar Datos de Conexión.......................................................................... 77

3.1.3.3.4 Iniciar Sistema ................................................................................................. 78

3.1.3.3.5 Iniciar Conexión de Red .................................................................................. 79

3.1.3.3.6 Enviar/Recibir Datos ........................................................................................ 81

3.1.4 Definición de la arquitectura del software ................................................................ 82

3.1.5 Diagrama de despliegue........................................................................................... 83

3.1.6 Diagrama de procesos ............................................................................................. 83

3.1.6.1 Servidor ................................................................................................................ 83

3.1.6.2 Cliente................................................................................................................... 88

3.2 DISEÑO DEL SOFTWARE ............................................................................................... 90

3.2.1 Diseño de las interfaces ........................................................................................... 90

3.2.1.1 Servidor ................................................................................................................ 90

3.2.1.1.1 Pantalla inicial .................................................................................................. 91

3.2.1.1.2 Conexiones ...................................................................................................... 92

3.2.1.1.3 Red Z-Wave ..................................................................................................... 93

3.2.1.1.4 Opciones .......................................................................................................... 95

3.2.1.2 Cliente................................................................................................................... 96

3.3 DESARROLLO DEL SISTEMA ........................................................................................ 98

4 DISCUSIÓN Y RESULTADOS ................................................................................................. 99

4.1 MECÁNICA OPERATIVA ................................................................................................. 99

4.1.1 Entrevistas ................................................................................................................ 99

4.2 RESULTADOS ................................................................................................................. 99

4.2.1 Dispositivos ............................................................................................................ 100

4.3.1.2 Instalación realizada ............................................................................................... 101

4.2.2 Software de control de intensidad de las luces ...................................................... 103

4.2.2.1 Servidor .............................................................................................................. 103

4.2.2.2 Cliente................................................................................................................. 104

4.3 DISCUSIÓN DE RESULTADOS .................................................................................... 105

5 CONCLUSIONES ................................................................................................................... 110

6 RECOMENDACIONES .......................................................................................................... 111

7 BIBLIOGRAFÍA ....................................................................................................................... 112

8 GLOSARIO ............................................................................................................................. 113

9 ANEXOS ................................................................................................................................. 124

Page 11: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

XI

LISTA DE ILUSTRACIONES

Ilustración 1: Partes de una bombilla ...............................................................................29

Ilustración 2: Rendimiento de una lámpara incandescente ..............................................29

Ilustración 3: Partes de la lámpara fluorescente ...............................................................30

Ilustración 4: Funcionamiento de un Dimmer ...................................................................32

Ilustración 5: Tecnología Z- Wave....................................................................................34

Ilustración 6: Capas de protocolo Z-Wave .......................................................................35

Ilustración 7: Dispositivos Z-Wave ...................................................................................36

Ilustración 8: Trama Z-Wave ............................................................................................36

Ilustración 9: Manejo de colisiones Z-Wave .....................................................................37

Ilustración 10: Estructura de un paquete en protocolo Z-Wave ........................................37

Ilustración 11: Envío simple de paquetes .........................................................................38

Ilustración 12: Envío múltiple de paquetes .......................................................................39

Ilustración 13: Envío general de paquetes .......................................................................39

Ilustración 14: Enrutamiento simple de paquetes .............................................................40

Ilustración 15: Enrutamiento de Ack .................................................................................41

Ilustración 16: Tabla de enrutamiento ..............................................................................41

Ilustración 17: Formato de paquete en capa de aplicación ..............................................42

Ilustración 18: Las Bibliotecas de Clase .NET Framework ...............................................53

Ilustración 19: La arquitectura de WPF ............................................................................59

Ilustración 20: Diagrama General – Servidor ...................................................................63

Ilustración 21: Diagrama General – Cliente ......................................................................63

Ilustración 22: CU Gestionar Red Z-Wave .......................................................................64

Ilustración 23: CU Zonas y Nodos....................................................................................66

Ilustración 24: CU Gestionar Datos de Conexión .............................................................67

Ilustración 25: CU Iniciar el Sistema ................................................................................69

Ilustración 26: CU Iniciar Red Z-Wave .............................................................................71

Page 12: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

XII

Ilustración 27: CU Iniciar Conexiones de Red ..................................................................72

Ilustración 28: CU Enviar/Recibir Datos ...........................................................................73

Ilustración 29: CU Interactuar Mapa de Zonas .................................................................75

Ilustración 30: CU Datos del Servidor ..............................................................................76

Ilustración 31: CU Gestionar Datos de Conexión .............................................................77

Ilustración 32: CU Iniciar Sistema ....................................................................................78

Ilustración 33: CU Iniciar Conexión de Red ......................................................................79

Ilustración 34: CU Enviar/Recibir Datos ...........................................................................81

Ilustración 35: Diagrama de Despliegue...........................................................................83

Ilustración 36: Diagrama Al iniciar el servidor ..................................................................84

Ilustración 37: Diagrama Al recibir una conexión .............................................................85

Ilustración 38: Diagrama al recibir un mensaje de un cliente ............................................86

Ilustración 39: Diagrama Administrar red Z-Wave ............................................................87

Ilustración 40: Diagrama de conexión al servidor .............................................................88

Ilustración 41: Envió de mensajes al servidor en ejecución..............................................89

Ilustración 42: Navegación de interfaces ..........................................................................90

Ilustración 43: Pantalla inicial ...........................................................................................91

Ilustración 44: Pantalla de conexiones .............................................................................92

Ilustración 45: Pantalla Red Z-Wave ................................................................................93

Ilustración 46: Zonas y nodos ..........................................................................................94

Ilustración 47: Pantalla de Opciones ................................................................................95

Ilustración 48: Pantalla principal cliente ...........................................................................96

Ilustración 49: Barra de herramientas cliente ...................................................................97

Ilustración 50: Cliente conectado .....................................................................................97

Ilustración 51: Estados de las zonas ................................................................................97

Ilustración 52: Información de zonas ................................................................................98

Ilustración 53: Opciones cliente .......................................................................................98

Ilustración 54: Dimensiones Dimmer y Switch................................................................ 100

Page 13: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

XIII

Ilustración 55: Adaptador USB ....................................................................................... 100

Ilustración 56: Conexión de dimmer/switch .................................................................... 101

Ilustración 57: Instalación de dimmer/switch .................................................................. 101

Ilustración 58: Diagrama de funcionamiento dimmer/switch ........................................... 102

Ilustración 59 Control luces escenario ........................................................................... 102

Ilustración 60: Control luces del público ........................................................................ 103

Ilustración 61: Pantalla principal servidor ....................................................................... 104

Ilustración 62: Pantalla principal cliente ......................................................................... 105

Page 14: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

XIV

LISTA DE TABLAS

Tabla 1: Matriz de incidencia ...........................................................................................20

Tabla 2: Impacto tecnológico ...........................................................................................21

Tabla 3: Impacto ambiental ..............................................................................................22

Tabla 4: Impacto social ....................................................................................................23

Tabla 5: Impacto económico ............................................................................................24

Tabla 6: Impacto general .................................................................................................25

Tabla 7: Comparación entre el modelo OSI y TCP/IP ......................................................47

Tabla 8: Protocolos de la arquitectura TCP/IP .................................................................49

Tabla 9 Los cuatro componentes de .NET Framework ....................................................51

Tabla 10: Funciones Síncronas y Asíncronas ..................................................................56

Tabla 11: Datos de requerimientos ..................................................................................62

Tabla 12: Costos de equipos ......................................................................................... 106

Tabla 13: Tabla de ahorro anual .................................................................................... 108

Page 15: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

15

INTRODUCCIÓN

La iluminación representa el 14% de todo el consumo eléctrico en Europa y el 19% de

toda la electricidad en el mundo (fuente: IEA - International Energy Agency). Cambiar los

sistemas de iluminación antiguos por otros que ahorren energía es un primer paso que

debe completarse con el uso de dispositivos eficaces que activen y desactiven las luces

cuando sea necesario y adapten la iluminación según la ocupación o la intensidad.

Los beneficios obtenidos de estos dispositivos que sirven para controlar la potencia

eléctrica son el ahorro de energía y el mejoramiento del desempeño de los sistemas

controlados.

La característica principal de la iluminación del aula magna de la PUCESD, es el manejo

mediante breakers que se encuentran ubicados en el cuarto de control, estos no cuentan

con ningún tipo de regulación y además hay que manejarlos manualmente, lo que impide

mejorar el desempeño de las luces y no permiten el ahorro de energía.

El objetivo de este trabajo es dar una solución a este problema mediante el desarrollo de

un software, con los dispositivos adecuados puedan regular la iluminación del aula

magna de la PUCESD; de esta manera toda la comunidad que haga uso de la misma,

saldrá beneficiada.

La selección de los equipos se la realizó por medio de una entrevista realizada al Ing.

Mauricio Masache (Ver anexo 2) un experto en la materia e investigación en la web.

De la conversación y de nuestra investigación se obtuvo el protocolo Z-Wave el cual se

ajustarse de mejor manera a las necesidades de nuestro proyecto ya que es una

tecnología inalámbrica de comunicaciones basada en RF (radio frecuencia), lo cual

permite trabajar con la red eléctrica actual sin necesidad de realizarle ningún cambio.

Para el desarrollo del software también se realizaron entrevistas a los encargados del

aula magna de la PUCESD con el fin de obtener todos los datos previos a la codificación

del programa. Con los requisitos claros se selecciona el modelo de desarrollo en

cascada que consta de las siguientes etapas:

I. Análisis: Toma como entrada una descripción en lenguaje natural de lo que quiere

el cliente.

Page 16: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

16

II. Diseño: Su entrada son los requerimientos y a partir de estos se selecciona el

lenguaje de programación y se especifica el funcionamiento del programa.

III. Codificación: A partir del diseño se produce módulos los cuales en nuestro caso

serán cliente y servidor. En esta fase se hacen también pruebas de unidad. Para

el desarrollo del servidor seleccionamos como tipo de lenguaje C# .NET ya que

debido a sus potentes características como POO y para el cliente Microsoft

Blends ya que está enfocado al entorno gráfico de una aplicación.

IV. Pruebas: A partir de los módulos probados se realiza la integración y pruebas de

todo el sistema.

V. Documentación: Se generan los manuales del usuario y del programador para el

uso del software.

VI. Implementación: Instalación del programa junto con los dispositivos para el control

de la iluminación.

Page 17: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

17

1. ANTECEDENTES Y JUSTIFICACIÓN

1.1 DESCRIPCIÓN HISTÓRICA

El término domótica o “Domotique” se utilizó por primera vez en Francia y se define como

el “conjunto de sistemas capaces de automatizar una vivienda, aportando servicios de

gestión energética, seguridad, bienestar y comunicación integrados por medio de redes

interiores y exteriores de comunicación, cableadas o inalámbricas, y cuyo control goza de

cierta ubicuidad, desde dentro y fuera del hogar.” 1

Este tipo de sistemas tienen sus inicios en el proyecto francés EUREKA que se

implementó, en noviembre de 1985, como una estrategia para reforzar la capacidad

industrial de este país frente a otras grandes potencias en el campo de la Investigación y

el Desarrollo.

Dentro del programa Eureka, nace el proyecto IHS (Intégrate Home System) que fue

desarrollado, con intensidad durante los años 87-88 y que posteriormente dio lugar al

ESPRIT (Europeas Scientific Programme for Research & Development in Information

Technology), extendiéndose así al resto de países de la Unión Europea que persiguen los

mismos objetivos de desarrollo tecnológico e implementación en el hogar.

El ESPRIT busca la definición de una norma de integración de los sistemas electrónicos

domésticos y de los campos de aplicación de un sistema de éstas características. De

este modo, se pretende obtener un estándar que permita una evolución hacia las

aplicaciones integradas en el hogar. Actualmente, este programa se encuentra en la Fase

III y es patrocinado por la Comunidad Económica Europea. 2

Es necesario recalcar que para poder considerar la domótica como un sistema dotado de

inteligencia se deben incorporar elementos o sistemas basados en las Nuevas

Tecnologías de la Información (NTI).

1 Basado en Wikipedia, la enciclopedia libre (http://es.wikipedia.org/wiki/Dom%C3%B3tica)

10/11/2009 2 Estudio sobre la evolución de la domótica

(http://www.fortunecity.com/campus/spanish/184/domotica/domotexto.htm) 10/11/2009

Page 18: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

18

1.2 SITUACIÓN ACTUAL

La PUCESD cuenta con un área denominada Aula Magna la cual está dedicada a la

realización de eventos tales como congresos interuniversitarios, ateneos, ceremonias de

egresamiento, conferencias, seminarios, entre otros; en donde son partícipes tanto la

comunidad universitaria como la sociedad en general.

1.3 LA PROBLEMÁTICA OBSERVADA

Con la obtención del plano eléctrico del Aula Magna y las posteriores visitas pudimos

observar que las luminarias son controladas mediante breakers e interruptores ubicados

en el cuarto de control, estos dispositivos tradicionales son de uso manual y no permiten

implementar un control automatizado.

1.4 NECESIDADES Y PROBLEMAS IDENTIFICADOS

Existen algunas necesidades que se presentan al momento de la ejecución de un evento

en cuanto al manejo de la iluminación, dependiendo del tipo del evento se puede

necesitar cierta cantidad de luz; como en una conferencia podría necesitarse el 100% de

la iluminación y en un ateneo podría requerirse un 80% de la iluminación, esta variación

en la intensidad de la luz se la puede controlar en las luminarias de tipo incandescentes;

en cambio en las fluorescentes únicamente encender y apagar.

Así mismo se observó la necesidad de controlar grupos de luces (escenario y público) al

mismo tiempo.

Un gran problema que se identificó es el tiempo que se pierde al realizar el encendido y el

apagado manual de algunas, o todas las luces del Aula Magna.

Esto ocasiona que el encargado de la iluminación tenga que trasladarse hasta el cuarto

de control para realizar cualquier cambio en las luces y luego comprobar la aplicación de

los mismos.

Page 19: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

19

1.5 ALTERNATIVAS Y SOLUCIONES POSIBLES

Para automatizar la iluminación del aula magna existen dos protocolos que podrían

utilizarse:

1. Universal powerline bus: Este protocolo de comunicación usa el cableado

eléctrico para enviar y recibir señales. Este dispositivo se conecta a un tomacorriente

y controla los equipos conectados a ese circuito, en este caso los focos.

El problema es que las luces del Aula Magna se encuentran separadas en varios

circuitos y para controlar las luces deberíamos desplazarnos a un tomacorriente

asociado a las luces que deseamos controlar.

2. Z-Wave: Este protocolo trabaja con una tecnología inalámbrica de comunicaciones

basada en RF (radio frecuencia), diseñado para aplicaciones de control y lectura de

estado en entornos residenciales y comerciales pequeños.

Este protocolo es el que más se adapta a la solución que se pretende brindar ya que

puede controlar todos los dispositivos de una forma centralizada y sin tener que

cambiar la estructura de la red eléctrica actual.

1.6 BENEFICIOS ESPERADOS

Con la aplicación de ésta tecnología optimizaremos el tiempo de apagado y encendido de

las luces, la intensidad desde 10% a 100% de cada línea de luminarias. Además se

obtendrá un control centralizado del Aula Magna de la PUCESD.

1.7 OBJETIVO GENERAL

Controlar la intensidad de la iluminación del Aula Magna de la PUCESD de manera

centralizada por medio de un software.

1.8 OBJETIVOS ESPECÍFICOS

I. Conocer las diferentes alternativas luminotécnicas existentes.

Page 20: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

20

II. Seleccionar la herramienta luminotécnica adecuada para este proyecto.

III. Desarrollar un software para el control de la intensidad de la iluminación del Aula

Magna de la PUCESD.

IV. Optimizar la instalación de equipos y software diseñado para la implementación

de la solución seleccionada.

1.9 ANÁLISIS DE IMPACTO

Las metodologías de evaluación de impacto ambiental sirvieron como base para obtener

una visión general de cómo se debe realizar un análisis de impacto, de estas

metodologías se pudo reutilizar algunos modelos de las matrices de impactos y el uso de

técnicas para un análisis en un caso de estudio. Se tomaron como referencia los formatos

de matrices de importancia y valoración de impactos.

Para poder medir los impactos generados por el proyecto utilizaremos la siguiente matriz

de incidencia a la cual le hemos asignado valores que representan un criterio cualitativo

para los indicadores de impacto.

Nivel Descripción

-3 Impacto alto negativo

-2 Impacto medio negativo

-1 Impacto bajo negativo

0 No hay impacto

1 Impacto bajo positivo

2 Impacto medio positivo

3 Impacto alto positivo

Tabla 1: Matriz de incidencia

Una vez identificados los indicares de impacto se crea la matriz de importancia, en esta

matriz se situarán en las columnas los valores de incidencia del impacto, mientras que las

Page 21: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

21

filas serán ocupadas por los indicadores de impacto, de tal forma que en las casillas de

cruce podremos comprobar la importancia del impacto sobre el indicador

correspondiente.

1.9.1 Impacto tecnológico

Nivel de Impacto

Indicadores.

-3

-2

-1

0

1

2

3

Control centralizado

de la iluminación del

Aula Magna.

X

Equipos

inalámbricos

compatibles con la

red eléctrica actual.

X

Total 6

Tabla 2: Impacto tecnológico

∑=6

Vin= Valor del Indicador

Nin= Número total de indicadores

Nivel de Impacto = Impacto alto positivo

Page 22: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

22

Análisis

La implementación del software y hardware nos da como resultado un

control centralizado de la iluminación del Aula Magna agilizando el proceso

de encendido/apagado de las luminarias.

Para la instalación de los nuevos equipos inalámbricos no se requirió de la

modificación de la red eléctrica del Aula Magna, pudiendo funcionar

independientemente del control centralizado.

1.9.2 Impacto Ambiental

Nivel de Impacto

Indicadores

-3

-2

-1

0

1

2

3

Consumo de

energía eléctrica.

X

Total 1

Tabla 3: Impacto ambiental

∑= 1

Vin= Valor del Indicador

Nin= Número total de indicadores

Nivel de Impacto = Impacto bajo positivo.

Page 23: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

23

Análisis

El impacto ambiental en este caso es mínimo ya que al no usarse

constantemente la iluminación no existe un ahorro de energía significante.

1.9.3 Impacto Social

Tabla 4: Impacto social

∑= 2

Vin= Valor del Indicador

Nin= Número total de indicadores

Nivel de Impacto = Impacto medio positivo.

Nivel de Impacto

Indicadores

-3 -2 -1 0 1 2 3

Presentación de eventos

en general en el Aula

Magna.

X

Total 2

Page 24: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

24

Análisis

Para el público en general que asiste a un evento en el Aula Magna los cambios

realizados en el control de la iluminación pasaran desapercibidos, más no así

para el operario del sistema que tendrá las facilidades de un control centralizado.

1.9.4 Impacto Económico

Nivel de Impacto

Indicadores.

-3

-2

-1

0

1

2

3

Costos de mantenimiento

de los equipos de la red

inalámbrica.

X

Reducción de consumo

energético. X

Total -2 1

Tabla 5: Impacto económico

∑= -1

Vin= Valor del Indicador

Nin= Número total de indicadores

Nivel de Impacto = Impacto bajo negativo.

Page 25: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

25

Análisis

La adquisición de los equipos inalámbricos para el control centralizado

demanda una inversión elevada en comparación con los métodos de control

tradicionales, aunque su instalación es similar a los controles tradicionales3.

Los dispositivos instalados para el control de las luces generan un ahorro

promedio de un 20%.4

1.9.5 Impacto general

Niveles de Impacto

Indicadores

-3 -2 -1 0 1 2 3

Impacto Tecnológico x

Impacto Social x

Impacto Económico x

Impacto Ambiental x

Total -1 1 2 3

Tabla 6: Impacto general

∑= 5

3 Anexo 4

4 Anexo 5

Page 26: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

26

Vin= Valor del Indicador

Nin= Número total de indicadores

Nivel de Impacto General = Impacto bajo positivo

Análisis

La elaboración del software para el control de intensidad de la luz prototipo Aula

Magna da como resultado general un impacto bajo positivo. A pesar que se logra

el control centralizado de la iluminación del Aula Magna brindando facilidades al

operador al momento de realizar su trabajo, la relación tecnología – costo es un

gran obstáculo para la masificación de esta tecnología en otros edificios del

campus universitario.

Page 27: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

27

2 MARCO TEÓRICO

2.1 ILUMINACIÓN

La iluminación es la acción o efecto de iluminar. En la técnica se refiere al conjunto

de dispositivos que se instalan para producir ciertos efectos luminosos, tanto prácticos

como decorativos. Con la iluminación se pretende, en primer lugar conseguir un nivel de

iluminación, o iluminancia, adecuado al uso que se quiere dar al espacio iluminado, nivel

que dependerá de la tarea que los usuarios hayan de realizar.5

La automatización de la iluminación ha crecido ampliamente gracias a los avances de la

domótica.

La aplicación de la tecnología a los sistemas de iluminación ha permitido que en la

actualidad existan una gran cantidad de alternativas luminotécnicas a la hora de realizar

cualquier tipo de aplicación; pero la cúspide de estos avances se expresa a través de los

elementos electrónicos de control de la iluminación, permitiendo grandes aplicaciones

luminotécnicas tanto en edificios con instalaciones automatizadas, como en hogares

inteligentes que cuentan con los últimos avances en tecnología residencial.

2.1.1 Control de Iluminación.

Para que el control de la iluminación pueda ser una realidad en un sistema domótico, es

preciso que las señales que van a controlar los diferentes elementos de iluminación

viajen por un medio determinado. Un canal físico específico con un protocolo de

comunicación lógico para que las órdenes sobre los elementos se traduzcan en hechos

inmediatos. Los sensores en una red de automatización de la iluminación actúan

captando diferentes parámetros, para enviar posteriormente hacia el actuador

(controlador) determinado la orden precisa en cada instante. Los tipos y características

de estos elementos son muy amplios, y su empleo vendrá marcado por las necesidades

en cada momento.

Es preciso indicar que un sistema domótico debe garantizar siempre la posibilidad de

encender y apagar la iluminación de forma tradicional, es decir, de forma voluntaria y

manual mediante interruptores tradicionales por parte del usuario.

5 Wikipedia- Iluminación física (http://es.wikipedia.org/wiki/Iluminación_física)

Page 28: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

28

2.2 SISTEMAS DE ILUMINACIÓN

En el inicio de la humanidad los seres humanos crearon luz exclusivamente de fuego,

aunque es más una fuente de calor que luz. Todavía estamos utilizando el mismo

principio en el siglo 21 para producir luz y calor a través de lámparas incandescentes.

Sólo en las últimas décadas los productos de alumbrado se han convertido en algo más

sofisticado y variado.

Actualmente existen dos tipos de fuentes de luz que son las de incandescencia y la

luminiscencia. Se define como incandescencia la producción de luz por la elevación de

temperatura de un cuerpo, esta luz se encuentra dentro del espectro visible y depende

exclusivamente de la temperatura del material.

La luminiscencia es la radiación luminosa emitida por un cuerpo, por efecto de un agente

exterior que excita los átomos de dicho cuerpo. En este caso el número de niveles de

energía posibles son muy reducidos y la luz se emite en un número limitado de longitudes

de onda, lo que origina un espectro discontinuo.6

2.2.1 Lámparas incandescentes

Las lámparas incandescentes fueron la primera forma de generar luz a partir de la

energía eléctrica. Desde su invención el 21 de octubre de 1879 por Thomas Alva Edison,

se han realizado varias mejoras en lo que respecta al consumo de luz, cantidad de luz

producida, etc. Su principio de funcionamiento es pasar corriente eléctrica por un

filamento de wolframio y debido al efecto Joule alcanza una temperatura tan alta que

emite radiaciones visibles por el ojo humano. Inicialmente en el interior de la ampolla se

hacía el vacío. Actualmente la ampolla está rellena de algún gas noble (normalmente

kriptón) que impide la combustión del filamento.

La lámpara incandescente es la de más bajo rendimiento luminoso de las lámparas

utilizadas actualmente, de 12 a 18 lm/W (lúmenes por vatio de potencia) y la que menor

vida útil o durabilidad ya que dura aproximadamente1000 horas.

6 Introducción a los balastros electrónicos

(http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/martinez_v_da/) pág. 3 06/09/2010

Page 29: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

29

.

1. Envoltura - ampolla de vidrio - bulbo.

2. Gas inerte.

3. Filamento de wolframio.

4. Hilo de contacto (va al pie).

5. Hilo de contacto (va a la base).

6. Alambre(s) de sujeción y disipación de calor del filamento.

7. Conducto de refrigeración y soporte interno del filamento.

8. Base de contacto.

9. Casquillo metálico.

10. Aislamiento eléctrico.

11. Pie de contacto eléctrico.

Ilustración 1: Partes de una bombilla, fuente: wikipedia, citado 27/06/2012, fuente:

http://es.wikipedia.org/wiki/L%C3%A1mpara_incandescente

El rendimiento de este tipo de lámparas es bajo debido a que un pequeño porcentaje de

la energía consumida se convierte en luz y el demás porcentaje se transforma en calor.

Ilustración 2: Rendimiento de una lámpara incandescente, fuente: Edison, Aprendizaje

basado en internet, citado 12/04/2011, fuente:

http://edison.upc.edu/curs/llum/lamparas/lincan.html

2.2.2 Lámparas fluorescentes o de descarga

Las lámparas fluorescentes proporcionan una forma más eficiente y económica de

producir luz, debido a esto el uso de este tipo de lámparas se ha popularizado hoy en día.

La forma de funcionar de estas lámparas es por medio de la descarga de mercurio a baja

Page 30: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

30

presión lo que genera una radiación ultravioleta que es convertida en luz visible mediante

sustancias fluorescentes que se encuentran en la parte interior de la lámpara, la mayoría

de las lámparas trabajan con un dispositivo llamado balastro que les ayuda a limitar la

corriente.

Están formadas por un tubo de diámetro estándar, normalmente cilíndrico, sellado en

ambos lados con un casquillo de dos contactos donde se alojan los electrodos. La

eficacia de estas lámparas depende de muchos factores: potencia de la lámpara, tipo y

presión del gas de relleno, propiedades de la sustancia fluorescente que recubre el tubo,

temperatura ambiente. La eficacia oscila entre los 38 y 91 lm/W (lúmenes por vatio de

potencia) dependiendo de las características de cada lámpara y tienen una duración

situada entre 5000 y 7000 horas.

2.3 BALASTROS

Un balastro es un circuito auxiliar que se dedica a controlar el paso de la corriente para

una lámpara, en otras palabras es el encargado de proporcionar la tensión de arranque y

funcionamiento permanente a la lámpara fluorescente.

Ilustración 3: Partes de la lámpara fluorescente, Autor: Wikipedia, citado 12/04/2011, fuente:

http://es.wikipedia.org/wiki/Luminaria_fluorescente

Page 31: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

31

Existen dos tipos de balastros:

2.3.1 Balastro electromagnético

El balastro electromagnético cosiste de un núcleo de láminas de acero rodeadas por dos

bobinas de cobre o aluminio. Con estos componentes puede transformar la potencia

eléctrica en una forma apropiada para arrancar y regular la corriente en la lámpara

fluorescente.

Otro componente que se encuentra en la mayoría de los balastros electromagnéticos es

el capacitor, que sirve para optimizar el factor de potencia lo cual permite utilizar la

energía de forma más eficiente.

2.3.2 Balastro electrónico

Como su nombre lo indica este balastro usa componentes electrónicos en vez de un

transformador. Este dispositivo enciende y regula las lámparas fluorescentes frecuencias

que generalmente sobrepasan los 250khz. Este tipo de balastros presenta varias ventajas

a su predecesor tales como la eliminación del parpadeo de la lámpara en el encendido, el

ruido y el control de la salida de la luz casi a cualquier nivel cuando se una un control de

salida luminosa (dimmer).

2.4 DIMMERS

En electrónica se conoce como Dimmer a un dispositivo usado para regular el voltaje de

una o varias lámparas. Así, es posible variar la intensidad de la luz, siempre y cuando

sean lámparas incandescentes o la lámpara fluorescente cuente con un balastro

electrónico.

Un dimmer moderno "corta" la onda senoidal, automáticamente cada vez que la corriente

cambia de dirección - es decir, cada vez que hay tensión cero que atraviesa el circuito.

Esto sucede dos veces por ciclo, o 120 veces por segundo. El circuito se enciende de

nuevo cuando la tensión vuelve a subir hasta un cierto nivel.

Page 32: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

32

El "valor encendido" se basa en la posición de mando del dimmer. Si está fijado a un

mejor ajuste, cambiará muy rápidamente después de cortar. Cuando el circuito está

encendido la mayor parte del ciclo, suministra más energía por segundo a la bombilla. Si

está fijado para luz baja, este va a esperar hasta el final del ciclo para encenderlo.

2.5 ¿QUÉ ES LA DOMÓTICA?

Domótica es el término “científico” que se utiliza para denominar la parte de la tecnología

(electrónica e informática), que integra el control y supervisión de los elementos

existentes en un edificio de oficinas o en uno de viviendas o simplemente en cualquier

hogar.

Permite la integración y la implementación de los sistemas electrotécnicos, para

satisfacer las necesidades en forma global. En otro caso no puede hablarse de Domótica,

sino simplemente de la automatización de tal o cual actividad.

Su objetivo principal radica en satisfacer todas las necesidades del hombre y su entorno.

Podemos destacar en este campo la optimización de la energía, el aumento de la

seguridad, ahorro de tiempo y dinero, confort en el hogar, controlar a distancia los

aparatos domésticos, en otras palabras, vivir mejor.

Ilustración 4: Funcionamiento de un Dimmer. Autor: HowStuffWorks, citado:

12/04/2011, fuente: http://home.howstuffworks.com/dimmer-switch2.htm

Page 33: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

33

2.5.1 Aplicaciones de la domótica

Los sistemas Domóticos son integradores de servicios en:

Iluminación: Encendido y apagado automático de luces.

Seguridad: Alarmas de incendio y antirrobo.

Climatización: Encendido y apagado automático de calefacción y estufas.

Cámaras: Sirven de vigilancia para seguridad del hogar y pueden activarse con la

detección de calor.

Control de Acceso: Portones, puertas, ventanas,…etc.

Entretenimiento: Televisores, videojuegos,…

Electrodomésticos: Programación para activar Microondas, Lavadora, Secadora,

etc…

Persianas y motores.

Riego: Activación automática del riego a una hora predeterminada por usuario.

Y cualquier dispositivo adaptado mediante una interface.

2.6 TECNOLOGÍA Z-WAVE7

Sigma Designs es un proveedor de tecnologías inalámbricas integradas, entre sus

productos ofrece el protocolo Z-Wave®, una tecnología inalámbrica de comunicaciones

basada en RF, diseñado para aplicaciones de control y lectura de estado en entornos

residenciales y comerciales pequeños

7 Zensys – Products and Technology (http://www.zen-sys.com/modules/Products&Techonology/)

6/01/2010

Page 34: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

34

Este protocolo ofrece una red inalámbrica fiable a una fracción del coste de otras

tecnologías similares, al centrarse en las aplicaciones de ancho de banda estrecha y la

sustitución de hardware costoso con soluciones de software innovadoras.

Z-Wave transforma cualquier dispositivo independiente en un nodo de red inteligente que

puede ser controlada y vigilada de forma inalámbrica dando mayor comodidad,

conveniencia y seguridad a cualquier hogar o negocio.

2.6.1 Protocolo Z-Wave8

Z-Wave es un protocolo half-dúplex de bajo ancho de banda diseñado para comunicación

inalámbrica confiable en una red de control de bajo costo. El objetivo principal del

protocolo es comunicar mensajes de control cortos de una manera confiable de la unidad

de control a uno o más nodos de la red.

El protocolo no está diseñado para transferir grandes cantidades de datos o para

transferir cualquier tipo de transmisión o sincronización de datos críticos.

8 Zensys – Especificaciones técnicas de productos (http://www.zen-sys.com/modules/iaCM-

DocMan/?docId=13&mode=CUR ) 6/01/2010

Ilustración 5: Tecnología Z- Wave. Autor: ZenSys, citado: 12/04/2011,

fuente: http://www.zen-sys.com/modules/Products&Techonology/

Page 35: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

35

El protocolo constará de 4 capas, la capa MAC que controla los medios de comunicación

de RF, la capa de transferencia que controla la transmisión y recepción de los paquetes,

la capa de enrutamiento que controla el enrutamiento de frames por la red, y finalmente la

capa de aplicación que controla la carga útil de paquetes transmitidos y recibidos.

Ilustración 6: Capas de protocolo Z-Wave. Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

2.6.1.1 Controladores y nodos esclavos

El protocolo Z-Wave tiene dos tipos de dispositivos; controladores y nodos esclavos. Los

controladores son los nodos de la red que inician comandos de control y los envían a

otros nodos, los nodos esclavos son los que responden y ejecutan esos comandos,

además pueden reenviar comandos a otros nodos, lo que hace posible al nodo

controlador comunicarse con nodos que estén fuera de su rango de cobertura.

Cada red Z-Wave tiene un identificador único de 32-bit llamado Home ID. Los

controladores tienen un ID de red pre asignado, los esclavos lo obtienen del controlador

al unirse a la red. Sí otro controlador se une a la red lo heredará del controlador primario.

Los nodos individuales de la red son direccionados usando el Nodo ID de 8-bit que es

asignado por el controlador. El Nodo ID es único en su red.

Page 36: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

36

Ilustración 7: Dispositivos Z-Wave Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

2.6.1.2 Capa MAC

La capa MAC de Z-Wave controla la radiofrecuencia media. Los datos transmitidos son

en código Manchester y consisten de un preámbulo, inicio del paquete (SOF), datos del

paquete y un símbolo que indica el fin del paquete (EOF).

Ilustración 8: Trama Z-Wave Autor: ZenSys, citado: 13/04/2011, fuente http://www.zen-

sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

2.6.1.2.1 Colisiones

Esta capa cuenta con un mecanisco que previene que los nodos transmitan mientras

otros nodos estan transmitiendo. El éxito en esta terea se obtiene al dejar que los nodos

se encuentren en modo de espera cuando no estan emitiendo datos, y luego demorando

la transmision si la capa MAC se encuentra recibiendo los datos del paquete.

Page 37: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

37

Este proceso se encuentra activo en todos los tipos de nodos cuando tienen el radio

encendido.

Ilustración 9: Manejo de colisiones Z-Wave Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

2.6.1.3 Capa de transporte

La capa de transporte controla la transferencia de datos entre dos nodos incluyendo

retransmisiones, revision de checksum y confirmaciones.

2.6.1.3.1 Estructura del paquete

La capa de transporte contiene 4 formatos básicos de metodos usados para transferir

comandos en la red. Todos los paquetes usan la siguiente estructura:

Ilustración 10: Estructura de un

paquete en protocolo Z-Wave Autor:

ZenSys, citado: 13/04/2011, fuente:

http://www.zen-

sys.com/modules/iaCM-

DocMan/?docId=13&mode=CUR

Page 38: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

38

2.6.1.3.2 Envío simple de paquetes (Singlecast frame type)

Los envios simples son siemptre transmitidos a un nodo especifico, el paquete es puesto

en conocimiento y devuelto, asi el transmisor sabrá que paquete fue recibido. Una

transmision de envio simple tiene el siguiente esquema:

Ilustración 11: Envío simple de paquetes Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

Si el paquete enviado o el Ack de respuesta está corrupto o se pierde, el emisor reenvia

el paquete. Los paquetes de envio simple pueden ser usados opcionalmente sin usar el

Ack de repuesta en redes donde no se requiera una transmisión confiable.

2.6.1.3.3 Acuses de recibido (Acknowledge, Ack)

La transferencia de paquetes Ack es un envio simple de un paquete donde la longitud de

la seccion de datos es 0.

2.6.1.3.4 Envío múltiple de paquetes (Multicast frame type)

Los envios de paquetes multiples son transmitidos a un numero que va de 1 a 232

nodos. Este tipo de envío no soporta los acuses de respuesta (Ack).

Page 39: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

39

Ilustración 12: Envío múltiple de paquetes Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

Las direcciones de envío múltiples (Multicast destination) son usadas para direccionar

nodos selectos sin tener que enviar por separado a cada uno.

Este tipo de transmisión no usa los acuses de recibido Ack por lo tanto no puede ser

usado donde se requiera una comunicación confiable.

2.6.1.3.5 Envío general (Broadcast frame type)

En este tipo de envío todos los nodos de la red reciben el paquete, y no soporte acuse de

recibo (Ack).

Ilustración 13: Envío general de paquetes Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

Page 40: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

40

Este tipo de transmisión no usa los acuses de recibido Ack por lo tanto no puede ser

usado donde se requiera una comunicación confiable.

2.6.1.4 Capa de enrutado

La capa de enrutado de Z-wave controla la ruta de los paquetes de un nodo al otro. Los

controladores y los esclavos pueden participar en el enrutado de los paquetes siempre y

cuando se encuentren “escuchando” y tengan una posición estática.

Esta capa es reponsable de enviar un paquete con una correcta lista de repetidores, y

tambien asegurarse que el paquete sea repetido de nodo a nodo. La capa de red es

tambien responsable de escanear la topología de la red y mantener actualizada una tabla

de ruteo en el controlador.

2.6.1.4.1 Marco de diseño

La capa de enrutado posee dos métodos que son usados cuando es necesario repetir

paquetes.

2.6.1.4.2 Enrutamiento simple de paquetes

El enrutado simple Z-Wave realiza el envío del paquete a un solo nodo como destino con

su respectivo acuse de recibido que contiene información del repetidor. Este es

retransmitido de un repetidor a otro hasta que alcanza su destino.

Ilustración 14: Enrutamiento simple de paquetes Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

Page 41: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

41

2.6.1.4.3 Enrutamiento de acuse de recibo (Ack)

El enrutamiento del acuse de recibo es el enrutado de un solo paquete que se usa para

informar al controlador que el frame enviado alcanzó su destino.

Ilustración 15: Enrutamiento de Ack Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

2.6.1.4.4 Tabla de enrutamiento

La tabla de enrutamiento es donde el controlador mantiene la información adquirida de

los nodos acerca de la topología de la red. La tabla está compuesta de bits con la

información de cuáles son los nodos que se pueden alcanzar.

La siguiente figura nos muestra la topología de una red con su respectiva tabla de ruteo.

Ilustración 16: Tabla de enrutamiento Autor: ZenSys, citado: 13/04/2011, fuente:

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

Page 42: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

42

La tabla de ruteo es construida por el controlador primario basado en la información que

recibe acerca de los rangos de todos los nodos de la red al momento de la instalación.

2.6.1.5 Capa de aplicación

La capa de aplicación es responsable de decodificar y ejecutar comandos en una red Z-

Wave. El marco de capa de aplicación contiene un encabezado que describe el tipo de

paquete, la información de órdenes y parámetros asociados.

Ilustración 17: Formato de paquete en capa de aplicación. Autor: Zensys, citado: 13/04/2011,

http://www.zen-sys.com/modules/iaCM-DocMan/?docId=13&mode=CUR

2.6.2 Switchs y dimmers Z-Wave

La tecnología Z-Wave nos ofrece una gran variedad de equipos para la automatización

de hogares o pequeñas empresas, pero nos centraremos a hablar de los que se utilizan

para controlar la iluminación.

2.6.2.1 Switchs Z-Wave

Son dispositivos que nos permiten controlar el encendido y apagado de luces mas no su

regulación.

Page 43: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

43

2.6.2.1.1 Leviton VRS05-1LX - vizia rf + 5A Switch9

Es un switch capaz de calzar en cualquier pared estándar y remplazar un interruptor

normal, presta servicios de apagado o encendido locales y remotos para cargas

incandescentes. Estos responden a órdenes dadas desde un controlador Z-Wave.

5 Amperios de carga.

No se requieren cables neutros para las instalaciones básicas de Vizia-rf.

Control inalámbrico confiable y compatible con Z-Wave para instalaciones sin

“cables nuevos”.

Tecnología de control inalámbrico que simplifica en gran medida los problemas de

instalación.

No se necesita un concentrador de controles de iluminación.

Compatibilidad con Z-Wave y con otros populares dispositivos residenciales que

incluyen sistemas de seguridad, calefacción, ventilación y aire acondicionado

(HVAC), motores de puertas de estacionamiento, salas de entretenimiento en el

hogar, componentes electrónicos de audio y video, control de sombras y muchos

otros más.

Miembro de la Colección Vizia. Una línea completa de controles de iluminación

estándar y de radiofrecuencia, todos compartiendo la misma apariencia y

respuesta táctil.

Diseño escalable y expandible.

Instalación de 3 vías simplificada que emplea tecnología inalámbrica

2.6.2.1.2 Leviton VRS05-1LX - vizia rf + 15A Switch10

Este dispositivo tiene las características parecidas que el switch de 5A, lo que difieren es

que este switch tiene 15A de carga y necesita un cable neutral para poder instalarlo. El

modelo es igual al de 5A.

15A (Amperios).

Requieren cables neutros para las instalaciones básicas de Vizia-rf.

Control inalámbrico confiable y compatible con Z-Wave para instalaciones sin

“cables nuevos”.

9 AsiHome- Especificaciones técnicas http://www.asihome.com/ 11/09/2010

10 AsiHome – Especificaciones técnicas http://www.asihome.com/ 11/09/2010

Page 44: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

44

Tecnología de control inalámbrico que simplifica en gran medida los problemas de

instalación.

No se necesita un concentrador de controles de iluminación.

Compatibilidad con Z-Wave y con otros populares dispositivos residenciales que

incluyen sistemas de seguridad, calefacción, ventilación y aire acondicionado

(HVAC), motores de puertas de estacionamiento, salas de entretenimiento en el

hogar, componentes electrónicos de audio y video, control de sombras y muchos

otros más.

Miembro de la Colección Vizia. Una línea completa de controles de iluminación

estándar y de radiofrecuencia, todos compartiendo la misma apariencia y

respuesta táctil.

Diseño escalable y expandible.

Instalación de 3 vías simplificada que emplea tecnología inalámbrica

2.6.2.2 Dimmers Z-Wave

Un dimmer es un dispositivo que permite controlar el encendido, apagado y regulación de

la intensidad de una lámpara.

2.6.2.2.1 Leviton VRI06-1LX – vizia rf + 600W/1000W Incandescent Dimmer11

Dispositivo con las mismas dimensiones que un switch, provee las características de

apagado, encendido y regulación de intensidad de luz. Se lo puede controlar ya sea

localmente o remotamente.

600W/1000w de carga.

Sólo puede regular luces incandescentes.

No se requieren cables neutros para las instalaciones básicas de Vizia-rf.

Control inalámbrico confiable y compatible con Z-Wave para instalaciones sin

“cables nuevos”.

Tecnología de control inalámbrico que simplifica en gran medida los problemas de

instalación.

No se necesita un concentrador de controles de iluminación.

11

AsiHome – Especificaciones técnicas http://www.leviton.com/ 11/09/2010

Page 45: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

45

Velocidades ajustables de desvanecimiento.

Atenuadores digitales de bajo ruido.

Compatibilidad con Z-Wave y con otros populares dispositivos residenciales que

incluyen sistemas de seguridad, calefacción, ventilación y aire acondicionado

(HVAC), motores de puertas de estacionamiento, salas de entretenimiento en el

hogar, componentes electrónicos de audio y video, control de sombras y muchos

otros más.

Miembro de la Colección Vizia. Una línea completa de controles de iluminación

estándar y de radiofrecuencia, todos compartiendo la misma apariencia y

respuesta táctil.

Diseño escalable y expandible.

Instalación de 3 vías simplificada que emplea tecnología inalámbrica.

Reduce el consumo de energía y extiende la vida útil del foco.

2.6.3 Controlador USB (ThinkStick Z-Wave® USB Adapter)

El controlador USB conecta un computador a una red Z-Wave, este producto hace

posible para el computador controlar y monitorear luces, control de clima y cualquier otro

dispositivo inalámbrico.

Tecnología wireless: Z-Wave

Velocidad: 4x(40kbps), compatible con dispositivos de 1x(9.6kbps)

Plataformas soportadas: Windows XP o Windows Vista (incluyendo 64bits)

Frecuencia: 908.42 MHz

Tamaño: 3.5cm x 0.9375cm x 0.4375cm (Largo, Alto, Ancho)

Page 46: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

46

2.7 PROTOCOLO TCP/IP12

TCP/IP se suele confundir muchas veces con un protocolo de comunicaciones concreto,

cuando, en realidad, es una compleja arquitectura de red que incluye varios de ellos,

apilados por capas. Es, sin lugar a dudas, la más utilizada del mundo, ya que es la base

de comunicación de Internet y también se utiliza ampliamente en las distintas versiones

del sistema operativo Unix y Linux.

En el año 1973, el DoD (Departamento de Defensa de Estados Unidos) inició un

programa de investigación para el desarrollo de tecnologías de comunicación de redes de

transmisión de datos. El objetivo fundamental era desarrollar una red de comunicación

que cumpliera las siguientes características:

Permita interconectar redes diferentes. Esto quiere decir que la red en general

puede estar formada por tramos que usan tecnología de transmisión diferente.

Sea tolerante a fallos. El DoD deseaba una red que fuera capaz de soportar

ataques terroristas o incluso alguna guerra nuclear sin perderse datos y

manteniendo las comunicaciones establecidas.

Permita el uso de aplicaciones diferentes: transferencia de archivos, comunicación

en tiempo real, etc.

Todos estos objetivos implicaron el diseño de una red con topología irregular donde la

información se fragmentaba para seguir rutas diferentes hacia el destinatario.

Si alguna de esas rutas fallaba repentinamente, la información podía seguir rutas

alternativas. Así, surgieron dos redes distintas: una dedicada a la investigación,

ARPANET, y otra de uso exclusivamente militar, MILNET.

El DoD permitió a varias universidades que colaboraran en el proyecto, y ARPANET se

expandió gracias a la interconexión de esas universidades e instalaciones del Gobierno.

12

Redes Linux con TCP/IP, Pat Eyler, pág. 10

Page 47: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

47

Este modelo se nombró después como arquitectura TCP/IP, por las iniciales de sus dos

protocolos más importantes. En 1980, TCP/IP se incluyó en Unix 4.2 de Berkeley, y fue el

protocolo militar estándar en 1983. En ese mismo año nació la red global Internet, que

utiliza también esta arquitectura de comunicación.

ARPANET dejó de funcionar oficialmente en 1990.

Algunos de los motivos de la popularidad alcanzada por esta arquitectura son:

Es independiente de los fabricantes y las marcas comerciales.

Soporta múltiples tecnologías diferentes entre ellas.

Puede funcionar en máquinas de cualquier tamaño, desde ordenadores

personales a grandes supercomputadores.

Se ha convertido en estándar de comunicación en EE.UU. desde 1983.

Tabla 7: Comparación entre el modelo OSI y TCP/IP

La arquitectura de TCP/IP se construyó diseñando inicialmente los protocolos para,

posteriormente, integrarlos por capas en la arquitectura. Por esta razón, a TCP/IP

muchas veces se la califica como pila de protocolos. Su modelo por niveles es algo

diferente a OSI de ISO.

Nótese que TCP/IP sólo tiene definida cuatro capas (mientras que OSI tiene siete).

OSI TCP/IP

7 Aplicación

Aplicación 6 Presentación

5 Sesión

4 Transporte Transporte

3 Red Interred

2 Enlace de Datos Subred

1 Física

Page 48: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

48

2.7.1 Capa de subred

El modelo no da mucha información de esta capa, y solamente se especifica que debe

existir algún protocolo que conecte la estación con la red. La razón fundamental es que,

como TCP/IP se diseñó para su funcionamiento sobre redes diferentes, esta capa

depende de la tecnología utilizada y no se especifica de antemano.

2.7.2 Capa de interred

Esta capa es la más importante de la arquitectura y su misión consiste en permitir que las

estaciones envíen información (paquetes) a la red y los hagan viajar de forma

independiente hacia su destino. Durante ese viaje, los paquetes pueden atravesar redes

diferentes y llegar desordenados. Esta capa no se responsabiliza de la tarea de ordenar

de nuevo los mensajes en el destino. El protocolo más importante de esta capa se llama

IP (Internet Protocol o Protocolo de Interred), aunque también existen otros protocolos.

2.7.3 Capa de transporte

Ésta cumple la función de establecer una conversación entre el origen y el destino, de

igual forma que hace la capa de transporte en el modelo OSI. Puesto que las capas

inferiores no se responsabilizan del control de errores ni de la ordenación de los

mensajes, ésta debe realizar todo ese trabajo. Aquí también se han definido varios

protocolos, entre los que destacan TCP (Transmission Control Protocol o Protocolo de

Control de la Transmisión), orientado a la conexión y fiable, y UDP (User Datagram

Protocol o Protocolo de Datagrama de Usuario), no orientado a la conexión y no fiable.

2.7.4 Capa de aplicación

Esta capa contiene, al igual que la capa de aplicación de OSI, todos los protocolos de alto

nivel que utilizan los programas para comunicarse. Aquí se encuentra el protocolo de

terminal virtual (TELNET), el de transferencia de archivos (FTP), el protocolo HTTP que

usan los navegadores para recuperar páginas en la World Wide Web, etc.

Page 49: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

49

Las capas de sesión y presentación no existen en la arquitectura TCP/IP, ya que los

diseñadores pensaron que no se necesitaban. La experiencia obtenida con los trabajos

realizados en el modelo OSI ha comprobado que esta visión fue correcta: se utilizan muy

poco en la mayoría de las aplicaciones de comunicación. En caso de que alguna

aplicación desee utilizar un servicio de encriptación de datos o recuperación ante caídas,

será necesario incluirlos dentro del propio programa de aplicación.

TELNET FTP HTTP Aplicación

TCP UDP Transporte

IP ICMP Interred

LAN RTC PPP Subred

Tabla 8: Protocolos de la arquitectura TCP/IP

En la ilustración aparecen algunos de los más importantes del modelo. Nótese que en el

nivel de subred están definidos los protocolos de comunicación de algunas redes

comerciales, como RTC (estándar de la red telefónica conmutada), redes de área local

(IEEE 802), etc.

El modelo TCP/IP original no distinguía los conceptos de capa, servicio, interfaz y

protocolo, aunque revisiones posteriores han incluido parte de esta nomenclatura. Por

esta razón, el modelo OSI es más flexible a los cambios, ya que la interacción y

encapsulación entre capas es más estricta.

Otro problema que tiene TCP/IP es que en sus capas inferiores no se distingue entre

nivel físico y nivel de enlace, funciones que resultan completamente diferentes.

Como resultado, se incluye una sola capa de subred en la que coexiste una amalgama de

protocolos y estándares de redes que poco se comprende.

Page 50: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

50

2.8 CLIENTE/SERVIDOR

La arquitectura aplicada fue la de Cliente/Servidor, esta arquitectura permite a los

usuarios finales obtener la información requerida de una forma transparente aunque se

encuentren en entornos multiplataforma.

En el modelo cliente – servidor, el cliente solicita un servicio requerido al servidor el cuál

se encarga de responder a esta solicitud.

Los clientes generalmente realizan funciones como:

Manejo de la interfaz de usuario.

Captura y validación de los datos de entrada.

Generación de consultas e informes sobre las bases de datos.

Por su parte los servidores realizan, entre otras, las siguientes funciones:

Gestión de periféricos compartidos.

Control de accesos concurrentes a bases de datos compartidas.

Enlaces de comunicaciones con otras redes de área local o extensa.

Entre las principales características de la arquitectura cliente/servidor se pueden destacar

las siguientes:

El servidor presenta a todos sus clientes una interfaz única y bien definida.

El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa.

El cliente no depende de la ubicación física del servidor, ni del tipo de equipo

físico en el que se encuentra, ni de su sistema operativo.

Los cambios en el servidor implican pocos o ningún cambio en el cliente.

Page 51: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

51

2.9 .NET FRAMEWORK

.NET Framework es la plataforma de desarrollo de código administrado de Microsoft. Está

formado por una serie de herramientas y librerías con las que se pueden crear todo tipo

de aplicaciones, desde las tradicionales aplicaciones de escritorio (WPF o Windows

Forms) hasta aplicaciones para XBOX (XNA) pasando por desarrollo web (ASP.NET),

desarrollo para móviles (compact Componentes).

.NET Framework se compone de cuatro partes, el entorno común de ejecución, un

conjunto de bibliotecas de clase, un grupo de lenguajes de programación y el entorno

ASP.NET .NET Framework fue diseñado con tres objetivos en mente.13

Primero, debía lograr aplicaciones Windows mucho mas estables, aunque

también debía proporcionar una aplicación con un mayor grado de seguridad.

Segundo, debía simplificar el desarrollo de aplicaciones y servicios web que no

sólo funcionen en plataformas tradicionales sino también en dispositivos móviles.

Por ultimo, el entorno fue diseñado para proporcionar un solo grupo de bibliotecas

que pudieran trabajar con varios lenguajes.

Common Language Runtime

Bibliotecas de Clase

Lenguajes de Programación (C#, VC++, VB.NET, JScript.NET)

ASP.NET

Tabla 9 Los cuatro componentes de .NET Framework

2.9.1 Common Language Runtime (CLR)

Este es el lenguaje insignia de .NET Framework (marco de trabajo .NET) y pretende

reunir las ventajas de lenguajes como C, C++ y Visual Basic en uno solo. El CLR es el

verdadero núcleo del framework de .NET, entorno de ejecución en el que se cargan las

13

La Biblia de C#, Jeff Ferguson, Brian Patterson, Jason Beres, Pierre Boutiquin y Meeta Gupta,

pág 38

Page 52: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

52

aplicaciones desarrolladas en los distintos lenguajes, ampliando el conjunto de servicios

del sistema operativo (Windows 2000 y Windows 2003).

La herramienta de desarrollo compila el código fuente de cualquiera de los lenguajes

soportados por .NET en un código intermedio, el MSIL (Microsoft Intermediate

Language), similar al BYTECODE de Java. Para generarlo, el compilador se basa en la

especificación CLS (Common Language Specification) que determina las reglas

necesarias para crear el código MSIL compatible con el CLR.

Para ejecutarse se necesita un segundo paso, un compilador JIT (Just-In-Time) es el que

genera el código máquina real que se ejecuta en la plataforma del cliente. De esta forma

se consigue con .NET independencia de la plataforma de hardware. La compilación JIT la

realiza el CLR a medida que el programa invoca métodos. El código ejecutable obtenido

se almacena en la memoria caché del ordenador, siendo recompilado de nuevo sólo en el

caso de producirse algún cambio en el código fuente.

El CLR proporciona funciones como la gestión de memoria, la seguridad y un sólido

sistema de control de errores, a cualquier lenguaje que se integre en .NET Framework,

gracias al CLR todos los lenguajes .NET pueden usar varios servicios de ejecución sin

que los programadores tengan que preocuparse de si su lenguaje particular admite una

función de ejecución.

2.9.2 Bibliotecas de Clase .NET

.NET Framework proporciona muchas clases que ayudan a los programadores a reutilizar

el código. Las bibliotecas de clase .NET contienen código para programar subprocesos,

entrada y salida de archivos, compatibilidad para bases de datos, análisis XML y

estructuras de datos como pilas y colas. Y lo mejor de todo, toda esta biblioteca de clase

esta disponible para cualquier lenguaje de programación compatible con .NET

Framework, gracias a la CLR cualquier lenguaje .NET puede usar cualquier clase de la

biblioteca .NET.

Como ahora todos los lenguajes admiten los mismos tiempos de ejecución, puede

reutilizar cualquier clase que funcione con .NET Framework. Esto significa que cualquier

funcionalidad disponible para un lenguaje también estará disponible para cualquier otro

lenguaje .NET.

Page 53: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

53

A continuación se ilustra una visión muy general de las bibliotecass de clase .NET

Framework

Ilustración 18: Las Bibliotecas de Clase .NET Framework, Autor Jeff Ferguson, Brian Patterson, Jason Beres, Pierre Boutiquin y Meeta Gupta, Citado: 23/06/2012, Fuente: La

Biblia de C# pág 42

2.9.3 Lenguajes de Programación .NET

.NET Framework proporciona un conjunto de herramientas que le ayudan a elaborar

código que funciona con .NET Framework. Microsoft proporciona u conjunto de lenguajes

que ya son “compatibles con .NET”. C# es uno de estos lenguajes. También se han

creado nuevas versiones de Visual Basic y Visual C++ para aprovechar las ventajas de

.NET Framework.

Page 54: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

54

El desarrollo de lenguajes compatibles con .NET no se limita a Microsoft. El grupo .NET

de Microsoft ha publicado documentación que muestra cómo los proveedores puedan

hacer que sus lenguajes funcionen con .NET

2.9.4 Entorno ASP.NET

Internet fue concebida en un principio para enviar contenido estático a los clientes web.

Estas páginas web nunca cambiaban y eran las mismas para todos los usuarios que

navegaban en el sitio. Microsoft lanzo servidores activos para permitir la creación de

páginas dinámicas, esto se concibió mediante el uso de secuencia de comandos que

funcionaban por detrás de la página web generalmente escritas en VB Script.

ASP.NET mejora al original ASP proporcionando “código detrás”. En ASP. HTML las

secuencias de comandos se mezclaban en un documento. Con ASP.NET y su “código

detrás” se puede separar el código y HTML.

De forma parecida a Windows Forms, ASP.NET admite Web Forms. Los Web Forms

permiten arrastras y colocar controles en sus formularios y codificarlos como lo haría

cualquier aplicación Windows.

Como ASP.NET usa .NET Framework también usa el compilador Justo a Tiempo (JIT).

Las páginas ASP tradicionales se ejecutaban lentamente debido a que el código era

interpretado, en ASP.NET se compila el código en el servidor o la primera vez que es

necesario, lo que aumenta considerablemente la velocidad.

2.10 EL LENGUAJE DE PROGRAMACIÓN C SHARP

C# o C Sharp es un lenguaje de programación orientado a objetos desarrollado y

estandarizado por Microsoft como parte de su plataforma .NET, corre en el Lenguaje

Común en Tiempo de Ejecución (CLR, Common Language Runtime).

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET el

cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre

ellos Delphi).14

14

Wikipedia, La enciclopedia libre (http://es.wikipedia.org/ ) 08/02/2010

Page 55: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

55

C♯, como parte de la plataforma .NET, está normalizado por ECMA (European Computer

Manufacturers Association) desde diciembre de 2001. El 7 de noviembre de 2005 salió la

versión 2.0 del lenguaje que incluía mejoras tales como tipos genéricos, métodos

anónimos, iteradores, tipos parciales y tipos anulables. El 19 de noviembre de 2007 salió

la versión 3.0 de C# destacando entre las mejoras los tipos implícitos, tipos

anónimos y LINQ (Language Integrated Query -consulta integrada en el lenguaje).

2.10.1.1 Programación en red síncrona/asíncrona15

La programación síncrona y asíncrona sirve para definir la forma en que se van a manejar

los procesos dentro de la aplicación ya sea web o API, la principal diferencia entre estos

métodos de programación puede ser explicada con un ejemplo.

Considerando que una aplicación que está haciendo de servidor está escuchando un

puerto específico para obtener datos de sus clientes. En recepción síncrona, mientras el

servidor está a la espera de recibir información del cliente, si la cadena es vacía el hilo

principal bloqueara la solicitud hasta que la información se cumpla. Mientras el servidor

está a la espera no podrá recibir más clientes ya que está ocupado por el primero, algo

que es inaceptable en una aplicación real donde se necesita que una aplicación soporte

varios clientes a la vez.

En una comunicación asíncrona, mientras el servidor está a la espera de datos del

cliente, todavía puede procesar solicitudes de conexión de otros clientes y recibir

información de ellos

2.10.1.2 Clases Socket16

La clase Socket (System.Net.Sockets.Socket) prevé un conjunto de métodos síncronos y

asíncronos para comunicaciones síncronas y asíncronas. Según la convención de

nombrado de funciones de .NET, todos los métodos asíncronos son creados

15

Librería de MSDN (http://msdn.com)

16 Librería de MSDN (http://msdn.com)

Page 56: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

56

anteponiendo las palabras “Begin” o “End”, los métodos síncronos no llevan prefijo como

se muestra en la tabla.

Synchronous

Methods

Asynchronous

Methods

Connect() BeginConnect()

EndConnect()

Receive() BeginReceive()

EndReceive()

Tabla 10: Funciones Síncronas y Asíncronas

2.11 MICROSOFT BLEND

Microsoft Expression Blend es una herramienta de diseño profesional de todas las

funciones para crear interfaces de usuario atractivas y sofisticadas de Microsoft basado

en Windows y las aplicaciones de Microsoft basado en Silverlight. Expression Blend

permite a los diseñadores se centran en la creatividad y los desarrolladores centrarse en

la programación. Cada miembro del equipo puede funcionar sin el bloqueo de la

progresión de la otra.

Microsoft Expression Blend produce Windows Presentation Foundation (WPF), Silverlight

1.0, sitios web, y controles de usuario de Silverlight 2 .

Las características son:

Paquete completo de herramientas de dibujo vectorial, que incluye el texto y

herramientas de tres dimensiones (3D).

Fácil de usar, moderna interfaz visual con paneles acoplables y menús de

contexto-objeto

Animación en tiempo real.

Page 57: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

57

3D y soporte de medios para mejorar la experiencia de los usuarios.

Avanzada, flexible y personalizaciones reusables, temas opcionales para una

Puntos de gran alcance para la integración de fuentes de datos y recursos

externos.

Puntos de vista en tiempo real de diseño y maquetación.

La interoperabilidad con Visual Studio 2008 para ayudar a los diseñadores y

desarrolladores trabajar juntos más estrechamente y eficazmente como un

equipo.

2.12 WINDOWS PRESENTATION FOUNDATION17

Windows Presentation Foundation (WPF) es un sistema de presentación grafico para

Windows. WPF esta diseñado para .NET, influenciado por las modernas tecnologías de

presentación como HTML, Flash y gráficos acelerados por hardware. Es el cambio más

radical que llego a las interfaces de usuario de Windows desde Windows 1995.

El núcleo de WPF es un motor de representación basado en vectores e independiente de

la resolución que se crea para sacar partido del hardware de gráficos moderno. WPF

extiende el núcleo con un conjunto completo de características de desarrollo de

aplicaciones que incluye Lenguaje XAML, controles, enlace de datos, diseño, gráficos 2D

y 3D, animación, estilos, plantillas, documentos, multimedia, texto y tipografía. WPF se

incluye en Microsoft .NET Framework, de modo que es posible compilar aplicaciones que

incorporen otros elementos de la biblioteca de clases de .NET Framework.

2.12.1 La evolución de los gráficos de Windows.

Los desarrolladores de aplicaciones de interfaces de usuario para Windows han venido

usando esencialmente la misma tecnología de presentación durante más de 15 años. La

típica aplicación de Windows se basa en dos librerías bien conocidas del sistema

operativo para crear la interfaz de usuario:

17

Pro WPF in C# 2010, Matthew MacDonald, pág. 1

Page 58: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

58

User32. Esta provee una sensación familiar de los elementos de Windows

tales como ventanas, botones, cajas de texto, etc.

GDI/GDI+. Esta provee el soporte de dibujado para renderizar figuras, textos e

imágenes al costo de una complejidad adicional.

A través de los años estas tecnologías han sido redefinidas y las APIs que los

desarrolladores usan han sido cambiadas dramáticamente. Si se crea una aplicación con

.NET y Windows Forms o persistes en utilizar aplicaciones como Visual Basic 6 en

cualquier caso las mismas partes del sistema operativo estarán ejecutándose. Nuevos

Frameworks mejoran la interacción con User32 y GDI/GDI+, estos proveen mejoras como

eficiencia, reducen complejidad y añaden características prefabricadas, pero estos no

quitan las limitaciones fundamentales de un componente del sistema que fue diseñando

más de una década atrás.

2.12.1.1 DirectX: El nuevo motor gráfico

Microsoft creo una alternativa a las limitaciones de las librerías User32 y GDI/GDI+:

DirectX. DirectX comenzó como un toolkit para crear juegos en la plataforma Windows.

Su mandato de diseño fue velocidad y así Microsoft trabajó en estrecha colaboración con

los proveedores de tarjeta de vídeo para dar DirectX la aceleración de hardware

necesaria para las complejas texturas, efectos especiales como transparencia parcial y

gráficos tridimensionales.

A través de los años desde su introducción (poco después de Windows 95), DirectX ha

madurado. Ahora es parte integral de Windows, con soporte para todas las tarjetas de

video modernas. Sin embargo, la API de programación para DirectX todavía refleja sus

raíces como toolkit para desarrolladores de juegos. Debido a su complejidad, DirectX casi

nunca es utilizado en las aplicaciones de Windows tradicionales (como el software de

negocios).

WPF cambia todo esto. En WPF, la tecnología subyacente de gráficos no es GDI/GDI+.

En cambio, es DirectX. Notablemente, las aplicaciones de WPF utilizan DirectX sin

importar qué tipo de interfaz de usuario se crea. Eso significa que si estas diseñando

gráficos tridimensionales complejos (fuerte de DirectX) o simplemente dibujando botones

y texto, todo el trabajo de dibujo viaja a través de la canalización de DirectX. Como

resultado, incluso las aplicaciones pueden utilizar ricos efectos como transparencia y anti-

Page 59: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

59

aliasing. Además se beneficia de la aceleración de hardware, es decir DirectX pone a

trabajar tanto como sea posible a la unidad de procesamiento de gráficos (GPU), que es

el procesador dedicado en la tarjeta de video.

Un componente que todavía se usa (de forma limitada) es User32. Eso es porque WPF

todavía depende de User32 para ciertos servicios, tales como manejo y enrutamiento de

entrada y clasificación de las aplicaciones con sus recursos respectivos en la pantalla.

Sin embargo, todo el dibujado es canalizado a través de DirectX.

2.12.2 La arquitectura de WPF

WPF utiliza una arquitectura multicapa. En la parte superior, la aplicación interactúa con

un conjunto de alto nivel de servicios que son completamente escrito y administrado en

C#. El trabajo real de convertir objetos .NET en triángulos y texturas de Direct3D sucede

detrás del escenario, con un componente no administrado de nivel inferior, denominado

milcore.dll. Milcore.dll se implementa en código no administrado porque necesita

integración con Direct3D y porque es extremadamente sensible al rendimiento.

Ilustración 19: La arquitectura de WPF, Autor: Mattew MacDonald, Citado: 23/06/2012,

Fuente: Pro WPF in C# 2010 pág. 12

Los componentes son:

Page 60: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

60

PresentationFramework.dll. Contiene los elementos WPF de nivel superior,

incluyendo ventanas, paneles y otros tipos de controles. También implementa

abstracciones más alto nivel de programación como estilos. La mayoría de las

clases que se va a utilizar directamente provienen de esta librería.

PresentationCore.dll. Contiene tipos base, como UIElement y Visual, de la

que derivan todas las formas y controles.

WindowsBase.dll. Contiene ingredientes aún más básicos que tienen el

potencial para ser reutilizados fuera de WPF, como DispatcherObject y

DependencyObject, que introduce las propiedades de dependencia

milcore.dll. Este es el núcleo del sistema de procesamiento de WPF y la

fundación de la capa de integración de medios (MIL). Su motor de

composición traduce elementos visuales en triángulos y texturas que Direct3D

espera. Aunque milcore.dll es considerada parte de WPF, también es un

componente esencial del sistema para Windows Vista y Windows 7. De hecho,

el administrador de ventanas de escritorio (DWM) utiliza milcore.dll para

mostrar el escritorio.

WindowsCodecs.dll. Es una API de bajo nivel que proporciona soporte de

imágenes (por ejemplo, procesamiento, visualización y escalamiento de

mapas de bits y archivos JPEG).

Direct3D. Es la API de bajo nivel mediante la cual todos los gráficos de una

aplicación WPF se procesan.

User32. Se utiliza para determinar qué programa obtiene los recursos. Como

resultado, aún participa en WPF, pero no participa en la prestación de

controles comunes.

El hecho más importante que se debe tomar en cuenta es que Direct3D procesa todo el

dibujado en WPF. No importa que se tenga una tarjeta de video modesta o una mucho

más poderoso, si está utilizando controles básicos o dibujando contenido más complejo o

si está ejecutando la aplicación en Windows XP, Windows Vista o Windows 7. Incluso

formas bidimensionales y texto ordinario se transforman en triángulos y pasan a través de

la canalización de 3D. No hay ningún respaldo a GDI + o User32.

Page 61: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

61

3 METODOLOGÍA

3.1 SOFTWARE DE CONTROL DE INTENSIDAD DE LUZ

3.1.1 Introducción

La iluminación controlada automáticamente es cada vez más común en nuestro medio

gracias a la popularidad de la domótica. Los llamados “edificios inteligentes” no son algo

nuevo en el Ecuador. En la actualidad, existen en nuestro país universidades y empresas

dedicadas de manera específica al desarrollo de este campo, que incluye además del

manejo de luces otros servicios como: seguridad, climatización, cámaras, control de

acceso, entretenimiento, riego, entre otros.

Pero la domótica y sus aplicaciones en la vida del hombre van más allá de ser una simple

moda, se constituyen en una nueva forma de vida dedicada al confort y a la seguridad de

sus usuarios.

Al contar nuestra Universidad con una Escuela de Sistemas y Computación, el desarrollo

de proyectos en este campo es esencial y oportuno, ya que existen edificaciones en el

campus universitario que necesitan de este tipo de aplicaciones, como es el caso

específico del Aula Magna, la que cuenta con una iluminación manejada manualmente a

través de breakers y que no posee ningún tipo de regulación. Ante estos hechos, se

propone la Elaboración de un Software para el Control de Intensidad de Luz prototipo

Aula Magna.

3.1.2 Levantamiento de requerimientos

Esta actividad la realizamos en noviembre del 2009, dando como resultado las siguientes

actividades:

La revisión del funcionamiento de la iluminación, la realizamos con el encargado

del Aula Magna por medio de una entrevista y observación directa.

Solicitamos el plano eléctrico del Aula Magna de la PUCESD a la Sra. Fany Peña

encargada del área de Recursos Físicos.

Page 62: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

62

A esto se sumó la información que nos prestó el Ing. Mauricio Masache,

Representante de Thunder Electrical en Ecuador, quien nos explicó el tipo de

equipos que utilizan para controlar la iluminación y los programas para

comunicarse con ellos.

Con la información del manejo de la iluminación y el plano eléctrico del Aula Magna de la

PUCESD se pudo conocer lo siguiente de forma general.

Zona Consumo* Control

Actual

Control de

Intensidad Requisito

Escenario

3 Subzonas

10x100w

1000w

Switch Si,

Atenuable

Control individual de las zonas

o como grupo

Público

4 Subzonas

40x40w +

5x80w

2000w

Breakers

No, Solo

Encender /

Apagar

Control individual de las zonas

o como grupo

Camerinos

4 Subzonas

4x100w

400w

Switch Si,

Atenuable

Control independiente en cada

camerino

Tabla 11: Datos de requerimientos

*Consumo basado en el número de luminarias por el consumo en watts

3.1.2.1 Limitaciones del sistema

Debido a la infraestructura de la instalación eléctrica existente, no se pude hacer

un control individual de cada luminaria a excepción de los camerinos.

Se optó por implementar el control en las zonas de mayor uso del aula magna de

la PUCESD tales como se detalla Tabla 11.

Page 63: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

63

3.1.3 Casos de Uso

3.1.3.1 Diagrama General del Sistema

Administrador

Gestionar Red

Z-Wave

Control Luces Servidor

Iniciar Sistema

Gestionar datos de

conexión

«uses»

Zonas y Nodos

Iniciar Red Z-Wave

Iniciar Conexiones

de Red

«extends»

«extends»

Enviar/Recibir

Datos

ControlLuces Cliente

Ilustración 20: Diagrama General – Servidor

Usuario

Interactuar Mapa

de Zonas

Control Luces Cliente

Iniciar Sistema

Gestionar Datos de

Conexión

«uses»

Datos del Servidor

Iniciar Conexión

de Red

ControlLuces Servidor

Enviar/Recibir

Datos

«extends»

Ilustración 21: Diagrama General – Cliente

Page 64: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

64

3.1.3.2 Servidor

3.1.3.2.1 Gestionar Red Z-Wave

Administrador

Gestionar Red

Z-Wave

Ilustración 22: CU Gestionar Red Z-Wave

GESTIONAR RED Z-WAVE

Descripción El administrador desea agregar, quitar nodos o borrar la configuración del

controlador USB.

Precondición El controlador USB debe estar conectado al computador y funcionando

correctamente.

Flujo: Agregar/Quitar un nodo

Secuencia

Normal

Paso Acción

1 Conectarse al controlador USB.

2 Seleccione la opción deseada agregar/quitar Nodo.

3 El sistema muestra el mensaje para entrar en modo de

detección.

4 Confirmar el mensaje.

Page 65: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

65

5 Ahora el administrador debe pulsar un botón en el dispositivo

para que el sistema lo detecte.

6 El sistema detecta el dispositivo para agregar/quitar según sea el

caso y muestra la información correspondiente.

7 Salir del modo detección.

Postcondición Se actualiza la lista de nodos.

Excepciones

Paso Acción

1 El contralor USB no responde, verificar que este bien conectado

al computador.

6 Al cabo de un tiempo especificado no se detecta algún

dispositivo, se muestra el mensaje de error.

Flujo: Borrar Configuración USB

Secuencia

Normal

Paso Acción

1 Conectarse al controlador USB.

2 Seleccione la opción Borrar USB.

3 El sistema muestra un cuadro de dialogo solicitando contraseña

para continuar.

4 Escriba la contraseña y pulse el botón aceptar.

Page 66: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

66

Postcondición Se actualiza la lista de nodos

Excepciones

Paso Acción

1 El contralor USB no responde, verificar que este bien conectado

al computador

3.1.3.2.2 Zonas y Nodos

Gestionar Red

Z-Wave

«uses»

Zonas y Nodos

Ilustración 23: CU Zonas y Nodos

ZONAS Y NODOS

Descripción El administrador desea asignar/cambiar los nodos a su respectiva zona.

Precondición

El controlador USB debe estar conectado al computador y funcionando

correctamente.

Conocer donde se instalaron los nodos.

Flujo: Mapa Zonas y Nodos

Secuencia

Normal

Paso Acción

1 Conectarse al controlador USB.

Page 67: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

67

2 Seleccione la opción Zonas y Nodos.

3 El sistema carga el archivo de configuración.

4 En el mapa seleccionamos una zona para asignarle un nodo.

5 El sistema despliega una lista de los nodos disponibles.

6 Escogemos el nodo correspondiente a esa zona.

7 Repetir paso 4 - 6 hasta a asignar todas las zonas con sus

nodos.

Postcondición Se guarda automáticamente cada cambio realizado en el archivo de

configuración.

Excepciones

Paso Acción

1 El contralor USB no responde, verificar que este bien conectado

al computador.

4 Pulsar la tecla ESC para cerrar la lista de nodos disponibles.

3.1.3.2.3 Gestionar Datos de Conexión

Administrador

Gestionar datos de

conexión

Ilustración 24: CU Gestionar Datos de Conexión

Page 68: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

68

GESTIONAR DATOS DE CONEXIÓN

Descripción El administrador desea cambiar parámetros del sistema.

Precondición Conocimiento sobre redes de computación.

Flujo: Conexión de Red

Secuencia

Normal Paso Acción

1 El sistema cargará las opciones del archivo de configuración.

2 Para cambiar la dirección IP: Seleccione de la lista que se muestra.

3 Para cambiar el número de puerto: Ingrese el número de puerto

deseado.

4 Pulse el botón de guardar.

Postcondición Guardar las opciones en el archivo de configuración.

Excepciones Paso Acción

3 Solo se pueden ingresar valores numéricos, caso contrario se

bloqueará hasta corregir el error.

Flujo: Contraseña

Secuencia Paso Acción

Page 69: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

69

Normal

1 El sistema cargará las opciones del archivo de configuración.

2 Para cambiar la contraseña debe ingresarla 2 veces y conocer la

contraseña anterior.

3 El sistema comprobará los datos ingresados mostrando el mensaje

correspondiente.

4 Pulse el botón de guardar.

Postcondición Guardar las opciones en el archivo de configuración

Excepciones No.

Notas La contraseña se establecerá al momento de ejecutar la aplicación por

primera vez.

3.1.3.2.4 Iniciar el Sistema

Administrador

Iniciar Sistema

Iniciar Red Z-Wave

Iniciar Conexiones

de Red

«extends»

«extends»

Ilustración 25: CU Iniciar el Sistema

INICIAR EL SISTEMA

Descripción Ponemos en marcha el sistema

Page 70: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

70

Precondición El sistema debe iniciar el módulo de control de la Red Z-Wave así como

también el módulo de conexión de red sin ningún problema.

Flujo: Iniciar

Secuencia

Normal Paso Acción

1 El sistema cargará las opciones del archivo de configuración.

2 Pulsamos el botón Iniciar.

3 El sistema cambia la interfaz de usuario mostrando solo el registro de

los eventos.

4 El sistema inicia el módulo de control de la Red Z-Wave.

5 El sistema inicia el módulo de conexión de red.

6 El sistema muestra el mensaje “En espera de conexiones” lo cual

indica que está operativo.

Postcondición El servidor empieza a escuchar peticiones de los clientes.

Excepciones Paso Acción

4 Ver excepciones para el caso de uso Iniciar Red Z-Wave

5 Ver excepciones para el caso de uso Iniciar Conexiones de Red.

Page 71: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

71

3.1.3.2.5 Iniciar Red Z-Wave

Iniciar Sistema Iniciar Red Z-Wave

«extends»

Ilustración 26: CU Iniciar Red Z-Wave

INICIAR RED Z-WAVE

Descripción El sistema llama a este modulo

Precondición

Necesitamos conocer si la llamada es:

Para gestionar la red z-wave

O para ejecutar peticiones de los clientes

Flujo: Iniciar

Secuencia

Normal Paso Acción

1 Si la llamada es para gestionar la red z-wave, ir paso 2; caso

contrario ir paso 6

2 Conectar al controlador USB

3 Muestra la tabla de valores de nodos.

4 Esperar por acción de usuario.

5 Desconectar el controlador.

Page 72: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

72

6 Conectar al controlador USB

Postcondición El modulo reporta el estado de operación.

Excepciones Paso Acción

2,6

El contralor USB no responde, verificar que este bien conectado al

computador

No es posible tener 2 aplicaciones servidor corriendo al mismo

tiempo

3.1.3.2.6 Iniciar Conexiones de Red.

Iniciar Sistema Iniciar Conexiones

de Red

«extends»

Ilustración 27: CU Iniciar Conexiones de Red

INICIAR CONEXIÓN DE RED

Descripción El sistema llama a este modulo

Precondición Ninguna.

Flujo: Iniciar

Secuencia

Normal Paso Acción

1 El sistema cargará las opciones del archivo de configuración.

Page 73: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

73

2 Creamos la conexión

3 Empezamos a escuchar las peticiones de los clientes.

Postcondición El modulo reporta el estado de operación.

Excepciones Paso Acción

2

No se pudo crear la conexión

El número de puerto está siendo usado por otra aplicación.

Problemas de conectividad

3.1.3.2.7 Enviar/Recibir Datos

Iniciar SistemaEnviar/Recibir

Datos

ControlLuces Cliente

Ilustración 28: CU Enviar/Recibir Datos

ENVIAR/RECIBIR DATOS

Descripción El sistema llama a este módulo cada vez que un cliente envié una petición

Precondición Iniciar Sistema.

Flujo: Recibir Datos

Page 74: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

74

Secuencia

Normal Paso Acción

1 Recibir el mensaje en forma cadena de bytes.

2 Decodificar el mensaje

3 Ejecutar el comando (petición del cliente).

Postcondición Enviar el comando a la red z-wave

Excepciones No.

Flujo: Enviar Datos

Secuencia

Normal

Paso Acción

1 Generar el mensaje.

2 Codificar el mensaje a cadena de bytes

3 Enviar mensaje.

Postcondición Enviar el mensaje de respuesta al cliente que corresponda.

Page 75: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

75

3.1.3.3 Cliente

3.1.3.3.1 Interactuar Mapa de Zonas

Usuario

Interactuar Mapa

de Zonas

Ilustración 29: CU Interactuar Mapa de Zonas

INTERACTUAR MAPA DE ZONAS

Descripción El usuario desea cambiar el estado de una zona.

Precondición

Iniciar Sistema.

Datos del Servidor.

Flujo: Apagar/Encender/Atenuar Zonas

Secuencia

Normal Paso Acción

1 El sistema mostrará el estado de las zonas de acuerdo a la

información recibida del servidor.

2 El usuario selecciona una zona para apagar/encender/atenuar.

3

El sistema mostrará el control lumínico

Barra de desplazamiento para atenuar

Botón para apagar/encender.

Page 76: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

76

4 El usuario realiza la acción deseada apagar/encender/atenuar

Postcondición Generar mensaje para enviar al servidor.

Excepciones No.

3.1.3.3.2 Datos del Servidor

Interactuar Mapa

de Zonas

«uses»

Datos del Servidor

Ilustración 30: CU Datos del Servidor

DATOS DEL SERVIDOR

Descripción El sistema recibe la información de los dispositivos.

Precondición Iniciar Sistema.

Flujo: Datos del Servidor

Secuencia

Normal Paso Acción

1 El sistema actualiza el estado de las zonas.

2 El sistema muestra el mensaje sobre la actualización.

Page 77: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

77

Postcondición Se cambia el color de la zona automáticamente.

Excepciones No.

3.1.3.3.3 Gestionar Datos de Conexión

Usuario

Gestionar Datos de

Conexión

Ilustración 31: CU Gestionar Datos de Conexión

GESTIONAR DATOS DE CONEXIÓN

Descripción El usuario desea cambiar los parámetros de conexión del sistema.

Precondición Conocimiento sobre redes de computación.

Flujo: Conexión de Red

Secuencia

Normal Paso Acción

1 El sistema cargará las opciones del archivo de configuración.

2 Para cambiar la dirección IP: Escriba la dirección IP que usa el

servidor

Page 78: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

78

3 Para cambiar el número de puerto: Ingrese el número de puerto

deseado.

4 Pulse el botón Conectar.

Postcondición Guardar las opciones en el archivo de configuración.

Excepciones Paso Acción

2 Se aceptará el formato de dirección IPv4 el cual es xxx.xxx.xxx.xxx

3 Solo se pueden ingresar valores numéricos, caso contrario se

mostrara el mensaje de error

3.1.3.3.4 Iniciar Sistema

Usuario

Iniciar Sistema Iniciar Conexión

de Red

«extends»

Ilustración 32: CU Iniciar Sistema

INICIAR EL SISTEMA

Descripción Ponemos en marcha el sistema

Precondición El sistema debe iniciar el módulo de conexión de red sin ningún problema.

Page 79: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

79

Flujo: Iniciar

Secuencia

Normal Paso Acción

1 El sistema cargará las opciones del archivo de configuración.

2 Pulsamos el botón Conectar.

3 El sistema inicia el módulo de conexión de red.

4 El sistema activa el mapa de zonas de acuerdo a la información

recibida.

5 El sistema activa la barra de herramientas.

Postcondición El sistema está listo para su uso.

Excepciones Paso Acción

3 Ver excepciones para el caso de uso Iniciar Conexión de Red

3.1.3.3.5 Iniciar Conexión de Red

Iniciar Sistema Iniciar Conexión

de Red

«extends»

Ilustración 33: CU Iniciar Conexión de Red

Page 80: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

80

INICIAR CONEXIÓN DE RED

Descripción El sistema llama a este modulo

Precondición Ninguna.

Flujo: Iniciar

Secuencia

Normal Paso Acción

1 El sistema cargará las opciones del archivo de configuración.

2 Creamos la conexión.

3 Enviamos petición inicial de las zonas.

Postcondición El modulo reporta el estado de operación.

Excepciones Paso Acción

2

El número de puerto está siendo usado por otra aplicación.

Problemas de conectividad

El servidor no está activo

Page 81: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

81

3.1.3.3.6 Enviar/Recibir Datos

Iniciar Sistema

ControlLuces Servidor

Enviar/Recibir

Datos

Ilustración 34: CU Enviar/Recibir Datos

ENVIAR/RECIBIR DATOS

Descripción El sistema llama a este módulo cada vez que se genere una petición al

servidor.

Precondición Iniciar Sistema.

Mapa de Zonas.

Flujo: Recibir Datos

Secuencia

Normal Paso Acción

1 Recibir el mensaje en forma cadena de bytes.

2 Decodificar el mensaje.

3 Caso de Uso: Datos del Servidor.

Postcondición Actualizar Zona

Excepciones No.

Page 82: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

82

Flujo: Enviar Datos

Secuencia

Normal

Paso Acción

1 Caso de Uso: Interactuar Mapa de Zona

2 Codificar el mensaje a cadena de bytes

3 Enviar mensaje.

Postcondición Enviar el mensaje al servidor.

Excepciones No.

3.1.4 Definición de la arquitectura del software

En el modelo cliente-servidor, el dispositivo que solicita información se denomina cliente y

el dispositivo que responde a la solicitud se denomina servidor. El cliente comienza el

intercambio solicitando los datos al servidor, este a su vez responde enviando una o más

solicitudes de datos al cliente.

Un ejemplo de una red cliente/servidor es un entorno corporativo donde los empleados

utilizan un servidor de e-mail de la empresa para enviar, recibir y almacenar e-mails. El

cliente de correo electrónico en la computadora de un empleado emite una solicitud al

servidor de e-mail para un mensaje no leído. El servidor responde enviando el e-mail

solicitado al cliente.

El flujo de datos puede ser el mismo en ambas direcciones o inclusive ser mayor en la

dirección que va del cliente al servidor. Por ejemplo, un cliente puede transferir un archivo

al servidor con fines de almacenamiento.

Page 83: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

83

3.1.5 Diagrama de despliegue

El Diagrama de Despliegue es un tipo de diagrama del Lenguaje Unificado de

Modelado que se utiliza para modelar el hardware utilizado en las implementaciones de

sistemas y las relaciones entre sus componentes.

Swtich/Dimmer

Vizia RF

Servidor

Cliente

ControlZWave.dll

Interfaz de Usuario

Modulo de Red

Usuario

-TCP/IP

-TCP/IP

Modulo de Red

Registro Eventos

-Red Z-Wave

Ilustración 35: Diagrama de Despliegue

3.1.6 Diagrama de procesos

3.1.6.1 Servidor

A continuación se listaran los procesos que se realizan cuando se produzca uno de los

posibles eventos.

Page 84: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

84

Al iniciar el servidor.

1.E

sta

ble

ce

r

Co

ne

xió

n d

e R

ed

Inic

iar

2.

Co

ne

cta

rse

a la

Re

d

Z-W

ave

Va

lor

No

do

s

3.

ES

PE

RA

R

CO

NE

XIO

NE

S

Ilustración 36: Diagrama Al iniciar el servidor

Page 85: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

85

Cuando el servidor recibe una conexión.

1.

Ve

rifica

r L

ista

Co

ne

xio

ne

s

CL

IEN

TE

Inse

rta

r C

on

exió

n

Ag

reg

ar

Co

ne

xió

n

2. R

ecib

ir M

en

sa

je

3. D

eco

dific

ar

Me

nsa

je4.

Ge

ne

rar

Lis

ta d

e N

od

os

5. E

nvia

r

Lis

ta d

e N

od

os

Me

nsa

je

Ilustración 37: Diagrama Al recibir una conexión

Page 86: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

86

Al recibir un mensaje de un cliente conectado.

1.

Re

cib

ir M

en

sa

je2

. D

eco

dific

ar

Me

nsa

je

3.

Eje

cu

tar

Co

ma

nd

o

CL

IEN

TE

Me

nsa

jeM

en

sa

je

Co

ma

nd

o

Co

ma

nd

o

M

en

sa

je

4.

Ge

ne

rar

y E

nvia

r M

en

sa

je

Ilustración 38: Diagrama al recibir un mensaje de un cliente

Page 87: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

87

Al administrar la red Z-Wave.

1.

Co

ne

cta

r a

la

Re

d Z

-

Wa

ve

VA

LO

R N

OD

OS

2.4

Bo

rra

r

US

B

2.1

Ag

reg

ar

No

do

s

2.2

Qu

ita

r

No

do

s

Zo

na

s y

No

do

s

Re

d Z

-Wa

ve

2. A

CC

ION

D

EL

US

UA

RIO

Ilustración 39: Diagrama Administrar red Z-Wave

Page 88: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

88

3.1.6.2 Cliente

A continuación se listaran los procesos que se realizan cuando se produzca una de los

posibles eventos.

Al momento de conectarse al servidor.

Ilustración 40: Diagrama de conexión al servidor

Page 89: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

89

Envio de mensajes al servidor

Ilustración 41: Envió de mensajes al servidor en ejecución

Page 90: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

90

3.2 DISEÑO DEL SOFTWARE

3.2.1 Diseño de las interfaces

Con el uso de la plataforma .Net se accede a los controles comunes de una aplicación

típica de Windows podemos crear ventanas, botones, menús, barras de herramientas y

demás elementos de pantalla.

3.2.1.1 Servidor

Este módulo se desarrolló en C#, debido a sus potentes características como sencillez y

programación orientada a objetos. Como hemos seleccionado la tecnología Z-Wave para

la implementación del proyecto de control de intensidad de luz la cual nos proporciona el

acceso al controlador principal (adaptador USB) mediante un SDK desarrollado en C# por

la compañía ControlThink.

La forma en que se dividen las interfaces dentro del servidor es la siguiente:

Ilustración 42: Navegación de interfaces

PANTALLA INICIAL

CONEXIONES RED Z-WAVE OPCIONES

ZONAS Y NODOS

Page 91: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

91

3.2.1.1.1 Pantalla inicial

Ilustración 43: Pantalla inicial

Esta pantalla se nos presenta al ejecutar la aplicación, nos muestra las opciones como

para poder comenzar a utilizar la aplicación.

A continuación se detalla cada una de las opciones habilitadas dentro de esta pantalla.

Conexiones: Cuando el servidor este en ejecución se mostrara todos los eventos que

genere la aplicación.

Red Z-Wave: Administración de la red para el control de luces.

Opciones: Datos necesario para el funcionamiento del server.

Iniciar: Ponemos en marcha el servidor, conectándonos a la red Z-Wave y habilitando las

conexiones de red.

Salir: Cierra la aplicación.

Page 92: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

92

3.2.1.1.2 Conexiones

Ilustración 44: Pantalla de conexiones

Esta pantalla nos muestra los eventos generados por las acciones que ejecuten los

clientes como conexiones, desconexiones, encendido, apagado y regulación de las luces.

Las opciones habilitadas en esta pantalla son las siguientes:

Eventos: Se registran los eventos generados mientras el servidor se está ejecutando.

Detener: Detiene el servidor.

Salir: Cierra la aplicación.

Page 93: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

93

3.2.1.1.3 Red Z-Wave

Ilustración 45: Pantalla Red Z-Wave

En esta pantalla se nos presentan las opciones para administrar la red Z-Wave.

Conectar: Establece la conexión con la red Z-Wave.

Borrar USB: Borra toda la configuración de los nodos en el controlador.

Agregar Dispositivo: Agrega un nuevo nodo

Quitar Dispositivo: Quita un nodo

Actualizar: Actualiza el estado de los nodos.

Zonas y Nodos: Al ingresar a esta opción se nos mostrará la siguiente pantalla.

Page 94: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

94

Ilustración 46: Zonas y nodos

Esta pantalla nos sirve para asignar los nodos a sus respectivas zonas.

Mapa: En el mapa se muestra los valores actuales de las zonas y sus nodos.

Limpiar: Establece todas las zonas a sus valores predefinidos, es decir ninguno.

Cerrar: Cierra la ventana

Page 95: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

95

3.2.1.1.4 Opciones

Ilustración 47: Pantalla de Opciones

Nos muestra las opciones para configurar varios parámetros del servidor.

Dirección IP: Nos permite seleccionar la dirección con la que trabajará el servidor.

Puerto: Nos permite ingresar el número de puerto al cual el servidor escuchara las

peticiones.

Actualizar clientes: Nos permite establecer el tiempo en el cual se mandara

actualizaciones de la red Z-Wave a los clientes conectados al servidor.

Registro de eventos: Nos permite guardar los eventos generados en la pantalla

conexiones guardarlos en un archivo de texto.

Contraseña: Permite establecer una contraseña para poder proteger las configuraciones

del servidor.

Page 96: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

96

Restaurar: Establece las opciones a sus valores predefinidos.

Guardar: Guarda los cambios realizados, siempre se trabajará con los valores

guardados.

3.2.1.2 Cliente

Está interfaz fue diseñada y desarrollada con Microsoft Blends ya que nos permite crear

interfaces enriquecidas para el usuario con la potencia de programación de C#.

Consta de una sola pantalla.

Ilustración 48: Pantalla principal cliente

Page 97: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

97

1 2 3 4 5 6 7

La barra de herramientas nos ofrece las siguientes opciones:

Ilustración 49: Barra de herramientas cliente

1 - Conectarse al servidor: Establece la conexión con el servidor, una vez

conectado muestra la siguiente imagen.

Ilustración 50: Cliente conectado

Dependiendo del valor que cada zona, se le asigna su color:

Ilustración 51: Estados de las zonas

Blanco: No disponible (el dispositivo puede estar ocupado o mal funcionamiento)

Gris: Desactivado (no asignado en el servidor)

Transparente: Apagada

Verde: Encendida (cualquier variación)

2 - Desconectarse del servidor: Se desconecta del servidor.

3 - Apaga todas las luces: Apaga todas las luces (incandescentes, fluorescentes).

4 - Enciende todas las luce: Enciende todas las luces (incandescentes, fluorescentes).

5 – Público: Enciende/Apaga las luces del público.

6 – Escenario: Enciende/Apaga las luces del escenario.

5 - Muestra el Manual de Usuario: Presenta el manual de ayuda.

Page 98: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

98

En la parte izquierda tenemos los valores de los dispositivos asignados a las zonas y la

imagen correspondiente del tipo de dispositivo

Ilustración 52: Información de zonas

Estos valores son los necesarios para establecer la conexión al servidor.

Ilustración 53: Opciones cliente

3.3 DESARROLLO DEL SISTEMA

La etapa de codificación se la realizó entre inicios de febrero y finales de agosto, durante

esta etapa se recogió la información obtenida en la adquisición de requerimientos y se

utilizó la lógica para desarrollar un software que cumpla con las necesidades planteadas

por los futuros usuarios.

Para la programación se decidió primero realizar el modulo del servidor y luego del

cliente, dando como resultado un código fuente por cada módulo. En la etapa de diseño

de interfaces se explicó para que sirven las pantallas con sus componentes, ahora

explicaremos como se desarrollaron cada uno de ellos.

Page 99: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

99

4 DISCUSIÓN Y RESULTADOS

4.1 MECÁNICA OPERATIVA

4.1.1 Entrevistas

La forma en que recopilamos información para desarrollar el software de regulación de la

iluminación fue por medio de entrevistas:

Se realizaron varias entrevistas al encargado del Aula Magna de la PUCESD y 2

inspecciones, las que arrojaron como resultado lo siguiente18:

Que las luminarias se dividen en luces fluorescentes e incandescentes y están

divididas en 7 grupos controladas por un breaker cada una.

Que la ubicación más adecuada para los equipos (switchs, dimmers) y el servidor

es junto a los breakers.

Para obtener información más específica sobre el Aula Magna de la PUCESD solicitamos

el plano eléctrico mediante una solicitud a Recursos Físicos. El plano nos mostró los

circuitos eléctricos que existen en el área de trabajo y ratificó los resultados obtenidos en

nuestras visitas.19

Con los planos eléctricos procedimos a contactarnos con el Ing. Mauricio Masache,

representante de Thunder Electrical en Ecuador, a quien entrevistamos para obtener

información técnica de cómo controlar la iluminación del Aula Magna de la PUCESD, el

cual nos recomendó usar el protocolo UPB y los dispositivos para realizar este control20.

4.2 RESULTADOS

Al finalizar el desarrollo del proyecto obtenemos como resultados la instalación de los

dimmers y switchs que controlan la iluminación y un software que facilitará al usuario el

manejo de los dispositivos.

18

Se adjunta entrevista hecha al encargado del Aula Magna de la PUCESD 19

Se anexa plano eléctrico del Aula Magna de la PUCESD. 20

Se anexa entrevista realizada al Ing. Mauricio Masache.

Page 100: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

100

4.2.1 Dispositivos

Las dimensiones de los dimmers y de los switch instalados en el Aula Magna de la

PUCESD son las siguientes:

Ilustración 54: Dimensiones Dimmer y Switch

Fuente: Manual de Instalación del Dispositivo

Los Dimmers y los switchs se conectan inalámbricamente a un adaptador USB

(ThinkStick Z-Wave® USB Adapter) en cual es controlado por el software de control de

intensidad de luces.

Ilustración 55: Adaptador USB

Fuente: Foto tomada del Dispositivo

Page 101: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

101

4.3.1.2 Instalación realizada

En el caso de las luces del escenario los switch y dimmers fueron instalados de la

siguiente forma.

Primero se retiraron los dispositivos normales y se reemplazan por los switchs y dimmers

Vizia RF, la conexión de estos dispositivos como se puede ver en la gráfica consiste en

conectar la fase y la carga a sus respectivos terminales.

Ilustración 56: Conexión de dimmer/switch

Fuente: Manual de instalación del dispositivo

Por último se coloca en la pared y se ajustan los tornillos.

Ilustración 57: Instalación de dimmer/switch

Fuente: Manual de instalación del dispositivo

Page 102: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

102

El funcionamiento del equipo instalado es el siguiente:

Ilustración 58: Diagrama de funcionamiento dimmer/switch

Fuente: Manual de instalación del dispositivo

A continuación se muestra imágenes de los dispositivos instalados para controlar las

luminarias del escenario.

Ilustración 59 Control luces escenario

Fuente: Autores del proyecto

Page 103: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

103

La instalación para el control de luces del público es diferente de las anteriores debido a

que las luminarias eran controladas desde los breakers, el procedimiento para instalar

consistió en conectar directamente del breaker los cables fase y neutro a sus respectivos

terminales en los dimmers/switchs. Este procedimiento fue realizado por un electricista

experto.

A continuación se muestra imágenes de los dispositivos instalados para controlar las

luminarias del público.

Ilustración 60: Control luces del público

Fuente: Autores del proyecto

El total de luminarias es de 9 focos en el escenario y de 16 lámparas fluorescentes en el

área del público.

4.2.2 Software de control de intensidad de las luces

El software se divide en dos módulos:

4.2.2.1 Servidor

Este módulo se encarga de administrar los nodos (dimmers, switchs) por medio del

adaptador USB y de recibir conexiones de clientes.

Page 104: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

104

Ilustración 61: Pantalla principal servidor

Fuente: Manual del usuario

4.2.2.2 Cliente

Este módulo es el que será visto por el usuario y en el cual se puede generar eventos

como encendido, apagado y regulación de luces por medio de mensajes enviados al

servidor.

Para obtener información detallada del uso del software sírvase revisar los manuales

anexos.

Page 105: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

105

Ilustración 62: Pantalla principal cliente

Fuente: Manual del usuario

4.3 DISCUSIÓN DE RESULTADOS

El propósito de este proyecto fue la creación de un software que permita controlar la

intensidad de la iluminación del Aula Magna de la PUCESD, para lo cual no solo se

desarrolló el software sino que también se implementaron equipos que permitan el control

de las luminarias.

El trabajo en conjunto del software con los dispositivos permite controlar el encendido,

apagado y regulación en las luces incandescentes (escenario y cuartos adyacente)

mientras que solo permite en encendido y apagado de las luces fluorescentes (luces

audiencia) debido a que no cuentan con balastros para su regulación.

Page 106: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

106

En el caso de los dimmers

Durante el proceso de pruebas tuvimos varios inconvenientes tanto en la parte del

hardware como del software, a continuación un detalle de los mismos con sus respectivas

soluciones.

Software:

Implementamos nuevos requerimientos de parte de los operadores, encendido y

apagado por zonas, cambios estéticos.

Hardware:

Uno de los dimmers comenzó a recalentar: El problema de recalentamiento se

debía a que la carga de las luminarias era mayor a la del equipo instalado para lo

cual se remplazó el dimmer de 600W por uno de 1000W.

Uno de los switchs comenzó a recalentar: El problema de recalentamiento se

debía a que la carga de las luminarias era mayor a la del equipo instalado para lo

cual se remplazó el switch de 5Amp por uno de 15Amp.

Los dispositivos utilizados para la implementación de este prototipo tienen un valor

elevado en comparación a los tradicionales, la recuperación de esta inversión no se la

puede lograr en su totalidad ya que sólo los dimmers ahorran energía.

El costo de los equipos es el siguiente:

Cant. Descripción Valor

Unitario Valor total

4 Leviton VRS15-1LZ - vizia rf + 15A Switch 87,02 348,08

3 Leviton VRS05-1LZ - vizia rf + 5A Switch 78,32 234,96

4 Leviton VRI06-1LZ - vizia rf + 600W Incandescent Dimmer 78,32 313,28

1 ControlThink CTZUS-1US - ThinkStick Only (US Frequency) 36,97 36,97

1 Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer 92,27 97,27

Valor Total: 1030,56

Tabla 12: Costos de equipos

Page 107: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

107

La inversión típica en un dimmer es de $78.32 (600w) y $92.27 (1000w). Esta inversión

es alta en comparación a los controles tradicionales. Sin embargo esta inversión se

puede recuperar sustancialmente en ahorro de energía y el cambio de bombillos.

Dimmer 600w

1. Promedio de carga del dimmer = 600w21

2. Promedio de ahorro de energía usando dimmers = 20% 22

3. Promedio de uso diario del dimmer = 8 horas/diarias

4. Promedio de número de días laborales en el año = (50 semanas x 5 días) =

250 días

5. Promedio de ahorro anual de electricidad = decremento de carga (600w x

20%) x uso al año (8 horas/días x 250 días) = 240 kWh/año

6. Promedio costo comercial de electricidad = $0.0817/kWh 23

7. Promedio de ahorro anual = 240 kWh/año x $0.0817/kWh = $19.6/año

El ahorro total al año de un solo dimmer en promedio es de $19.6/año.

Dimmer 1000w

1. Promedio de carga del dimmer = 1000w24

2. Promedio de ahorro de energía usando dimmers = 20% 25

3. Promedio de uso diario del dimmer = 8 horas/diarias

21

Capacidad de los equipos instalados. 22

California Energy Study

http://www.energy.ca.gov/efficiency/lighting/VOLUME01.PDF 23

Boletín Estadístico 2010 del Conelec

http://www.conelec.gob.ec/ 24

Capacidad de los equipos instalados. 25

California Energy Study

http://www.energy.ca.gov/efficiency/lighting/VOLUME01.PDF

Page 108: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

108

4. Promedio de número de días laborales en el año = (50 semanas x 5 días) =

250 días

5. Promedio de ahorro anual de electricidad = decremento de carga (1000w x

20%) x uso al año (8 horas/días x 250 días) = 400 kWh/año

6. Promedio costo comercial de electricidad = $0.0817/kWh 26

7. Promedio de ahorro anual = 240 kWh/año x $0.0817/kWh = $32.68/año

El ahorro total al año de un solo dimmer en promedio es de $32.68/año.

Estos valores nos sirven para obtener el ahorro anual:

Descripción Cantidad Ahorro unitario

Ahorro total

Leviton VRI06-1LZ - vizia rf + 600W Incandescent Dimmer

4 19,60 78,4

Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer

1 32,68 32,68

Ahorro anual:

111,08

Tabla 13: Tabla de ahorro anual

El costo – beneficio del prototipo se obtiene con la siguiente fórmula:

Dónde:

B/C = Relación Beneficio / Costo

Vi = Ingresos Esperados

Ci = Inversión total (i = 1, 2, 3...n)

i = Periodo (Vida útil de los equipos 5 años)

j = Tasa de descuento

26

Boletín Estadístico 2010 del Conelec

http://www.conelec.gob.ec/

Page 109: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

109

Este valor nos indica que por cada dólar invertido recuperamos 0,46 centavos y que

perdemos 0,54. En términos económicos el proyecto no es rentable utilizando la

tecnología Z-Wave, por otro lado el prototipo arroja resultados que no pueden ser

medidos con un análisis costo / beneficio.

En resumen los resultados obtenidos son los siguientes27:

I. Instalación de los dispositivos Z-Wave en el Aula Magna de la PUCESD

II. Control centralizado, debido a que gran parte de la iluminación del Aula Magna

puede ser controlada a través del software.

III. Manejo local o remoto de las luminarias.

27

El software y el funcionamiento de los equipos fue probado por el CITIC

Page 110: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

110

5 CONCLUSIONES

Al término del proyecto se puede concluir que:

Se escogió la tecnología Z-Wave sobre la UPB por su facilidad de instalación y

uso, además no se requiere realizar cambios en la estructura del cableado

eléctrico existente, ya que los datos son transmitidos por medio de una red

inalámbrica.

La intensidad de la luz solo podrá ser controlada en las luces incandescentes,

ya que son adaptables al sistema desarrollado.

El software diseñado es amigable con el usuario y de fácil uso, con lo cual se

ahorra tiempo en el encendido/apagado de las luminarias.

La implementación de los dispositivos Z-Wave y del software nos permite un

sistema de control de la iluminación que puede ser usado local o

remotamente.

El software fue desarrollado exclusivamente para controlar la iluminación en el

Aula Magna de la PUCESD, para beneficio de la comunidad universitaria.

Page 111: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

111

6 RECOMENDACIONES

Se recomienda que el usuario encargado del sistema, lea los manuales de uso

con el fin de conocer las todas las funciones del sistema y para dar solución a

errores o problemas de conexiones, los mismos que fueron entregados a la

Escuela de Sistemas.

El Controlador USB debe permanecer en un lugar alejado de la humedad.

Leer las especificaciones técnicas de los equipos instalados (dimmers,

switchs) y no sobrepasar la carga que soportan cada uno para evitar

problemas de mal funcionamiento.

Ubicar el servidor dentro de la red interna de la PUCESD para facilitar el uso

del software desde cualquier computador conectado a la red y restringir los

accesos al servidor solo para usuarios autorizados.

El prototipo implementado puede ampliarse con otros dispositivos que

soporten la tecnología Z-Wave como sensores de movimiento.

Se recomienda incentivar la aplicación de proyectos similares ya que el área

de la domótica es muy extensa y contiene temas muy interesantes que valen

la pena profundizar.

Page 112: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

112

7 BIBLIOGRAFÍA

LIBROS

Charte Ojeda, Francisco. Programación Visual C# .Net, Anaya Multimedia

Cisco Networking Academy. CCNA4.0 Aspectos Básicos de Networking

Jeff Ferguson, Brian Patterson, Jason Beres, Pierre Boutiquin y Meeta Gupta. La Biblia

de C#, Anaya Multimedia, 2003

Matthew MacDonald. Pro WPF in C# 2010, Apress 2010

Francisco José Molina Robles. Redes de Area Local, Ediciones RA-MA 2003

Vicente Conesa Fernández-Vítora. Guía metodológica para la evaluación del impacto

ambiental, Mundi-Prensa 2010

SOPORTE ELECTRÓNICO:

LEVITON – Lighting Controls 02/02/2010

(http://www.leviton.com)

Librería MSDN - .NET Framework 07/09/2010 (http://msdn.microsoft.com/es-es/netframework/default.aspx)

ZENSYS – “Products and Technology” 6/01/2010 (http://www.zen-sys.com/modules/Products&Techonology/)

Page 113: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

113

8 GLOSARIO

2D: La computación gráfica 2D es la generación de imágenes digitales por computadora

sobre todo de modelos bidimensionales (como modelos geométricos, texto e imágenes

digitales 2D) y por técnicas específicas para ellos. La palabra puede referirse a la rama

de las ciencias de la computación que comprende dichas técnicas, o a los propios

modelos.

3D: En computación, las tres dimensiones son el largo, el ancho y la profundidad de una

imagen. Técnicamente hablando el único mundo en 3D es el real, la computadora sólo

simula gráficos en 3D, pues, en definitiva toda imagen de computadora sólo tiene dos

dimensiones, alto y ancho.

Amperio: El amperio o ampere (símbolo A), es la unidad de intensidad de corriente

eléctrica. Forma parte de las unidades básicas en el Sistema Internacional de Unidades y

fue nombrado en honor de André-Marie Ampére. El amperio es la intensidad de una

corriente constante que manteniéndose en dos conductores paralelos, rectilíneos, de

longitud infinita, de sección circular despreciable y situados a una distancia de un metro

uno de otro en el vacío, produciría una fuerza igual a 2×10-7 newton por metro de

longitud.

Ancho de banda: En sistemas digitales, el ancho de banda digital es la cantidad de

datos que pueden ser transportados por algún medio en un determinado período de

tiempo (generalmente segundos). Por lo tanto a mayor ancho de banda, mayor

transferencia de datos por unidad de tiempo (mayor velocidad).

Api: Grupo de rutinas (conformando una interfaz) que provee un sistema operativo, una

aplicación o una biblioteca, que definen cómo invocar desde un programa un servicio que

éstos prestan. En otras palabras, una API representa un interfaz de comunicación entre

componentes software.

Automatización: Automatización (automatización; del griego antiguo auto: guiado por

uno mismo) es el uso de sistemas o elementos computarizados y electromecánicos

para controlar maquinarias y/o procesos industriales sustituyendo a operadores

humanos.

El alcance va más allá que la simple mecanización de los procesos ya que ésta

provee a operadores humanos mecanismos para asistirlos en los esfuerzos físicos

Page 114: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

114

del trabajo, la automatización reduce ampliamente la necesidad sensorial y mental del

humano. La automatización como una disciplina de la ingeniería es más amplia que

un mero sistema de control, abarca la instrumentación industrial, que incluye los

sensores y transmisores de campo, los sistemas de control y supervisión, los sistema

de transmisión y recolección de datos y las aplicaciones de software en tiempo real

para supervisar y controlar las operaciones de plantas o procesos industriales.

ASP.NET: Una página ASP (que lleva la extensión .asp) es una página HTML especial

que contiene scripts en ASP. Esta página es procesada por un servidor Microsoft Internet

Information Server (del lado servidor), y luego el resultado es mostrado al usuario en su

navegador web (del lado cliente).

Bit: El bit es la unidad mínima de información empleada en informática, en cualquier

dispositivo digital, o en la teoría de la información. Con él, podemos representar dos

valores cuales quiera, como verdadero o falso, abierto o cerrado, blanco o negro, norte o

sur, masculino o femenino, rojo o azul, etc. Basta con asignar uno de esos valores al

estado de "apagado" (0), y el otro al estado de "encendido" (1).

Bobinas: Un inductor o bobina es un componente pasivo de un circuito eléctrico que,

debido al fenómeno de la autoinducción, almacena energía en forma de campo

magnético.

Breakers (Disyuntor): Un disyuntor o interruptor automático es un aparato capaz de

interrumpir o abrir un circuito eléctrico cuando la intensidad de la corriente eléctrica que

por él circula excede de un determinado valor o, en el que se ha producido un

cortocircuito, con el objetivo de no causar daños a los equipos eléctricos. A diferencia de

los fusibles, que deben ser reemplazados tras un único uso, el disyuntor puede ser

rearmado una vez localizado y reparado el daño que causó el disparo o desactivación

automática.

Capacitor: En electricidad y electrónica, un capacitor (del latín "condensare") es un

dispositivo que almacena energía eléctrica, es un componente pasivo. Está formado por

un par de superficies conductoras en situación de influencia total (esto es, que todas las

líneas de campo eléctrico que parten de una van a parar a la otra), generalmente en

forma de tablas, esferas o láminas, separadas por un material dieléctrico (siendo este

utilizado en un condensador para disminuir el campo eléctrico, ya que actúa como

aislante) o por el vacío, que, sometidas a una diferencia de potencial (d.d.p.) adquieren

Page 115: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

115

una determinada carga eléctrica, positiva en una de las placas y negativa en la otra

(siendo nula la carga total almacenada).

Checksum: Una suma de verificación o checksum es una forma de control de

redundancia, una medida muy simple para proteger la integridad de datos, verificando

que no hayan sido corruptos. Es empleado para comunicaciones (internet, comunicación

de dispositivos, etc.) tanto como para datos almacenados (archivos comprimidos, discos

portátiles, etc.).

Ciclo: Ciclo se refiere a cualquier fenómeno periódico o cuasi periódico, en que

transcurrido un cierto tiempo el estado del sistema o algunas magnitudes del mismo

vuelven a una configuración anterior.

Circuito: Un circuito es una red eléctrica (interconexión de dos o más componentes,

tales como resistencias, inductores, capacitores, fuentes, interruptores y

semiconductores) que contiene al menos una trayectoria cerrada. Los circuitos que

contienen solo fuentes, componentes lineales (resistores, capacitores, inductores), y

elementos de distribución lineales (líneas de transmisión o cables) pueden analizarse por

métodos algebraicos para determinar su comportamiento en corriente directa o en

corriente alterna.

Código fuente: El código fuente de un programa informático (o software) es un

conjunto de líneas de texto que son las instrucciones que debe seguir la computadora

para ejecutar dicho programa. Por tanto, en el código fuente de un programa está

descrito por completo su funcionamiento.

Compilar: Proceso de traducción de un código fuente (escrito en un lenguaje de

programación de alto nivel) a lenguaje máquina (código objeto) para que pueda ser

ejecutado por la computadora.

Conexión: Punto donde se realiza un enlace entre dispositivos o sistemas. Una

conexión puede ser alambrada o inalámbrica, digital o analógica, virtual o real, etc. Por

ejemplo, el acceso a internet es un tipo de conexión.

Corriente: La corriente o intensidad eléctrica es el flujo de carga por unidad de tiempo

que recorre un material. Se debe a un movimiento de los electrones en el interior del

material. En el Sistema Internacional de Unidades se expresa en C/s (culombios sobre

segundo), unidad que se denomina amperio. Una corriente eléctrica, puesto que se trata

Page 116: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

116

de un movimiento de cargas, produce un campo magnético, lo que se aprovecha en el

electroimán.

Decodificar: Es lo contrario que codificar, esto es, convierte un código binario de

entrada (natural, BCD, etc.) de N bits de entrada y M líneas de salida (N puede ser

cualquier entero y M es un entero menor o igual a 2N), tales que cada línea de salida

será activada para una sola de las combinaciones posibles de entrada.

Delphi: Delphi es un entorno de desarrollo de software diseñado para la programación

de propósito general con énfasis en la programación visual. En Delphi se utiliza como

lenguaje de programación una versión moderna de Pascal llamada Object Pascal. Es

producido comercialmente por la empresa estadounidense CodeGear (antes lo

desarrollaba Borland), adquirida en mayo de 2008 por Embarcadero Technologies, una

empresa del grupo Thoma Cressey Bravo, en una suma que ronda los 30 millones de

dólares. En sus diferentes variantes, permite producir archivos ejecutables para Windows,

GNU/Linux y la plataforma .NET.

DirectX: DirectX es una colección de API desarrolladas para facilitar las complejas

tareas relacionadas con multimedia, especialmente programación de juegos y vídeo, en

la plataforma Microsoft Windows.

Direct3D: Es parte de DirectX (conjunto de bibliotecas para multimedia), propiedad de

Microsoft. Consiste en una API para la programación de gráficos 3D. El objetivo de esta

API es facilitar el manejo y trazado de entidades gráficas elementales, como líneas,

polígonos y texturas, en cualquier aplicación que muestre gráficos en 3D, así como

efectuar de forma transparente transformaciones geométricas sobre dichas entidades.

Electrotecnia: Es el campo de la ingeniería que se ocupa del estudio y la aplicación de

la electricidad, la electrónica y el electromagnetismo. Aplica conocimientos de ciencias

como la física y las matemáticas para generar, transportar, distribuir y utilizar la energía

eléctrica.

Energía: El término energía tiene diversas acepciones y definiciones, relacionadas con

la idea de una capacidad para obrar, transformar o poner en movimiento. En física,

«energía» se define como la capacidad para realizar un trabajo. En tecnología y

economía, «energía» se refiere a un recurso natural (incluyendo a su tecnología

asociada) para extraerla, transformarla, y luego darle un uso industrial o económico.

Page 117: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

117

Enrutamiento: Encaminamiento (o enrutamiento, ruteo) es la función de buscar un

camino entre todos los posibles en una red de paquetes cuyas topologías poseen una

gran conectividad. Dado que se trata de encontrar la mejor ruta posible, lo primero será

definir qué se entiende por mejor ruta y en consecuencia cuál es la métrica que se debe

utilizar para medirla.

Filamento: El filamento es el hilo en espiral que genera luz por acción de la temperatura

en las lámparas incandescentes. Están fabricados con metal de tungsteno, conocido

también por el nombre químico de wolframio (W), recubiertos de calcio (Ca) y magnesio

(Mg) y su función principal en los tubos de las Lámparas incandescentes es calentar

previamente el gas argón que contienen en su interior para que se puedan encender.

Fluorescente: La fluorescencia es la propiedad de una sustancia para emitir luz cuando

es expuesta a luz o radiaciones electromagnéticas. Las radiaciones absorbidas son

transformadas en luz de una longitud de onda mayor al incidente.

Frames: Se denomina frame en inglés, a un fotograma o cuadro, una imagen particular

dentro de una sucesión de imágenes que componen una animación. La continua

sucesión de estos fotogramas producen a la vista la sensación de movimiento, fenómeno

dado por las pequeñas diferencias que hay entre cada uno de ellos.

Frecuencia Mhz: Frecuencia es una magnitud que mide el número de repeticiones por

unidad de tiempo de cualquier fenómeno o suceso periódico. Para calcular la frecuencia

de un suceso. Según el SI (Sistema Internacional), la frecuencia se mide en hercios (Hz),

en honor a Heinrich Rudolf Hertz. Un hercio es aquel suceso o fenómeno repetido una

vez por segundo.

FTP: FTP (sigla en inglés de File Transfer Protocol - Protocolo de Transferencia de

Archivos) en informática, es un protocolo de red para la transferencia de archivos entre

sistemas conectados a una red TCP (Transmission Control Protocol), basado en la

arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor

para descargar archivos desde él o para enviarle archivos, independientemente del

sistema operativo utilizado en cada equipo.

Gas: Se denomina gas al estado de agregación de la materia en el que las sustancias no

tienen forma ni volumen propio, adoptando el de los recipientes que las contienen. Las

moléculas que constituyen un gas casi no son atraídas unas por otras, por lo que se

mueven en el vacío a gran velocidad y muy separadas unas de otras.

Page 118: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

118

Half-duplex: Half-duplex, en castellano: semidúplex, significa que el método o protocolo

de envío de información es bidireccional pero no simultáneo. Por ejemplo, las radios

(transmisor portátil de radio) utilizan este método de comunicación, ya que cuando se

habla por radio se tiene que mandar el mensaje y luego mediante una señal en la

conversación (comúnmente "cambio") indicarle a la otra persona que se ha finalizado.

Hardware: Hardware corresponde a todas las partes tangibles de una computadora: sus

componentes eléctricos, electrónicos, electromecánicos y mecánicos; sus cables,

gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado;

contrariamente, el soporte lógico es intangible y es llamado software. El término es propio

del idioma inglés (literalmente traducido: partes duras), su traducción al español no tiene

un significado acorde, por tal motivo se la ha adoptado tal cual es y suena; la Real

Academia Española lo define como «Conjunto de los componentes que integran la parte

material de una computadora.

HTML: (HTML, siglas de HyperText Markup Language (Lenguaje de Marcado de

Hipertexto), es el lenguaje de marcado predominante para la elaboración de páginas web.

Es usado para describir la estructura y el contenido en forma de texto, así como para

complementar el texto con objetos tales como imágenes. HTML se escribe en forma de

«etiquetas», rodeadas por corchetes angulares (<,>). HTML también puede describir,

hasta un cierto punto, la apariencia de un documento, y puede incluir un script (por

ejemplo Javascript), el cual puede afectar el comportamiento de navegadores web y otros

procesadores de HTML.

HTTP: Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta

entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador web o un

spider) se lo conoce como "user agent" (agente del usuario). A la información transmitida

se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL).

Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una

consulta a una base de datos, la traducción automática de un documento, etc.

Inalámbrico: La comunicación inalámbrica o sin cables es aquella en la que extremos

de la comunicación (emisor/receptor) no se encuentran unidos por un medio de

propagación físico, sino que se utiliza la modulación de ondas electromagnéticas a través

del espacio.

Page 119: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

119

Interfaz: En software, parte de un programa que permite el flujo de información entre un

usuario y la aplicación, o entre la aplicación y otros programas o periféricos. Esa parte de

un programa está constituida por un conjunto de comandos y métodos que permiten

estas intercomunicaciones.

Iterador: En programación, un iterador es un objeto que permite a un programador

recorrer los elementos de una colección, sin tener en cuenta su implementación

específica.

Java: Java es un lenguaje de programación orientado a objetos, desarrollado por Sun

Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su

sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas

de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de

punteros o memoria.

Kbps: Un kilobit por segundo es una unidad de medida que se usa en

telecomunicaciones e informática para calcular la velocidad de transferencia de

información a través de una red. Su abreviatura y forma más corriente es kbps. Equivale

a 1000 bits por segundo.

Lenguaje de programación: Un lenguaje de programación es un idioma artificial

diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas

como las computadoras. Pueden usarse para crear programas que controlen el

comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o

como modo de comunicación humana

Luminarias: Las lámparas, lámpadas o luminarias son aparatos que sirven de soporte y

conexión a la red eléctrica a los dispositivos generadores de luz (llamados a su vez

lámparas, bombillas o focos). Como esto no basta para que cumplan eficientemente su

función, es necesario que cumplan una serie de características ópticas, mecánicas y

eléctricas entre otras.

Luminotécnicas: La luminotecnia es la parte de la electrotecnia que se dedica

específicamente a la iluminación.

Mercurio: Elemento químico metálico, líquido a temperatura ambiente, de color plateado

brillante y más pesado que el plomo, usado en la fabricación de termómetros y

barómetros por su sensibilidad al calor.

Page 120: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

120

Multiplataforma: Multiplataforma es un término usado para referirse a los programas,

sistemas operativos, lenguajes de programación, u otra clase de software, que puedan

funcionar en diversas plataformas. Por ejemplo, una aplicación multiplataforma podría

ejecutarse en Windows en un procesador x86, en GNU/Linux en un procesador x86, y en

Mac OS X en uno x86 (solo para equipos Apple) o en un PowerPC.

Nodo: En términos generales, un nodo es un espacio real o abstracto en el que

confluyen parte de las conexiones de otros espacios reales o abstractos que comparten

sus mismas características y que a su vez también son nodos. Todos se interrelacionan

de una manera no jerárquica y conforman lo que en términos sociológicos o matemáticos

se llama red.

Onda senoidal: También llamada Sinusoidal. Se trata de una señal analógica, puesto

que existen infinitos valores entre dos puntos cualesquiera del dominio. Así pues,

podemos ver en la imagen que la onda describe una curva continua. De hecho, esta onda

es la gráfica de la función matemática seno.

Paquete: Un paquete de datos es una unidad fundamental de transporte de información

en todas las redes de computadoras modernas. El término datagrama es usado a veces

como sinónimo.

Un paquete está generalmente compuesto de tres elementos: una cabecera (header en

inglés) que contiene generalmente la información necesaria para trasladar el paquete

desde el emisor hasta el receptor, el área de datos (payload en inglés) que contiene los

datos que se desean trasladar, y la cola (trailer en inglés), que comúnmente incluye

código de detección de errores.

Potencia eléctrica: La potencia eléctrica es la relación de paso de energía de un flujo

por unidad de tiempo; es decir, la cantidad de energía entregada o absorbida por un

elemento en un tiempo determinado (p = dW / dt). La unidad en el Sistema Internacional

de Unidades es el vatio o watt, que es lo mismo.

Protocolo: En el campo de las telecomunicaciones, un protocolo de comunicaciones es

el conjunto de reglas normalizadas para la representación, señalización, autenticación y

detección de errores necesario para enviar información a través de un canal de

comunicación. Un ejemplo de un protocolo de comunicaciones simple adaptado a la

comunicación por voz es el caso de un locutor de radio hablando a sus radioyentes.

Page 121: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

121

Prototipo: Se puede referir a cualquier tipo de máquina en pruebas, o un objeto

diseñado para una demostración de cualquier tipo

Puerto: Un puerto de red es una interfaz para comunicarse con un programa a través de

una red. Un puerto suele estar numerado. La implementación del protocolo en el destino

utilizará ese número para decidir a qué programa entregará los datos recibidos. Esta

asignación de puertos permite a una máquina establecer simultáneamente diversas

conexiones con máquinas distintas, ya que todos los paquetes que se reciben tienen la

misma dirección, pero van dirigidos a puertos diferentes.

Radiación: El fenómeno de la radiación consiste en la propagación de energía en forma

de ondas electromagnéticas o partículas subatómicas a través del vacío o de un medio

material.

Red: Una red de computadoras, también llamada red de ordenadores o red informática,

es un conjunto de equipos informáticos conectados entre sí por medio de dispositivos

físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier

otro medio para el transporte de datos para compartir información y recursos. Este

término también engloba aquellos medios técnicos que permiten compartir la información.

RF (radio frecuencia): Son las siglas utilizadas para referirse a la banda del espectro

electromagnético que ocupa el rango de frecuencias de 3 MHz a 30 MHz.

Sensor: Un sensor es un dispositivo capaz de detectar magnitudes físicas o químicas,

llamadas variables de instrumentación, y transformarlas en variables eléctricas. Las

variables de instrumentación pueden ser por ejemplo: temperatura, intensidad lumínica,

distancia, aceleración, inclinación, desplazamiento, presión, fuerza, torsión, humedad,

pH, etc. Una magnitud eléctrica puede ser una resistencia eléctrica (como en una RTD),

una capacidad eléctrica (como en un sensor de humedad), una Tensión eléctrica (como

en un termopar), una corriente eléctrica (como en un fototransistor), etc.

Silverlight: Microsoft Silverlight es una estructura para aplicaciones web que agrega

nuevas funciones multimedia como la reproducción de vídeos, gráficos vectoriales,

animaciones e interactividad, en forma similar a lo que hace Adobe Flash.

Software: Se conoce como software al equipamiento lógico o soporte lógico de una

computadora digital; comprende el conjunto de los componentes lógicos necesarios que

hacen posible la realización de tareas específicas.

Page 122: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

122

Stack: Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el

modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en

entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se

aplica en multitud de ocasiones en el área de informática debido a su simplicidad y

ordenación implícita de la propia estructura.

Sustancia: En el ámbito de las ciencias químicas, sustancia o substancia es toda

porción de materia que comparte determinadas propiedades intensivas. Se emplea

también el término para referirse a la clase de materia de la que están formados los

cuerpos.

Tecnología: Tecnología es el conjunto de conocimientos técnicos, ordenados

científicamente, que permiten diseñar y crear bienes y servicios que facilitan la

adaptación al medio ambiente y satisfacer tanto las necesidades esenciales como los

deseos de las personas. Aunque hay muchas tecnologías muy diferentes entre sí, es

frecuente usar el término en singular para referirse a una de ellas o al conjunto de todas.

Tensión: La tensión eléctrica o diferencia de potencial es una magnitud física que

cuantifica la diferencia de potencial eléctrico entre dos puntos. También se puede definir

como el trabajo por unidad de carga ejercido por el campo eléctrico sobre una partícula

cargada para moverla entre dos posiciones determinadas. Se puede medir con un

voltímetro.

Toolkit: Conjunto de software diseñado para una realizar una función específica,

especialmente para resolver un problema.

Tiempo de ejecución: Se denomina tiempo de ejecución (runtime en inglés) al

intervalo de tiempo en el que un programa de computadora se ejecuta en un sistema

operativo. Este tiempo se inicia con la puesta en memoria principal del programa, por lo

que el sistema operativo comienza a ejecutar sus instrucciones. El intervalo finaliza en el

momento en que éste envía al sistema operativo la señal de terminación, sea ésta una

terminación normal, en que el programa tuvo la posibilidad de concluir sus instrucciones

satisfactoriamente, o una terminación anormal, en el que el programa produjo algún error

y el sistema debió forzar su finalización.

Topología: La Topología es el estudio de aquellas propiedades de los cuerpos

geométricos que permanecen inalteradas por transformaciones continuas.1 Es una

Page 123: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

123

disciplina matemática que estudia las propiedades de los espacios topológicos y las

funciones continuas.

Ultravioleta: Se denomina radiación ultravioleta o radiación UV a la radiación

electromagnética cuya longitud de onda está comprendida aproximadamente entre los

400 nm (4x10-7 m) y los 15 nm (1,5x10-8 m). Su nombre proviene de que su rango

empieza desde longitudes de onda más cortas de lo que los humanos identificamos como

el color violeta. Esta radiación puede ser producida por los rayos solares y produce varios

efectos en la salud.

Vacío: El vacío es la ausencia total de materia en un determinado espacio o lugar, o la

falta de contenido en el interior de un recipiente. Por extensión, se denomina también

vacío a la condición de una región donde la densidad de partículas es muy baja, como

por ejemplo el espacio interestelar; o la de una cavidad cerrada donde la presión de aire

u otros gases es menor que la atmosférica.

Watt: El vatio (en inglés: watt; símbolo: W) es la unidad de potencia del Sistema

Internacional de Unidades. Es el equivalente a 1 julio sobre segundo (1 J/s) y es una de

las unidades derivadas. Expresado en unidades utilizadas en electricidad, un vatio es la

potencia eléctrica producida por una diferencia de potencial de 1 voltio y una corriente

eléctrica de 1 amperio (1 Voltio-Amperio).

Web: En informática, la World Wide Web es un sistema de distribución de información

basado en hipertexto o hipermedios enlazados y accesibles a través de Internet. Con un

navegador web, un usuario visualiza sitios web compuestos de páginas web que pueden

contener texto, imágenes, videos u otros contenidos multimedia, y navega a través de

ellas usando hiperenlaces.

Walframio: Elemento químico metálico de color blanco o gris acerado, muy duro y

denso. Se halla en minerales como la volframita y se utiliza para fabricar lámparas

incandescentes, hornos y contadores eléctricos y en aleaciones.

XBOX: Xbox es la primera videoconsola de sobremesa producida por Microsoft, en

colaboración con Intel y Nvidia. La Xbox fue desarrollada para competir contra la

PlayStation 2 de Sony y la Gamecube de Nintendo como parte de las videoconsolas de

sexta generación. Sus principales caracteristicas del mando son sus gatillos analógicos,

que pronto serían usados en la PSS en el el dualshock y sixasis, el Wiimote de la Wii y su

sucesora, la Xbox 360.

Page 124: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

124

9 ANEXOS

1. Entrevista al encargado del aula magna.

2. Entrevista al Ing. Mauricio Masache.

3. Plano eléctrico.

4. Precio de equipos Z-Wave

5. Economía usando dimmers

6. Manual de instalación de los dispositivos

7. Manuales de Software

Page 125: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

125

ANEXO 1 Entrevista encargado Aula Magna

Page 126: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

126

ENTREVISTA ENCARGADO AULA MAGNA

Entrevista verbal para recoger información en cuando a el manejo y funcionamiento de la

iluminación en el Aula Magna.

- ¿De qué forma está distribuida la iluminación en el aula magna?

1. Luces del escenario.

2. Luces de los cuartos adyacentes al escenario.

3. Luces del centro (público).

4. Exteriores.

- ¿Cómo controla la iluminación?

1. Las luces del escenario se controla mediante un atenuador y dos

interruptores.

2. Los cuartos tienen dos interruptores, uno en el baño y otro afuera.

3. Las luces del centro se manejan por medio de 4 breakers.

4. Las luces exteriores (frente, lado izquierdo, lado derecho y parte

trasera) se manejan por medio de 4 breakers.

- ¿Qué consumo en Watts tiene cada lámpara?

Las lámparas fluorescentes tienen un consumo de 40Watts cada una y las

incandescentes 100Watts.

Page 127: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

127

ANEXO 2 Entrevista Ing. Mauricio Masache

Page 128: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

128

ENTREVISTA ING. MAURICIO MASACHE

Entrevista verbal al Ing. Mauricio Masache, representante de Thunder Electrical en

Ecuador, especialista en control de iluminación.

- ¿Qué tipo de tecnología existe para el control de la iluminación mediante

software?

Existen varios protocolos para controlar la iluminación mediante software como:

a. El protocolo más común es UPB (Universal Powerline BUS) que lo que

hace es enviar o recibir información por medio de la red eléctrica

existente.

b. Existen otros protocolos inalámbricos que utilizan radio frecuencia para

enviar o recibir datos.

- ¿Cuál es la más recomendable?

La más recomendable es el UPB por su seguridad en la transmisión ya que tiene

un 99.9% de posibilidades de que los datos que se envían por la red eléctrica

llegan a su destino, mientras que las tecnologías inalámbricas manejan alrededor

de 80%.

Page 129: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

129

ANEXO 3 Plano Eléctrico

Page 130: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

130

Plano Eléctrico del Aula Magna de la PUCESD

Page 131: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

131

Page 132: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

132

ANEXO 4 Precio de Equipos Z-Wave

Page 133: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

133

Para la adquisición de estos equipos utilizamos los servicios de encomienda para

compras en el exterior, como se detalle en la gráfica. Esto corresponde a los siguientes

equipos instalados:

Cant. Descripción Valor

Unitario Valor total

4 Leviton VRS15-1LZ - vizia rf + 15A Switch 87,02 348,08

3 Leviton VRS05-1LZ - vizia rf + 5A Switch 78,32 234,96

4 Leviton VRI06-1LZ - vizia rf + 600W Incandescent Dimmer 78,32 313,28

1 ControlThink CTZUS-1US - ThinkStick Only (US Frequency) 36,97 36,97

1 Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer 92,27 97,27

Valor Total: 1030,56

Page 134: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

134

ANEXO 5 Manuales de instalación de dispositivos

Page 135: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

135

Page 136: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

136

Page 137: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

137

ANEXO 6 Manuales de software

Page 138: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Elaborado por:

Chimbo Leonardo

Salazar Eduardo

Enero 2012

Control de luces – Cliente

Manual de Usuario

Page 139: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 1

Contenido

1. INTRODUCCIÓN ....................................................................................................................................... 2

2. INSTALANDO LA APLICACIÓN .................................................................................................................. 2

2.1. INSTALANDO .NET FRAMEWORK 3.5 SP1 (NECESARIO) ....................................................................... 2

2.2. INSTALANDO LA APLICACIÓN .............................................................................................................. 5

3. APLICACIÓN ............................................................................................................................................. 8

3.1. CONECTANDO AL SERVIDOR ...................................................................................................................... 10

3.2. DESCONECTANDO DEL SERVIDOR ................................................................................................................ 11

3.3. INTERACTUANDO CON LAS ZONAS DE ILUMINACIÓN. ...................................................................................... 11

3.3.1. Zonas individuales ..................................................................................................................... 11

3.3.2. Todas las zonas .......................................................................................................................... 12

3.3.3. Zona del Público ......................................................................................................................... 12

3.3.4. Zona del Escenario ..................................................................................................................... 12

3.4. PANEL DE INFORMACIÓN .......................................................................................................................... 13

3.4.1. Información de Zonas ................................................................................................................ 13

3.4.2. Opciones..................................................................................................................................... 13

3.5. MENSAJES DE ERROR Y POSIBLES SOLUCIONES .............................................................................................. 14

3.5.1. Se pierde la conexión al servidor ............................................................................................... 15

3.5.2. Intentar conectar al servidor ..................................................................................................... 15

3.5.3. Verificar dirección IP y puerto ................................................................................................... 16

4. REQUISITOS MÍNIMOS........................................................................................................................... 17

Page 140: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 2

1. Introducción

Este documento explica la correcta utilización de la aplicación (cliente) para conectarse al

servidor e interactuar con las zonas.

En las siguientes páginas se especificará en detalle, el funcionamiento, las características y

las formas de funcionamiento del Software para el Control de Luces - Cliente.

2. Instalando la Aplicación

Para llevar a cabo la instalación correcta del software se necesitan unos componentes

que son esenciales para la ejecución del programa.

2.1. Instalando .Net Framework 3.5 SP1 (Necesario)

a. Abrir el instalador dotnetfx35.exe ubicado en el directorio prerrequisitos del CD

de instalación.

Fig. 2.1 – 1

b. Si aparece una advertencia de seguridad: Clic “Ejecutar” para continuar.

Fig. 2.1 – 2

c. Empieza a cargar el asistente de instalación, esperamos que concluya.

Page 141: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 3

Fig. 2.1 – 3

d. Acepte el contrato de licencia de uso, después clic en “Instalar”

Fig. 2.1 – 4

e. Aunque aparezca el cuadro de descarga, este instalador no requiere conexión a

internet; sin embargo si está disponible la conexión se procederá a la descarga de

actualizaciones.

Fig. 2.1 – 5

Page 142: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 4

f. Inicia el proceso de instalación.

Fig. 2.1 – 6

g. Instalación completa, ahora podemos instalar la aplicación.

Fig. 2.1 – 7

Page 143: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 5

2.2. Instalando la Aplicación

Una vez terminada la instalación de los componentes necesarios, ejecutamos el

instalador aplicación

a. Pantalla de Bienvenida. Haga clic en “Siguiente” para continuar

Fig. 2.2 – 1

b. Elija el directorio donde se instalará la aplicación.

c. Haga clic en “Examinar” si desea escoger otro directorio de instalación.

Page 144: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 6

Fig. 2.2 – 2

d. Seleccione si desea que la aplicación la usen otros usuarios.

e. Haga clic en “Siguiente” para continuar

f. En este punto tenemos la posibilidad de cambiar algo si es necesario; caso

contrario clic en “Siguiente” para iniciar la instalación

Fig. 2.2 – 3

Page 145: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 7

g. Esperamos hasta que termine la instalación

Fig. 2.2 - 4

h. Instalación Completa

Fig. 2.2 - 5

Page 146: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 8

3. Aplicación

Para ingresar a la aplicación lo podemos hacer desde el Menú Inicio

Fig. 3 – 1

Ó desde el icono en el escritorio

Luego nos mostrará la Pantalla Principal:

Fig. 3 – 2

Page 147: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 9

1 2 3 4 5 6 7

En la parte superior esta la barra de herramientas nos ofrece las siguientes

opciones:

Fig. 3 – 3

1 - Conectarse al servidor.

2 - Desconectarse del servidor.

3 - Apaga todas las luces.

4 - Enciende todas las luces.

5 - Apaga/Enciende las luces correspondientes al público.

6 - Apaga/Enciende las luces correspondientes al escenario.

7 - Muestra el Manual de Usuario.

En la parte izquierda están el panel de información y las opciones

Fig. 3 – 4

En la parte central está el mapa interactivo de zonas.

Fig. 3 – 5

Page 148: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 10

3.1. Conectando al Servidor

a. Haga clic en para iniciar la conexión con el servidor

b. Una vez conectado al servidor, se recibe el estado de las zonas:

Fig. 3.1 – 1

c. Dependiendo del valor de la zona, se le asigna un color:

Fig. 3.1 - 2

Blanco: No disponible (el dispositivo puede estar ocupado)

Gris: Desactivado (no asignado en el servidor, desconectado)

Transparente: Apagada

Verde: Encendida (cualquier variación)

Page 149: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 11

3.2. Desconectando del Servidor

a. Haga clic en para desconectarse del servidor.

3.3. Interactuando con las zonas de iluminación.

3.3.1. Zonas individuales

Para cambiar el estado de iluminación de una zona, simplemente hacemos clic

sobre la que deseamos de la siguiente forma:

a. Ubique el cursor sobra la zona a cambiar

Fig. 3.3.1 – 1

b. Haga clic izquierdo para mostrar el cuadro de control lumínico:

i. Cuadro de control para interruptores

Fig. 3.3.1 – 2

ii. Cuadro de control para atenuadores (dimmers)

Fig. 3.3.1 – 3

Nota:

Los cuadros de control lumínicos, son mostrados de acuerdo al tipo de

dispositivo enlazado a la zona

c. En base al cuadro de control:

i. Para Interruptores:

Haga clic sobre la imagen para cambiar el estado.

Page 150: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 12

ii. Para Atenuadores:

Mueva la barra de desplazamiento hasta el valor deseado.

d. Una vez ejecutada la acción se actualizará el color de la zona de acuerdo a la

respuesta del servidor.

3.3.2. Todas las zonas

Haga clic en ubicado en la barra de herramientas si desea encender

todas las luminarias.

Haga clic en ubicado en la barra de herramientas, si desea apagar todas

las luminarias

3.3.3. Zona del Público

Con esta opción podemos apagar/encender las luminarias correspondientes al

público.

Haga clic la lista desplegable ubicada en la barra de herramientas

Elija la acción que desea realizar.

3.3.4. Zona del Escenario

De igual forma podemos apagar/encender las luminarias correspondientes al

escenario.

Haga clic la lista desplegable ubicada en la barra de herramientas

Page 151: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 13

Elija la acción que desea realizar

3.4. Panel de Información

Este panel contiene la información de zonas y nodos que fueron asignados por el

servidor, así como los valores de dirección IP y puerto para conectarse al servidor.

3.4.1. Información de Zonas

Muestra las valores de los dispositivos asignados a las zonas y la imagen

correspondiente del tipo de dispositivo

Fig. 3.4.1

Esta información es dinámica y se actualiza cada vez que recibamos una

actualización del servidor.

3.4.2. Opciones

Estos valores son los necesarios para establecer la conexión al servidor.

Fig. 3.4.2

Page 152: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 14

Servidor

- Obligatoriamente tiene que ser la misma IP que usa el servidor

Puerto

- El puerto de red donde el servidor está escuchando las peticiones

Notas:

- Una dirección IP es una etiqueta numérica que identifica, de manera

lógica y jerárquica, a una interfaz de un dispositivo dentro de una red

que utilice el protocolo IP (Internet Protocol), que corresponde al nivel

de red del protocolo TCP/IP

- El servidor solo soporta direcciones IPv4, por lo tanto el cliente deberá

usar el mismo tipo de dirección

- El valor predefinido para el puerto de red es “8990”

- Este valor del puerto es asignado teniendo en cuenta la siguiente tabla:

< 1024 Son puertos reservados para el sistema operativo y son

usados por "protocolos bien conocidos".

1024

a

49151

Son denominados "registrados" y pueden ser usados por

cualquier aplicación.

49152

a

65535

Son denominados dinámicos o privados, porque son los

usados por el sistema operativo cuando una aplicación tiene

que conectarse a un servidor y por tanto necesita un puerto

por donde salir.

En nuestro caso, el servidor aceptará cualquier valor comprendido

entre 1024 y 49151

- ESTOS VALORES SERAN VALIDADOS AL MOMENTO DE INTENTAR

CONECTARSE AL SERVIDOR

3.5. Mensajes de Error y Posibles soluciones

Page 153: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 15

3.5.1. Se pierde la conexión al servidor

Fig. 3.5.1

Causas:

- Fallo en la conexión de red (interfaces, cables, etc.).

- El servidor se detuvo.

Solución:

- Revisar la conexión de red.

- Revisar que el servidor esté funcionando.

3.5.2. Intentar conectar al servidor

Fig. 3.5.2

Causas:

- Los valores de la dirección IP o el número de puerto de red no son los

correctos.

- El servidor no está en ejecución.

- Existe un problema con la configuración de seguridad de red

(cortafuegos).

Page 154: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 16

Solución:

- Confirmar que los valores de dirección IP y puerto de red coincidan con

los del servidor

- Revisar que el servidor este en ejecución.

- Desactivar el cortafuegos o agregar el programa a la lista de confianza

3.5.3. Verificar dirección IP y puerto

Fig. 3.5.3 – 1

Fig. 3.5.3 – 2

Fig. 3.5.3 – 4

Causas:

- Valores erróneos para el número de puerto o la dirección IP

Solución:

- Revise la sección 3.4.2

Page 155: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Cliente

Manual de Usuario - 17

4. Requisitos Mínimos

Hardware

- Procesador Pentium 1GHz o equivalente

- RAM: 256 MB

- Disco Duro: 500 MB*

- Unidad CD o DVD

- Monitor: 800 x 600, 256 colores

- 1 Ranura USB (para el controlador USB)

- 1 Tarjeta de Red (en caso de funcionar en red )

Software

- Microsoft Windows XP

- Microsoft .Net Framework 3.5 SP1

*Los 500 MB es suponiendo que el sistema operativo no posee .Net Framework

Page 156: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Elaborado por:

Chimbo Leonardo

Salazar Eduardo

Enero 2012

Control de luces – Servidor

Manual de Usuario

Page 157: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 1

Contenido

1. INTRODUCCIÓN ....................................................................................................................................... 2

2. INSTALANDO LA APLICACIÓN .................................................................................................................. 2

2.1. INSTALANDO .NET FRAMEWORK 3.5 SP1 (NECESARIO) ................................................................................... 2

2.2. INSTALANDO LA APLICACIÓN ....................................................................................................................... 5

3. EL ADAPTADOR USB ................................................................................................................................ 7

3.1. CONECTANDO EL ADAPTADOR USB AL COMPUTADOR ...................................................................................... 8

3.2. ¿CÓMO RECONOCE EL SISTEMA OPERATIVO AL ADAPTADOR USB? ..................................................................... 9

4. APLICACIÓN ............................................................................................................................................. 9

4.1. CONEXIONES........................................................................................................................................... 12

4.1.1. Iniciando el Servidor .................................................................................................................. 12

4.1.2. Eventos y Mensajes ................................................................................................................... 13

4.1.3. Desconectando clientes ............................................................................................................. 14

4.1.4. Deteniendo el servidor .............................................................................................................. 14

4.2. RED Z-WAVE .......................................................................................................................................... 14

4.2.1. Agregando Dispositivos(nodos) ................................................................................................ 16

4.2.2. Quitando Dispositivos(nodos) ................................................................................................... 18

4.2.3. Asignado Zonas y Nodos. .......................................................................................................... 19

4.2.4. Borrando la configuración USB ................................................................................................. 21

4.3. OPCIONES .............................................................................................................................................. 22

4.3.1. Configuración de Red................................................................................................................. 22

4.3.1.1. Dirección IP ............................................................................................................................ 22

4.3.1.2. Puerto .................................................................................................................................... 23

4.3.2. Monitoreo .................................................................................................................................. 23

4.3.2.1. Actualizar Clientes ................................................................................................................. 24

4.3.2.2. Registro de Eventos ............................................................................................................... 24

4.3.3. Contraseña ................................................................................................................................. 24

5. REQUISITOS MÍNIMOS........................................................................................................................... 25

6. ANEXO: EQUIPOS INSTALADOS.............................................................................................................. 26

7. ANEXO: CONFIGURACIÓN ZONAS/NODOS ............................................................................................ 27

Page 158: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 2

1. Introducción

Este documento explica la correcta utilización de la aplicación (servidor) para agregar,

quitar, reconfigurar los nodos que forman la Red Z-Wave encargada del control de

intensidad de luz; así como también la puesta en marcha del servidor en la red.

En las siguientes páginas se especificará en detalle, el funcionamiento, las características y

las formas de funcionamiento del Software para el Control de Luces - Servidor.

2. Instalando la Aplicación

Para llevar a cabo la instalación correcta del software se necesitan unos componentes

que son esenciales para la ejecución del programa.

2.1. Instalando .Net Framework 3.5 SP1 (Necesario)

a. Abrir el instalador dotnetfx35.exe ubicado en el directorio “requisitos” del CD de

instalación.

Fig. 2.1 – 1

b. Si aparece una advertencia de seguridad: Clic “Ejecutar” para continuar.

Fig. 2.1 – 2

c. Empieza a cargar el asistente de instalación, esperamos que concluya.

Page 159: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 3

Fig. 2.1 – 3

d. Acepte el contrato de licencia de uso, después clic en “Instalar”

Fig. 2.1 – 4

e. Aunque se muestre el cuadro de descarga, este instalador no requiere conexión a

internet; sin embargo si está disponible la conexión se procederá a descargar las

actualizaciones.

Fig. 2.1 – 5

Page 160: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 4

f. Inicia el proceso de instalación.

Fig. 2.1 – 6

g. Instalación completa, ahora podemos instalar la aplicación.

Fig. 2.1 – 7

Page 161: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 5

2.2. Instalando la Aplicación

Una vez instalado los componentes necesarios, el instalador continuará con la

instalación de la aplicación

a. Pantalla de Bienvenida. Haga clic en “Siguiente” para continuar

Fig. 2.2 – 1

b. Elija el directorio donde se instalará la aplicación.

c. Haga clic en “Examinar” si desea escoger otro directorio de instalación.

Fig. 2.2 – 2

Page 162: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 6

d. Seleccione si desea que la aplicación la usen otros usuarios.

e. Haga clic en “Siguiente” para continuar

f. En este punto tenemos la posibilidad de cambiar algo si es necesario; caso

contrario clic en “Siguiente” para iniciar la instalación

Fig. 2.2 – 3

g. Esperamos a que termina la instalación

Fig. 2.2 - 4

Page 163: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 7

h. Instalación Completa

Fig. 2.2 - 5

3. El Adaptador USB

Esta es la interfaz que usamos para conectarnos con los dispositivos que controlan la

intensidad de las luces.

Fig. 3 – 1

Page 164: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 8

3.1. Conectando el adaptador USB al computador

a. Localizamos un ranura USB disponible

Fig. 3.1 – 1

b. Comprobamos que el adaptador funcione correctamente.

Fig. 3.1 – 2

Cuando el adaptador funciona, la luz azul comenzara a parpadear.

Page 165: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 9

3.2. ¿Cómo reconoce el sistema operativo al adaptador USB?

El sistema operativo lo detectará como un dispositivo de interfaz humana e instalará los

respectivos drivers.

Fig. 3.2 – 1

Nota:

No se requiere ningún otro driver para que funcione el adaptador USB

4. Aplicación

Para ingresar a la aplicación lo podemos hacer desde el Menú Inicio

Fig. 4 – 1

Ó desde el icono en el escritorio

Page 166: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 10

Fig. 4 – 2

Al iniciar la aplicación por primera vez, nos pedirá ingresar una contraseña:

Fig. 4 – 3

- Ingresamos la nueva contraseña 2 veces como mecanismo de seguridad.

- La contraseña debe tener mínimo 4 caracteres.

Fig. 4 – 4

Page 167: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 11

Luego nos mostrará la Pantalla Principal:

Fig. 4 - 6

Aquí nos ofrece las siguientes opciones que serán explicadas en detalle más adelante:

Conexiones: Cuando el servidor este en ejecución se mostrara todos los eventos que

genere la aplicación.

Red Z-Wave: Administración de la red para el control de luces.

Opciones: Datos necesario para el funcionamiento del server.

Iniciar: Ponemos en marcha el servidor, conectándonos a la red Z-Wave y habilitando las

conexiones de red.

Detener: Detiene el servidor.

Salir: Cerramos la aplicación.

Importante:

- Antes de iniciar el servidor, será necesario configurar la Red Z-Wave, Asignar

Zonas/Nodos y Configurar las opciones de red.

Page 168: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 12

4.1. Conexiones

En esta sección se muestran los eventos y mensajes generados por la aplicación y la

interacción con los de clientes.

4.1.1. Iniciando el Servidor

Para iniciar el servidor pulsamos el botón “Iniciar”

Fig. 4.1.1-1

- Una vez completado el proceso de inicialización aparece el mensaje “En espera

de conexiones” lo cual indica que el servidor está listo activo.

- Si por algún motivo falla la inicialización entonces aparecerán los mensajes de

error indicando el motivo por el cual fallo.

Importante:

- Dependiendo del sistema operativo y de las configuraciones de seguridad del

equipo, los siguientes mensajes aparecerán cuando intentemos iniciar los

servicios de red.

Page 169: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 13

Fig. 4.1.1 – 2

Fig. 4.1.1 – 3

- En ambos casos permitimos que la aplicación acceda a estos servicios.

- Si bloqueamos la aplicación ningún cliente podrá conectarse.

4.1.2. Eventos y Mensajes

En la zona de eventos se registraran todas las acciones que se generen cuando el

servidor este ejecutándose. Por ejemplo en la figura se puede ver los mensajes

que ocurren cuando un cliente se conecta al servidor.

Fig. 4.1.2 - 1

Page 170: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 14

Esta información puede ser guardada en archivos de texto, siempre y cuando este

habilitada dicha opción.

4.1.3. Desconectando clientes

Para desconectar un cliente por A o B razón realizamos lo siguiente:

a. Localizamos al cliente a desconectar en el listado de “Clientes”

b. Al hacer <Clic derecho > se desplegará la opción de desconexión

Fig. 4.1.3 – 1

c. Al completar la operación en el registro de eventos muestra el respectivo

mensaje.

4.1.4. Deteniendo el servidor

Para detener la ejecución del servidor

a. Pulsamos el botón “Detener”

Esta acción provocara el cierre de las conexiones de red y la desconexión

de la Red Z-Wave

4.2. Red Z-Wave

En esta sección se tiene la administración de la Red Z-Wave (inalámbrica) para

agregar, quitar, reconfigurar los nodos y el controlador.

Para conectarnos y proceder a la configuración damos clic en el botón “Conectar”

Fig. 4.2-1

Page 171: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 15

Una vez conectado al controlador, se actualizan los valores de la red cargando los

datos en la grilla de “Listado de Dispositivos” y activando las demás opciones.

Borrar USB: Borra toda la configuración de los nodos en el controlador.

Agregar Dispositivo: Agrega un nuevo nodo a la red.

Quitar Dispositivo: Quita un nodo de la red.

Zonas y Nodos: Asignamos zonas y nodos

Actualizar: Actualiza la lista de dispositivos de la red.

Fig. 4.2-2

En el “Listado de Dispositivos” muestra información de los nodos de la red así como

también el tipo de nodo y el valor.

Si el valor es “N/A” significa que ese dispositivo no estuvo disponible al momento de

la actualización.

Page 172: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 16

Posible Error:

Si por algún motivo no se pudo conectar con el controlador USB aparecerá el siguiente

mensaje.

Fig. 4.2-3

4.2.1. Agregando Dispositivos(nodos)

Para agregar un dispositivo realizamos los siguientes pasos:

a. Clic en el botón “Agregar Dispositivo”

b. Nos muestra un mensaje con indicaciones específicas para continuar, clic en

“Aceptar”

Fig. 4.2.1-1

Page 173: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 17

c. El sistema entrara en modo de espera hasta que se detecte el nuevo

dispositivo a añadir, para esto es necesario pulsar un botón en el dispositivo

físico.

d. Cuando el sistema detecta el dispositivo nos mostrará el siguiente mensaje y el

nodo estará agregado a la red:

Fig. 4.2.1-2

Notas:

- El número que aparece en el mensaje se lo utilizará para la posterior

configuración de zonas y nodos.

- Al momento de agregar un dispositivo que anteriormente ya estaba en el

controlador, simplemente devolverá el mismo número de nodo con el cual se

había agregado.

Posible Error:

El servidor mostrará este mensaje cuando exista algún inconveniente al momento

de agregar el dispositivo:

Fig. 4.2.1-3

Page 174: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 18

4.2.2. Quitando Dispositivos(nodos)

Para quitar dispositivos de nuestra red realizamos los siguientes pasos:

a. Clic en el botón “Quitar Dispositivo”

b. Entonces nos aparece el siguiente mensaje con indicaciones para continuar:

Fig. 4.2.2-1

c. Nuevamente el sistema entra en modo de espera, hasta que se detecte el

dispositivo a quitar de la red, de igual manera es necesario pulsar un botón en

el dispositivo físico.

d. Cuando se detecta el dispositivo a quitar aparecerá el mensaje de

confirmación

Fig. 4.2.2-2

Posible Error:

Cuando el servidor no puede detectar el dispositivo a quitar mostrará el siguiente

mensaje:

Page 175: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 19

Fig. 4.2.2 -3

4.2.3. Asignado Zonas y Nodos.

Una vez agregados todos nuestros dispositivos (nodos) a la Red Z-Wave y por lo

tanto al controlador, es necesario hacer la relación zona-nodo.

Esta sección constituye la parte más importante del control de luces ya que

asignaremos los nodos con sus correspondientes zonas; esta información es vital

para que el modulo del cliente no tenga errores al manipular las zonas.

Para realizar esta asignación realizamos los siguientes pasos:

a. Pulsamos el botón “Zonas y Nodos”

b. A continuación nos muestra esta ventana

Fig. 4.2.3-1

Page 176: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 20

En el mapa se muestra los valores actuales de las zonas y sus nodos.

Limpiar: Establece todas las zonas a sus valores iniciales, es decir ninguno.

Cerrar: Cierra la ventana

c. Hacemos clic en la zona a la cual vamos a asignarle su nodo:

Fig. 4.2.3-2

En la lista nos aparecen los nodos disponibles, simplemente elegimos el que

corresponda a esa zona.

d. Cuando elegimos el nodo, se mostrara en el mapa así:

Fig. 4.2.3-3

Page 177: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 21

Repetir el paso “c” para el resto de las zonas.

e. Opcional: Cuando necesitemos cambiar el valor de alguna zona, elegimos la

opción “N/A” de la lista de nodos, con esto el nodo estará en la lista de

disponibles.

Fig. 4.2.3-4

Notas:

- Al realizar cualquier cambio en el mapa de zonas se guardará

automáticamente.

- Al momento de iniciar el servidor si una zona tiene el valor de “N/A”, dicha

zona no estará disponible en el cliente para su manipulación. Por lo cual es

importante realizar esta asignación.

- Para cerrar la lista de nodos disponibles pulse la tecla <Escape>

4.2.4. Borrando la configuración USB

Para borrar la configuración del controlador USB, hacemos clic en el botón “Borrar

USB” y necesitamos ingresar la contraseña:

Fig. 4.2.4 – 1

Notas:

- Esta operación borra la información de nodos del controlador USB, lo cual

implicará agregar nuevamente los nodos a la red.

Page 178: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 22

- El botón Aceptar se activará cuando ingrese la contraseña correcta.

4.3. Opciones

En esta sección tenemos algunos parámetros para el funcionamiento del servidor.

Fig. 4.3-1

Restaurar: Establece las opciones a sus valores predefinidos (Necesita contraseña)

Guardar: Guarda los cambios realizados (no incluye la contraseña), siempre se

trabajará con los valores guardados.

4.3.1. Configuración de Red

Dado que el servidor está diseñado para ser accedido mediante una conexión de

red, aquí establecemos dichos parámetros.

Fig. 4.3.1-1

4.3.1.1. Dirección IP

Page 179: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 23

Muestra la lista de direcciones IP disponibles en el computador.

El valor predefinido es “Por Defecto” es decir, el servidor escuchará

peticiones en cualquiera de las direcciones IP que tenga el computador.

Si desea establecer una dirección en específica para el servidor,

simplemente seleccione de la lista.

Notas:

o Una dirección IP es una etiqueta numérica que identifica, de manera

lógica y jerárquica, a una interfaz de un dispositivo dentro de una red

que utilice el protocolo IP (Internet Protocol), que corresponde al nivel

de red del protocolo TCP/IP

o El servidor solo soporta direcciones IPv4

4.3.1.2. Puerto

Además de la dirección IP, se necesita establecer un puerto de red para la

comunicación con los módulos clientes a través de la red.

El valor predefinido es “8990”

Este valor es asignado teniendo en cuenta la siguiente tabla:

< 1024 Son puertos reservados para el sistema operativo y son

usados por "protocolos bien conocidos".

1024

-

49151

Son denominados "registrados" y pueden ser usados por

cualquier aplicación.

49152

-

65535

Son denominados dinámicos o privados, porque son los

usados por el sistema operativo cuando una aplicación tiene

que conectarse a un servidor y por tanto necesita un puerto

por donde salir.

En nuestro caso, el servidor aceptará cualquier valor comprendido entre

1024 y 49151

4.3.2. Monitoreo

Estas opciones nos permiten dar seguimiento a la actividad de nuestro servidor:

Page 180: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 24

Fig. 4.3.2 -1

4.3.2.1. Actualizar Clientes

Establecemos un intervalo de tiempo en minutos para enviar actualizaciones

del estado de la red Z-Wave a todos los clientes conectados.

Notas:

El valor predefinido es “10” minutos

El máximo valor permitido es “60” minutos.

Si establecemos el valor de “0”, esto causará que se desactive esta opción

y no se enviara información de actualización.

4.3.2.2. Registro de Eventos

Al Activar o Desactivar esta opción la información que se encuentre en el

“registro de eventos” se guardara o no en el archivos de texto.

Notas:

Los archivos de registro de eventos se guardarán en el directorio “logs\”

que se encuentra en el directorio de la aplicación.

El formato de nombre de archivo será el siguiente:

o AAAAMMDD_HHMMSS.txt

Únicamente se guardará el registro cuando la aplicación se cierre.

4.3.3. Contraseña

En esta sección podemos cambiar la contraseña:

Page 181: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 25

Fig 4.3.3-1

Cambiar. Cambia la contraseña de acuerdo a los siguientes parámetros.

La contraseña debe tener mínimo 4 caracteres.

Se necesita conocer la contraseña actual

La nueva contraseña se debe ingresar dos veces y obviamente deben

coincidir.

5. Requisitos Mínimos

Hardware

- Procesador Pentium 1GHz o equivalente

- RAM: 256 MB

- Disco Duro: 500 MB*

- Unidad CD o DVD

- Monitor: 800 x 600, 256 colores

- 1 Ranura USB (para el controlador USB)

- 1 Tarjeta de Red (en caso de funcionar en red )

Software

- Microsoft Windows XP

- Microsoft .Net Framework 3.5 SP1

*Los 500 MB es suponiendo que el sistema operativo no posea .Net Framework

Page 182: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 26

6. Anexo: Equipos Instalados

Detalle de equipos instalados en el Aula Magna, debido a las características de

iluminación se instalaron 4 tipos diferentes de dispositivos:

Zona

Equipo: Leviton VRS15-1LZ - vizia rf + 15A Switch

Zona

Equipo: Leviton VRI06-1LZ - vizia rf + 600W Incandescent Dimmer

Zona

Equipo: Leviton VRS05-1LZ - vizia rf + 5A Switch

Zona

Equipo: Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer

Page 183: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces - Servidor

Manual de Usuario - 27

Controlador USB

ControlThink CTZUS-1US - ThinkStick Only (US Frequency)

7. Anexo: Configuración Zonas/Nodos

Esta es la configuración de Zonas/Nodos con la cual está funcionando el sistema de

control de iluminación en el Aula Magna de la PUCESD.

Page 184: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Manual Técnico

Control de Luces - Cliente

Elaborado por: Chimbo Leonardo Salazar Eduardo

Page 185: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 1

Contenido

1. INTRODUCCIÓN………………………………………………………………………………………..…….…...2

2. CONTENIDO TÉCNICO……………………………………………………………………………………...…..2

2.1. DIAGRAMAS DE FLUJO DE DATOS……………………………………………………………….………..2

2.2. MAPA DE NAVEGACIÓN2. CONTENIDO TÉCNICO……………………………………..………7

2.3. DESCRIPCIÓN GRÁFICA DEL MAPA DE NAVEGACIÓN…………………………….………...……7

2.3.1. PANTALLA INICIAL…………………………………………………………………………….………….…….7

2.4. CAMPOS REQUERIDOS…………………………………………………………………………….…….……..8

2.5. PROCESOS……………………………………………………………………………………………………….…...9

2.5.1. PANTALLA PRINCIPAL………………………………………………………………………….……………..9

2.5.2. BARRA DE HERRAMIENTAS………………………………………………………………….…………..15

2.5.3. MAPA DE ZONAS…………………………………………………………………………….………….…….21

2.5.4. PANEL INFORMACIÓN………………………………………………………………………………..…….30

2.5.5. CÓDIGO XAML DEL FORMULARIO…………………………………………………………….….…..33

2.5.6. CÓDIGO XAML DE ESTILOS…………………………………………………………………………..…..41

2.6. PLATAFORMA DE USUARIO…………………………………………………………………….…….…….44

Page 186: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 2

1. Introducción

Control de Luces – Cliente, es un módulo para interactuar el control de la intensidad de

las luces del aula magna de la PUCESD haciendo uso de la tecnología Z-Wave para el

acceso a dispositivos, controladores y Microsoft .Net Framework 3.5 conjuntamente con

el lenguaje de programación C# para la interacción con el usuario.

Con este módulo controlamos dos aspectos:

- Conexión de Red

o Envió/recepción de mensajes de control a través de la red.

- La Interfaz de Usuario

o Fácil de usar, diseñada para cambiar el estado de zonas de las

luminarias usando un mapa visual.

2. Contenido Técnico

2.1. Diagramas de Flujo de Datos

Como la programación Windows es orienta a eventos, nuestro sistema cuando

este en ejecución responderá a los siguientes eventos.

Page 187: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 3

1. E

sta

ble

ce

r C

on

exió

n2.

En

via

r M

en

sa

je

3.

Re

cib

ir M

en

sa

je

Co

ne

cta

r

Me

nsa

je

Me

nsa

je

SE

RV

IDO

R

4.

De

co

dific

ar

Me

nsa

je

M

en

sa

je

Lis

ta

No

do

sD

ato

s6

. A

CC

ION

US

UA

RIO

Al m

om

ento

de

con

ecta

rse

al s

erv

ido

r

Page 188: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 4

Diccionario de Datos - Al momento de conectarse al servidor

Variable Tipo Descripcion

ip IPAddress Recibe la conversion del cuadro de

texto “txIP”

iPortNo int Recibira la conversion del cuadro

de texto “txPuerto”

ipEnd IPEndPoint

Esta varible permite asociar tanto

la direccion ip como el numero de

puerto, es decir un IP Compuesto.

Ej: 192.168.1.100:8990

m_clientSocket Socket Variable para crear la conexión de

red con el servidor

msg string Variable para crear el mensaje que

se enviara al servidor

byData byte[] Transforma el mensaje a sequencia

de bytes para enviar a la red

theSockId SocketPacket

Clase auxiliar para el proceso de

la extración de los mensajes de

control enviados por la red.

iRx int Numero de caracteres que envio el

cliente.

chars Char[] La secuencia de caracteres que se

obtendra.

d Decoder Especifica el tipo decodificion de

mensaje.

charLen int

Es el resulta de la decoficacion

de la sequencia de bytes a

caracteres.

szData string Recibe el mensaje decoficado en

forma de cadena de caracteres.

mensajepartes string[] Una lista de los comandos recibos.

nodoinfo

string[]

Una lista que con la iformacion de

un nodo en especial

MyZoneInfo

ObservableCollection

<ZoneInfo>

La colección donde se guarda la

lista de nodos, para mostrarla en

el panel de informacion

Page 189: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 5

1.

En

via

r M

en

sa

je

2.

Re

cib

ir M

en

sa

je

Acció

n

U

su

ario

Me

nsa

je

Me

nsa

je

A

cció

n

U

su

ario

SE

RV

IDO

R

3. D

eco

dific

ar

Me

nsa

je

M

en

sa

je

Re

su

lta

do

4.

Eje

cu

tar

Acció

n

Lis

ta

No

do

s

Esta

mo

s co

nec

tad

os

y en

viam

os

un

a p

etic

ión

al s

erv

ido

r

Page 190: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 6

Diccionario de Datos - Cuando un cliente se conecta al server:

Variable Tipo Descripcion

znActual Path La zona actual donde se genero el evento

szTag string Obtenemos informacion relevante de la

zona, ID, TIPO

sbPartes string[] Dividir la informacion de la zona para

enviarla

showPopDimmers(

string valor)

void

Muestra el cuadro flotante para

atenuadores

showPopSwitch(

string valor)

void

Muestra el cuadro flotante para los

interruptores

intValor int El nuevo valor que se enviara, si la zona

es controlada por un dimmer

msg string Variable para crear el mensaje que se

enviara al servidor

theSockId SocketPacket

Clase auxiliar para el proceso de la

extración de los mensajes de control

enviados por la red.

iRx int Numero de caracteres que envio el

cliente.

chars Char[] La secuencia de caracteres que se

obtendra.

d Decoder Especifica el tipo decodificion de

mensaje.

charLen int Es el resulta de la decoficacion de la

sequencia de bytes a caracteres.

szData string Recibe el mensaje decoficado en forma de

cadena de caracteres.

mensajepartes string[] Una lista de los comandos recibos.

nodoinfo

string[]

Una lista que con la iformacion de un

nodo en especial

MyZoneInfo

ObservableCo

llection

<ZoneInfo>

La colección donde se guarda la lista de

nodos, para mostrarla en el panel de

informacion

Page 191: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 7

2.2. Mapa de Navegación

El mapa de navegación muestra de forma gráfica la interconexión entre cada

una de las pantallas del sistema, lo que serviría para saber cómo llegar a

determinada parte de la aplicación.

PANTALLA INICIAL

Fig. 2.2 – 1

Modulo único

2.3. Descripción gráfica del mapa de navegación

En esta sección indicamos cada una de las pantallas que mencionamos en el Mapa

de Navegación.

2.3.1. Pantalla Inicial

En esta figura se muestra la pantalla principal y el panel de información.

Fig. 2.3.1 – 1

Page 192: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 8

2.4. Campos Requeridos

Para que la aplicación se pueda conectar con el servidor se deben tomar en cuenta

dos campos que se pueden encontrar en la pestaña de “Opciones” en el panel de

la izquierda

Fig. 2.4 – 1

Dirección IP: Especifica la dirección IP que está siendo usada por el servidor.

Puerto: El número de puerto de red es un valor numérico teniendo en cuenta la

siguiente tabla:

Rango Descripción

< 1024 Son puertos reservados para el sistema operativo y son usados

por "protocolos bien conocidos".

1024 y 49151 Son denominados "registrados" y pueden ser usados por

cualquier aplicación.

49152 y 65535 Son denominados dinámicos o privados, porque son los usados

por el sistema operativo cuando una aplicación tiene que

conectarse a un servidor y por tanto necesita un puerto por

donde salir.

Fig. 2.4 - 2

En nuestro caso, el servidor aceptará cualquier valor comprendido entre 1024 y

49151. Los valores predefinidos de estos campos son:

Campo Valor

Dirección IP “Por Defecto”

Puerto 8990

Fig. 2.4 – 3

Page 193: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 9

2.5. Procesos

2.5.1. Pantalla Principal

Detallamos las funciones y procedimientos que controlan cada uno de

estos elementos

Fig. 2.5.1 - 1

Variables y Métodos:

// Variables y funciones para la gestion de mensajes de red

byte[] m_dataBuffer = new byte[1024];

IAsyncResult m_result;

public AsyncCallback m_pfnCallBack;

// La interfaz de conexion principal

public Socket m_clientSocket;

// Variables auxiliares para el manejo de respuestas

public string m_ServerReply;

public string m_swLevel;

// Collecion para la lista de nodos

private ObservableCollection<ZoneInfo> m_zoneinfo = new

ObservableCollection<ZoneInfo>();

// Obtiene la zona donde esta el mouse

private Path znActual;

// Constructor para lista de nodos asignados

public ObservableCollection<ZoneInfo> MyZoneInfo

Page 194: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 10

{

get { return this.m_zoneinfo; }

set { this.m_zoneinfo = value; }

}

Funciones y Procedimientos

/// <summary>

/// Busca en la lista de nodos conectados, el valor actual

/// </summary>

/// <param name="idzona">Nodo correspondiente a la zona</param>

/// <returns>El valor de la zona</returns>

string zonaValor(string idzona)

{

string szRetval = "";

Dispatcher.Invoke(new Action(delegate()

{

int i;

for (i = 0; i < MyZoneInfo.Count; i++)

{

if (MyZoneInfo[i].IdNodo == idzona)

{

szRetval = MyZoneInfo[i].Valor;

}

}

}));

return szRetval;

}

/// <summary>

/// Devuelde la primera direccion IPV4 del computador.

/// </summary>

String GetIP()

{

String strHostName = Dns.GetHostName();

// esta computadora

IPHostEntry iphostentry = Dns.GetHostEntry(strHostName);

// Obtenemos la primera ipv4

String IPStr = "";

foreach (IPAddress ipaddress in iphostentry.AddressList)

{

if (ipaddress.AddressFamily == AddressFamily.InterNetwork)

{

IPStr = ipaddress.ToString();

return IPStr;

}

}

return IPStr;

}

/// <summary>

/// Valores inciales

/// </summary>

private void Window_OnLoad(object sender, System.Windows.RoutedEventArgs

e)

{

Page 195: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 11

zonaItems.ItemsSource = MyZoneInfo;

popDimmers.IsOpen = false;

popSwitch.IsOpen = false;

popTooltip.IsOpen = false;

UpdateControls(false);

if (Properties.Settings.Default.lastIP == "")

{

txIP.Text = this.GetIP();

}

}

/// <summary>

/// Actualizamos la aplicación dependiendo si estamos

/// o nó conectados

/// </summary>

/// <param name="connected">¿Estamos en linea?</param>

private void UpdateControls(bool connected)

{

btnConexion.IsEnabled = !connected;

btnDesconexion.IsEnabled = connected;

btnApagar.IsEnabled = connected;

btnEncender.IsEnabled = connected;

if (!connected)

{

z1.IsEnabled = connected;

z1.Fill = (Brush)FindResource("ZonaFillColor");

z2.IsEnabled = connected;

z2.Fill = (Brush)FindResource("ZonaFillColor");

z3.IsEnabled = connected;

z3.Fill = (Brush)FindResource("ZonaFillColor");

z4.IsEnabled = connected;

z4.Fill = (Brush)FindResource("ZonaFillColor");

z5.IsEnabled = connected;

z5.Fill = (Brush)FindResource("ZonaFillColor");

z6.IsEnabled = connected;

z6.Fill = (Brush)FindResource("ZonaFillColor");

z7.IsEnabled = connected;

z7.Fill = (Brush)FindResource("ZonaFillColor");

z8.IsEnabled = connected;

z8.Fill = (Brush)FindResource("ZonaFillColor");

z9.IsEnabled = connected;

z9.Fill = (Brush)FindResource("ZonaFillColor");

z10.IsEnabled = connected;

z10.Fill = (Brush)FindResource("ZonaFillColor");

z11.IsEnabled = connected;

z11.Fill = (Brush)FindResource("ZonaFillColor");

}

}

/// <summary>

/// Este procedimiento es llamado despues de recibir un mensaje del

/// servidor actualizamos cada zona con su respectivo estado

/// </summary>

void actualizar_ZonaColor()

{

int i;

for (i = 0; i < MyZoneInfo.Count; i++)

{

switch (MyZoneInfo[i].IdZona)

Page 196: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 12

{

case "Z1":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z1.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z1.Fill = (Brush)FindResource("ZonaNormalColor");

else

z1.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z1.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z2":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z2.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z2.Fill = (Brush)FindResource("ZonaNormalColor");

else

z2.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z2.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z3":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z3.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z3.Fill = (Brush)FindResource("ZonaNormalColor");

else

z3.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z3.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z4":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z4.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z4.Fill = (Brush)FindResource("ZonaNormalColor");

else

z4.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z4.Fill = (Brush)FindResource("ZonaApagado");

Page 197: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 13

break;

case "Z5":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z5.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z5.Fill = (Brush)FindResource("ZonaNormalColor");

else

z5.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z5.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z6":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z6.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z6.Fill = (Brush)FindResource("ZonaNormalColor");

else

z6.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z6.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z7":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z7.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z7.Fill = (Brush)FindResource("ZonaNormalColor");

else

z7.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z7.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z8":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z8.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z8.Fill = (Brush)FindResource("ZonaNormalColor");

else

z8.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z8.Fill = (Brush)FindResource("ZonaApagado");

Page 198: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 14

break;

case "Z9":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z9.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z9.Fill = (Brush)FindResource("ZonaNormalColor");

else

z9.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z9.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z10":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z10.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z10.Fill =

(Brush)FindResource("ZonaNormalColor");

else

z10.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z10.Fill = (Brush)FindResource("ZonaApagado");

break;

case "Z11":

if (MyZoneInfo[i].Valor != "N/A")

{

if (MyZoneInfo[i].Valor == "0")

z11.Fill = (Brush)FindResource("ZonaApagado");

if (MyZoneInfo[i].Valor == "255")

z11.Fill =

(Brush)FindResource("ZonaNormalColor");

else

z11.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte((Convert.ToInt16(MyZoneInfo[i].Valo

r) * 255) / 100), 176, 239, 107));

}

else

z11.Fill = (Brush)FindResource("ZonaApagado");

break;

}

}

OnUpdateStatusText("Listo");

}

/// <summary>

/// Procedimiento para escribir mensajes de estado

/// desde cualquier punto

/// </summary>

private void OnUpdateStatusText(string msg)

Page 199: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 15

{

Dispatcher.Invoke(new Action(delegate()

{

txEstado.Text = msg;

}));

}

2.5.2. Barra de Herramientas

Fig. 2.5.2 – 1

Estas opciones se describen a continuación

Conectar

Fig. 2.5.2 – 2

/// <summary>

/// Conectarse al servidor

/// </summary>

private void btnConexion_OnClick(object sender,

System.Windows.RoutedEventArgs e)

{

OnUpdateStatusText("Conectando...");

if (bValidarPuerto() && bValidarIP())

{

p_ConectoServer();

}

}

/// <summary>

/// Procedimiento para conectarnos al servidor

/// </summary>

void p_ConectoServer()

{

try

{

// La interfaz para conectarnos

m_clientSocket = new Socket(AddressFamily.InterNetwork,

SocketType.Stream, ProtocolType.Tcp);

// Obtenemos la direccion IP y el puerto

IPAddress ip = IPAddress.Parse(txIP.Text);

int iPortNo = System.Convert.ToInt16(txPuerto.Text);

// Creamos la IP compuesta

IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo);

// Conectar al server

m_clientSocket.Connect(ipEnd);

if (m_clientSocket.Connected)

{

UpdateControls(true);

Page 200: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 16

// Una vez conectado pedimos la informacion de las

zonas

p_SendDataToServer("CZ", "00", "00");

WaitForData();

Thread.Sleep(100);

OnUpdateStatusText("Listo");

}

}

catch (SocketException se)

{

MessageBox.Show("Error al momento de conectar al

servidor\n¿Esta el servidor activo? ", "Control de luces -

Cliente", MessageBoxButton.OK, MessageBoxImage.Error);

UpdateControls(false);

}

}

/// <summary>

/// Validamos el ingreso de la direccion IP

/// </summary>

/// <returns>True, si el numero de puerto es correcto</returns>

private bool bValidarIP()

{

string value = txIP.Text;

//Vacio

if (String.IsNullOrEmpty(value))

{

MessageBox.Show("Ingrese un valor para la dirección

IP","Control Luces -

Servidor",MessageBoxButton.OK,MessageBoxImage.Information);

txIP.SelectAll();

txIP.Focus();

return false;

}

//No estan los octetos completos

string[] parts = value.Split('.');

if (parts.Length != 4)

{

MessageBox.Show("La direccion deben tener 4 octetos separados

por puntos","Control Luces -

Servidor",MessageBoxButton.OK,MessageBoxImage.Error);

txIP.SelectAll();

txIP.Focus();

return false;

}

//Verificamos cada octeto

foreach (string p in parts)

{

int intPart;

if (!int.TryParse(p, out intPart))

{

MessageBox.Show("Solo puede ingresar numeros para cada

octeto", "Control Luces - Servidor", MessageBoxButton.OK,

MessageBoxImage.Error);

txIP.SelectAll();

txIP.Focus();

return false;

Page 201: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 17

}

if (intPart < 0 || intPart > 255)

{

MessageBox.Show("Cada octeto de la direccion IP debe

estar entre 0 y 255", "Control Luces - Servidor",

MessageBoxButton.OK, MessageBoxImage.Error);

txIP.SelectAll();

txIP.Focus();

return false;

}

}

return true;

}

/// <summary>

/// Validamos el ingreso del puerto

/// </summary>

/// <returns>True si la ip ingresada es correcta</returns>

private bool bValidarPuerto()

{

try

{

if (int.Parse(txPuerto.Text) >= 1024 && int.Parse(txPuerto.Text) <=

49151)

{

return true;

}

else

{

MessageBox.Show("Numero de puerto incorrecto \n" +

"El rango permitido es: 1024 a 49151", "Control

Luces - Servidor", MessageBoxButton.OK, MessageBoxImage.Error);

txPuerto.SelectAll();

txPuerto.Focus();

return false;

}

}

catch

{

MessageBox.Show("Numero de puerto incorrecto ó caracteres no

permitidos \n"+

"El rango permitido es: 1024 a 49151","Control Luces

- Servidor",MessageBoxButton.OK,MessageBoxImage.Error);

txPuerto.SelectAll();

txPuerto.Focus();

return false;

}

return true;

}

Desconectar

Fig. 2.5.2 – 3

/// <summary>

/// Procedimiento para desconectarnos del servidor puede ser llamado

Page 202: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 18

/// desde cualquier hilo

/// </summary>

void p_DesconectarServer()

{

Dispatcher.Invoke(new Action(delegate()

{

if (m_clientSocket != null)

{

m_clientSocket.Close();

m_clientSocket = null;

MyZoneInfo.Clear();

UpdateControls(false);

OnUpdateStatusText("Desconectado");

// Guardamos las ultimas opciones usadas

Properties.Settings.Default.Save();

}

}));

}

Apagar luminarias

Fig. 2.5.2 – 4

/// <summary>

/// Enviamos a Apagar todas las luminarias

/// COMANDO;ESTADO; NO USADO

/// CE; 00; 00

/// </summary>

private void btnApagar_OnClick(object sender,

System.Windows.RoutedEventArgs e)

{

//CE;00;00

p_SendDataToServer("CE", "00", "00");

OnUpdateStatusText("Apagando todas las luminarias");

}

Encender luminarias

Fig. 2.5.2 – 5

/// <summary>

/// Enviamos a Encender todas las luminarias

/// COMANDO;ESTADO; NO USADO

/// CE; 01; 00

/// </summary>

private void btnEncender_OnClick(object sender,

System.Windows.RoutedEventArgs e)

{

//CE;01;00

p_SendDataToServer("CE", "01", "00");

OnUpdateStatusText("Encendiendo todas las luminarias");

}

Page 203: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 19

Luces Público

Fig. 2.5.2 - 6

/// <summary>

/// Encendemos/Apagamos las luces del publico

/// </summary>

private void cbPublico_SelectionChanged(object sender,

System.Windows.Controls.SelectionChangedEventArgs e)

{

if (cbPublico.SelectedItem != null)

{

string szTag;

string[] sbPartes;

StringBuilder listanodos = new System.Text.StringBuilder();

if (z8.IsEnabled)

{

szTag = z8.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

if (z9.IsEnabled)

{

szTag = z9.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

if (z10.IsEnabled)

{

szTag = z10.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

if (z11.IsEnabled)

{

szTag = z11.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

if (listanodos.ToString() != null )

{

switch (cbPublico.SelectedIndex)

{

case 0:

OnUpdateStatusText("Apagando las luces del público");

p_SendDataToServer("CP","0", listanodos.ToString());

break;

case 1:

OnUpdateStatusText("Encendiendo las luces del

público");

p_SendDataToServer("CP","1", listanodos.ToString());

Page 204: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 20

break;

}

}

}

}

Luces Escenario

Fig. 2.5.2 - 7

/// <summary>

/// Encendemos/Apagamos las luces del escenario

/// </summary>

private void cbEscenario_SelectionChanged(object sender,

System.Windows.Controls.SelectionChangedEventArgs e)

{

if (cbEscenario.SelectedItem != null)

{

string szTag;

string[] sbPartes;

StringBuilder listanodos = new System.Text.StringBuilder();

if (z3.IsEnabled)

{

szTag = z3.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

//

if (z4.IsEnabled)

{

szTag = z4.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

//

if (z5.IsEnabled)

{

szTag = z5.Tag.ToString();

sbPartes = szTag.Split('|');

listanodos.Append(sbPartes[0] + "#");

}

if (listanodos.ToString() != null)

{

switch (cbEscenario.SelectedIndex)

{

case 0:

OnUpdateStatusText("Apagando las luces del escenario");

p_SendDataToServer("CP", "0", listanodos.ToString());

break;

case 1:

OnUpdateStatusText("Encendiendo las luces del

escenario");

p_SendDataToServer("CP", "1", listanodos.ToString());

break;

}

Page 205: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 21

}

}

}

Fig. 2.5.2 – 8

/// <summary

/// Cargamos el Manual de Usuario

/// </summary>

private void btnAyuda_OnClick(object sender,

System.Windows.RoutedEventArgs e)

{

try

{

System.Diagnostics.Process process = new

System.Diagnostics.Process();

process.StartInfo.FileName = "Manual de Usuario.pdf";

process.Start();

process.WaitForExit();

}

catch (Exception se)

{

MessageBox.Show(se.Message,"Control de Luces -

Cliente",MessageBoxButton.OK,MessageBoxImage.Error);

}

}

2.5.3. Mapa de Zonas

Fig. 2.5.3 – 1

/// <summary>

/// Mostramos informacion acerca de la zona

/// Nombre zonaa

/// Valor actual

/// </summary>

/// <param name="senderZnActual">la zona donde esta el mouse</param>

private void showPopTooltip(object senderZnActual)

{

string szNivel, szTag;

string[] sbPartes;

Path zona = (Path)senderZnActual;

Page 206: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 22

szTag = zona.Tag.ToString();

sbPartes = szTag.Split('|');

txZona.Text = "Zona # " + sbPartes[0];

szNivel = zonaValor(sbPartes[0]);

switch (szNivel)

{

case "N/A":

txValor.Text = "No disponible";

break;

case "0":

txValor.Text = "Apagada";

break;

case "255":

txValor.Text = "Encendida";

break;

default:

txValor.Text = "Al "+ szNivel + "%";

break;

}

popTooltip.Placement =

System.Windows.Controls.Primitives.PlacementMode.Mouse;

popTooltip.StaysOpen = false;

popTooltip.IsOpen = true;

}

/*

* Mouse Move

* ----------

* Cuando el mouse esta sobre una zona

* obtener el valor de la zona y mostramos la informacion

*/

private void OnMouseMove_z1(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z2(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z3(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z4(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

Page 207: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 23

showPopTooltip(znActual);

}

private void OnMouseMove_z5(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z6(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z7(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z8(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z9(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z10(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

private void OnMouseMove_z11(object sender,

System.Windows.Input.MouseEventArgs e)

{

znActual = (Path)sender;

showPopTooltip(znActual);

}

/*

* Mouse Leave

* -----------

* Cuando el mouse sale de una zona, escondemos la informacion

*

*/

Page 208: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 24

private void OnMouseLeave_z1(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z2(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z3(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z4(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z5(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z6(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z7(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z8(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z9(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

private void OnMouseLeave_z10(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

Page 209: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 25

private void OnMouseLeave_z11(object sender,

System.Windows.Input.MouseEventArgs e)

{

popTooltip.IsOpen = false;

}

Para desplegar el cuadro de control lumínico, requerimos la intervención del usuario que

genera este evento, en cualquier zona:

/*

*

* Mouse Click

* -----------

* Tag:

* ID_NODO|IP_NODO

*

* Cuando hacemos click en una zona, debemos saber que el tipo de nodo

* para abrir el el cuadro flotante adecuado

*/

private void OnClicked_z1(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z2(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z3(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

Page 210: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 26

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z4(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z5(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z6(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z7(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

Page 211: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 27

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z8(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z9(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z10(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

private void OnClicked_z11(object sender,

System.Windows.Input.MouseButtonEventArgs e)

{

string szTag;

string[] sbPartes;

znActual = (Path)sender;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (sbPartes[1] == "binarysceneswitch")

showPopSwitch(zonaValor(sbPartes[0]));

else

showPopDimmers(zonaValor(sbPartes[0]));

}

Page 212: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 28

/// <summary>

/// Para enviar mensajes al servidor

///

/// FORMATO

/// -------

/// COMANDO;NODO;VALOR

/// </summary>

void p_SendDataToServer(string command, string nodo, string valor)

{

try

{

string msg;

msg = command + ";" + nodo + ";" + valor;

// Enviamos el mensaje en sequencia de bytes

byte[] byData = System.Text.Encoding.ASCII.GetBytes(msg);

if(m_clientSocket != null){

m_clientSocket.Send (byData);

}

}

catch (SocketException se)

{

MessageBox.Show(se.Message,"Control Luces -

Servidor",MessageBoxButton.OK,MessageBoxImage.Information);

}

}

Fig. 2.5.3 – 2

/// <summary>

/// Enviamos a encender o apagar una zona.

///

/// COMANDO;NODO;VALOR

/// ------------------

/// CL; ID_NODO; 0 ó 255

/// </summary>

private void btnSwitch_OnClick(object sender,

System.Windows.RoutedEventArgs e)

{

// CL, ID_NOD, LEVEL

string szTag;

string[] sbPartes;

Path zona = (Path)znActual;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

if (m_swLevel == "0")

{

p_SendDataToServer("CL", sbPartes[0], "255");

Page 213: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 29

imgSwitch.Source = new BitmapImage(new

Uri(System.Environment.CurrentDirectory + "/img/sw_on.png"));

}

else

{

p_SendDataToServer("CL", sbPartes[0], "0");

imgSwitch.Source = new BitmapImage(new

Uri(System.Environment.CurrentDirectory + "/img/sw_off.png"));

}

popSwitch.IsOpen = false;

}

Fig. 2.5.3 – 3

/// <summary>

/// Enviamos a cambiar la intensidad de la zona

///

/// COMANDO;NODO;VALOR

/// CL;ID_NODO; 0-99

/// </summary>

private void slDimmer_OnMouseLost(object sender,

System.Windows.Input.MouseEventArgs e)

{

// CL, ID_NOD, LEVEL

string szTag;

string[] sbPartes;

int intValor;

Path zona = (Path)znActual;

szTag = znActual.Tag.ToString();

sbPartes = szTag.Split('|');

intValor = Convert.ToInt16(slDimmer.Value);

if ((int)slDimmer.Value == 100)

p_SendDataToServer("CL", sbPartes[0], "99");

else

p_SendDataToServer("CL", sbPartes[0],

Convert.ToString(intValor) );

popDimmers.IsOpen = false;

}

/// <summary>

/// Actualizamos el relleno de la zona de acuerdo al nivel seleccionado

/// </summary>

private void slDimmer_OnValueChanged(object sender,

System.Windows.RoutedPropertyChangedEventArgs<double> e)

{

znActual.Fill = new

SolidColorBrush(Color.FromArgb(Convert.ToByte(((int)slDimmer.Value * 255)

/100), 176, 239, 107));

Page 214: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 30

}

2.5.4. Panel Información

Fig. 2.5.4 – 1

Este panel usa lo siguiente: <DataBinding>

1 - La declaracion XAML de la visualizacion

<Window.Resources>

<Interfaz_Properties:Settings x:Key="SettingsDataSource"

d:IsDataSource="True"/>

<src:ZoneInfo x:Key="ZoneInfoDataSource" d:IsDataSource="True"/>

<DataTemplate x:Key="listingZonas" DataType="{x:Type

src:ZoneInfo}">

<DataTemplate.Resources>

<src:ZoneImageConverter x:Key="imageConverter"/>

</DataTemplate.Resources>

<Grid x:Name="grid" d:DesignWidth="147" d:DesignHeight="172"

Height="40" >

<Grid.ColumnDefinitions>

<ColumnDefinition Width="48"/>

<ColumnDefinition/>

</Grid.ColumnDefinitions>

<Image x:Name="infoIconoTipo" Margin="8,4"

d:LayoutOverrides="VerticalAlignment" Width="32" Height="32"

Stretch="Uniform"

Source="{Binding Tipo, Converter={StaticResource

imageConverter}}"/>

<Grid Grid.Column="1">

<Grid.ColumnDefinitions>

<ColumnDefinition

x:Name="columnDefinition" Width="40.75"/>

<ColumnDefinition

x:Name="columnDefinition1"/>

</Grid.ColumnDefinitions>

<Grid.RowDefinitions>

<RowDefinition x:Name="rowDefinition"

Height="0.536*"/>

<RowDefinition

x:Name="rowDefinition1" Height="0.464*"/>

</Grid.RowDefinitions>

Page 215: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 31

<TextBlock x:Name="infoTipo" Margin="0"

Text="{Binding IdNodo}" TextWrapping="Wrap" Grid.ColumnSpan="1"

Grid.Column="1" VerticalAlignment="Center"/>

<TextBlock x:Name="infoEstado"

Margin="0,0,0,6.312" Grid.Row="1" Text="{Binding Valor}"

TextWrapping="Wrap" Grid.ColumnSpan="1" Grid.Column="1"

VerticalAlignment="Stretch" d:LayoutOverrides="Height"/>

<TextBlock Margin="0,0,0,6.312"

Grid.Row="1" Text="Valor" TextWrapping="Wrap" VerticalAlignment="Stretch"

d:LayoutOverrides="Height"/>

<TextBlock Margin="0" Text="Zona"

TextWrapping="Wrap" VerticalAlignment="Center"/>

</Grid>

</Grid>

</DataTemplate>

</Window.Resources>

2 - La clase que contendra la informacion

public class ZoneInfo : INotifyPropertyChanged

{

private string _idZona;

private string _idNodo;

private string _tipo;

private string _valor;

//private string _nombre;

public event PropertyChangedEventHandler PropertyChanged;

#region Properties Getters and Setters

public string IdZona

{

get { return this._idZona; }

set

{

this._idZona = value;

OnPropertyChanged("IdZona");

}

}

public string IdNodo

{

get { return this._idNodo; }

set

{

this._idNodo = value;

OnPropertyChanged("IdNodo");

}

}

public string Tipo

{

get { return this._tipo; }

set

{

Page 216: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 32

this._tipo = value;

OnPropertyChanged("Tipo");

}

}

public string Valor

{

get { return this._valor; }

set

{

this._valor = value;

OnPropertyChanged("Valor");

}

}

#endregion

public static ZoneInfo Create(string idZona, string idNodo, string

tipo, string valor)

{

ZoneInfo zona = new ZoneInfo();

zona._idZona = idZona;

zona._idNodo = idNodo;

zona._tipo = tipo;

zona._valor = valor;

return zona;

}

protected void OnPropertyChanged(string name)

{

if (PropertyChanged != null)

{

PropertyChanged(this, new

PropertyChangedEventArgs(name));

}

}

}

3 - Conversor de texto a image source.

/// <summary>

/// Conversor de Imagen para leer el tipo de nodo

/// y usarlo

/// </summary>

public class ZoneImageConverter : IValueConverter

{

#region IValueConverter Members

public object Convert(object value, Type targetType,

object parameter, System.Globalization.CultureInfo culture)

{

string imageName = value.ToString();

Uri uri = new Uri(System.Environment.CurrentDirectory +

"/img/" + imageName);

BitmapFrame source = BitmapFrame.Create(uri);

return source;

}

Page 217: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 33

public object ConvertBack(object value, Type targetType, object

parameter, System.Globalization.CultureInfo culture)

{

throw new NotImplementedException();

}

#endregion

}

Fig. 2.5.4 - 2

/// <summary>

/// Conectarse al servidor

/// </summary>

private void btnOpConectar_OnClick(object sender,

System.Windows.RoutedEventArgs e)

{

OnUpdateStatusText("Conectando...");

if (bValidarPuerto() && bValidarIP())

{

p_ConectoServer();

}

}

2.5.5. Código XAML del formulario

<Window

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:src="clr-namespace:Interfaz"

mc:Ignorable="d" xmlns:Interfaz_Properties="clr-

namespace:Interfaz.Properties"

xmlns:ic="clr-

namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.E

xpression.Interactions"

x:Class="Interfaz.MainWindow"

x:Name="Window"

Title="Control de Luces - Cliente"

WindowStartupLocation="CenterScreen" Width="800" Height="600"

MinWidth="800" MinHeight="600" Icon="Img/aulaicon.png"

Loaded="Window_OnLoad">

<Window.Resources>

<Interfaz_Properties:Settings x:Key="SettingsDataSource"

d:IsDataSource="True"/>

Page 218: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 34

<src:ZoneInfo x:Key="ZoneInfoDataSource" d:IsDataSource="True"/>

<DataTemplate x:Key="listingZonas" DataType="{x:Type src:ZoneInfo}">

<DataTemplate.Resources>

<src:ZoneImageConverter x:Key="imageConverter"/>

</DataTemplate.Resources>

<Grid x:Name="grid" d:DesignWidth="147" d:DesignHeight="172"

Height="40" >

<Grid.ColumnDefinitions>

<ColumnDefinition Width="48"/>

<ColumnDefinition/>

</Grid.ColumnDefinitions>

<Image x:Name="infoIconoTipo" Margin="8,4"

d:LayoutOverrides="VerticalAlignment" Width="32" Height="32"

Stretch="Uniform"

Source="{Binding Tipo, Converter={StaticResource imageConverter}}"/>

<Grid Grid.Column="1">

<Grid.ColumnDefinitions>

<ColumnDefinition x:Name="columnDefinition" Width="40.75"/>

<ColumnDefinition x:Name="columnDefinition1"/>

</Grid.ColumnDefinitions>

<Grid.RowDefinitions>

<RowDefinition x:Name="rowDefinition" Height="0.536*"/>

<RowDefinition x:Name="rowDefinition1" Height="0.464*"/>

</Grid.RowDefinitions>

<TextBlock x:Name="infoTipo" Margin="0" Text="{Binding IdNodo}"

TextWrapping="Wrap" Grid.ColumnSpan="1" Grid.Column="1"

VerticalAlignment="Center"/>

<TextBlock x:Name="infoEstado" Margin="0,0,0,6.312" Grid.Row="1"

Text="{Binding Valor}" TextWrapping="Wrap" Grid.ColumnSpan="1"

Grid.Column="1" VerticalAlignment="Stretch"

d:LayoutOverrides="Height"/>

<TextBlock Margin="0,0,0,6.312" Grid.Row="1" Text="Valor"

TextWrapping="Wrap" VerticalAlignment="Stretch"

d:LayoutOverrides="Height"/>

<TextBlock Margin="0" Text="Zona" TextWrapping="Wrap"

VerticalAlignment="Center"/>

</Grid>

</Grid>

</DataTemplate>

</Window.Resources>

<Grid x:Name="LayoutRoot" Background="{DynamicResource AppBackground}"

DataContext="{Binding Source={StaticResource SettingsDataSource}}">

<Grid.RowDefinitions>

<RowDefinition Height="39.902"/>

<RowDefinition/>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="164"/>

<ColumnDefinition/>

</Grid.ColumnDefinitions>

Page 219: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 35

<ToolBar Header="" IsOverflowOpen="True" VerticalAlignment="Top"

Height="42" Grid.ColumnSpan="2" Background="{DynamicResource

AppControlBackground}">

<Label Margin="0" Content="Servidor" VerticalAlignment="Center"

FontSize="13.333"/>

<Separator/>

<Button x:Name="btnConexion" Width="40" Height="40" ToolTip="Conectar

al servidor" Style="{DynamicResource IconButtonStyle}"

Click="btnConexion_OnClick">

<Image Source="Img/desconectado.png"/>

</Button>

<Button x:Name="btnDesconexion" Width="40" Height="40"

ToolTip="Desconectar" Style="{DynamicResource IconButtonStyle}"

Click="btnDesconexion_OnClick" IsEnabled="False">

<Image Source="Img/conectado.png"/>

</Button>

<Separator/>

<Button x:Name="btnApagar" Width="40" Height="40" ToolTip="Apaga todas

las luminarias" Style="{DynamicResource IconButtonStyle}"

Click="btnApagar_OnClick" IsEnabled="False">

<Image Source="Img/Aulamagna_foco_OFF.png"/>

</Button>

<Button x:Name="btnEncender" Width="40" Height="40" ToolTip="Enciende

todas las luminarias" Style="{DynamicResource IconButtonStyle}"

Click="btnEncender_OnClick" IsEnabled="False">

<Image Source="Img/Aulamagna_foco_ON.png"/>

</Button>

<Separator/>

<Button x:Name="btnAyuda" HorizontalAlignment="Center" Margin="0"

VerticalAlignment="Center" Width="40" Height="40"

Style="{DynamicResource IconButtonStyle}" Click="btnAyuda_OnClick"

ToolTip="Manual de Usuario">

<Image Source="Img/ayuda_ico.png"/>

</Button>

<Separator/>

<TextBlock Margin="4,0,0,0" Text="Estado:" TextWrapping="Wrap"

VerticalAlignment="Center" FontSize="13.333"/>

<TextBlock x:Name="txEstado" Margin="4,0,0,0" TextWrapping="Wrap"

VerticalAlignment="Center" Text="Desconectado" FontSize="13.333"/>

</ToolBar>

<GridSplitter Background="#FF9FB1D6" Width="2" Grid.Row="1" Margin="0"

HorizontalAlignment="Left" Grid.Column="1"/>

<ScrollViewer Margin="8,8,0,8" Grid.Row="1"

VerticalScrollBarVisibility="Auto">

<StackPanel ScrollViewer.VerticalScrollBarVisibility="Auto">

<Border BorderThickness="1" CornerRadius="6"

Background="{DynamicResource AppControlBackground}">

<Expander x:Name="PanelInfo" Header="Información de Zonas" Margin="0"

VerticalAlignment="Top" d:LayoutOverrides="Width"

Background="{x:Null}" IsExpanded="True">

<!--<ItemsControl x:Name="zonaItems" Margin="8"/>

ItemsSource="{Binding Source={StaticResource listingZona}}

<ListBox x:Name="zonaItems" Margin="8,0,8,8"

VerticalAlignment="Bottom"/> -->

<ListBox x:Name="zonaItems" Margin="0"

ItemTemplate="{StaticResource listingZonas}" Background="{x:Null}"

BorderBrush="{x:Null}"/>

Page 220: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 36

</Expander>

</Border>

<Border BorderThickness="1" CornerRadius="6" Margin="0,4,0,0"

Background="{DynamicResource AppControlBackground}">

<Expander x:Name="PanelConexion" Header="Opciones"

Background="{x:Null}" Margin="0" d:LayoutOverrides="Width, Height">

<Grid>

<TextBox Margin="8,33.334,8,0" VerticalAlignment="Top" Height="24"

Text="{Binding lastIP, Mode=OneWay}" TextWrapping="Wrap"

x:Name="txIP"/>

<TextBox Margin="8,85.334,8,63.166" Text="{Binding lastPort,

Mode=Default}" TextWrapping="Wrap" Height="24" x:Name="txPuerto"

d:LayoutOverrides="VerticalAlignment" />

<Label Margin="8,8,0,0" Content="Servidor" VerticalAlignment="Top"

Height="24" HorizontalAlignment="Left" Width="72.167"/>

<Label Margin="8,61.334,0,0" VerticalAlignment="Top" Height="24"

Content="Puerto" HorizontalAlignment="Left" Width="72.167"/>

<Button Margin="8,0,8,18.998" VerticalAlignment="Bottom" Height="28"

Content="Conectar" x:Name="btnOpConectar"

Click="btnOpConectar_OnClick" />

</Grid>

</Expander>

</Border>

<Border BorderThickness="1" CornerRadius="6"/>

<Image Source="PUCE_Positivo.png" Margin="0,8,0,0" Width="128"

Height="128"/>

</StackPanel>

</ScrollViewer>

<Viewbox Margin="8" Grid.Column="1" Grid.Row="1">

<Canvas x:Name="BG" Width="601" Height="400.531">

<Path Fill="#FFCEE2EA" Stretch="Fill" Width="594.844" Height="398.531"

Data="F1M699.8193,158.0957C699.9143,156.7957,699.9803,155.4867,699.980

3,154.1617C699.9803,124.7267,676.1183,100.8637,646.6813,100.8637C617.2

473,100.8637,593.3833,124.7267,593.3833,154.1617L593.3833,154.1617L105

.1363,154.1617L105.1363,278.5457L131.3373,278.5217L131.2463,320.5337L1

05.1363,320.5567L105.1363,446.0197L593.3863,446.0197C593.3863,446.0467

,593.3833,446.0707,593.3833,446.0977C593.3833,475.5317,617.2473,499.39

47,646.6813,499.3947C676.1183,499.3947,699.9803,475.5317,699.9803,446.

0977C699.9803,444.7717,699.9143,443.4627,699.8193,442.1617z"

Canvas.Left="5.155" Canvas.Top="1"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.312"

Data="F1M204.1533,186.7871C201.3063,186.7871,198.9983,189.0961,198.998

3,191.9431C198.9983,194.7901,201.3063,197.0991,204.1533,197.0991C207.0

003,197.0991,209.3103,194.7901,209.3103,191.9431C209.3103,189.0961,207

.0003,186.7871,204.1533,186.7871" Canvas.Left="99.017"

Canvas.Top="86.923"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.312"

Data="F1M303.1709,186.7871C300.3239,186.7871,298.0159,189.0961,298.015

9,191.9431C298.0159,194.7901,300.3239,197.0991,303.1709,197.0991C306.0

179,197.0991,308.3279,194.7901,308.3279,191.9431C308.3279,189.0961,306

.0179,186.7871,303.1709,186.7871" Canvas.Left="198.035"

Canvas.Top="86.923"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.311"

Data="F1M204.1533,401.8145C201.3063,401.8145,198.9983,404.1235,198.998

3,406.9685C198.9983,409.8165,201.3063,412.1255,204.1533,412.1255C207.0

003,412.1255,209.3103,409.8165,209.3103,406.9685C209.3103,404.1235,207

.0003,401.8145,204.1533,401.8145" Canvas.Left="99.017"

Canvas.Top="301.951"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.311"

Data="F1M303.1709,401.8145C300.3239,401.8145,298.0159,404.1235,298.015

Page 221: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 37

9,406.9685C298.0159,409.8165,300.3239,412.1255,303.1709,412.1255C306.0

179,412.1255,308.3279,409.8165,308.3279,406.9685C308.3279,404.1235,306

.0179,401.8145,303.1709,401.8145" Canvas.Left="198.035"

Canvas.Top="301.951"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.311"

Data="F1M402.1885,401.8145C399.3415,401.8145,397.0335,404.1235,397.033

5,406.9685C397.0335,409.8165,399.3415,412.1255,402.1885,412.1255C405.0

365,412.1255,407.3455,409.8165,407.3455,406.9685C407.3455,404.1235,405

.0365,401.8145,402.1885,401.8145" Canvas.Left="297.053"

Canvas.Top="301.951"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.311"

Data="F1M501.207,401.8145C498.359,401.8145,496.052,404.1235,496.052,40

6.9685C496.052,409.8165,498.359,412.1255,501.207,412.1255C504.054,412.

1255,506.364,409.8165,506.364,406.9685C506.364,404.1235,504.054,401.81

45,501.207,401.8145" Canvas.Left="396.071" Canvas.Top="301.951"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.312"

Data="F1M402.1885,186.7871C399.3415,186.7871,397.0335,189.0961,397.033

5,191.9431C397.0335,194.7901,399.3415,197.0991,402.1885,197.0991C405.0

365,197.0991,407.3455,194.7901,407.3455,191.9431C407.3455,189.0961,405

.0365,186.7871,402.1885,186.7871" Canvas.Left="297.053"

Canvas.Top="86.923"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="10.312" Height="10.312"

Data="F1M501.207,186.7871C498.359,186.7871,496.052,189.0961,496.052,19

1.9431C496.052,194.7901,498.359,197.0991,501.207,197.0991C504.054,197.

0991,506.364,194.7901,506.364,191.9431C506.364,189.0961,504.054,186.78

71,501.207,186.7871" Canvas.Left="396.071" Canvas.Top="86.923"/>

<Path Fill="#FF5577A6" Stretch="Fill" Width="601" Height="400.531"

Data="F1M663.0879,182.332C663.6409,182.332,664.0879,181.884,664.0879,1

81.332L664.0879,170.922L698.8189,170.922L698.8189,193.851L631.1469,193

.851C630.5939,193.851,630.1469,194.299,630.1469,194.851C630.1469,195.4

03,630.5939,195.851,631.1469,195.851L698.8189,195.851L698.8219,403.445

L631.1469,403.445C630.5939,403.445,630.1469,403.893,630.1469,404.445C6

30.1469,404.997,630.5939,405.445,631.1469,405.445L698.8219,405.445L698

.8219,428.078L663.9279,428.078L663.9279,417.668C663.9279,417.115,663.4

809,416.668,662.9279,416.668C662.3749,416.668,661.9279,417.115,661.927

9,417.668L661.9279,430.078L698.8219,430.078L698.8219,442.235C698.9299,

443.719,698.9809,444.946,698.9809,446.098C698.9809,474.934,675.5199,49

8.395,646.6819,498.395C617.8899,498.395,594.4599,475.007,594.3869,446.

256C594.3979,446.195,594.4229,446.139,594.4229,446.074L594.4229,411.96

5C596.6799,411.416,598.3629,409.395,598.3629,406.969L598.3999,406.969C

598.3999,406.453,598.3959,405.953,598.3939,405.445L611.9539,405.445C61

2.5069,405.445,612.9539,404.997,612.9539,404.445C612.9539,403.893,612.

5069,403.445,611.9539,403.445L598.3789,403.445C597.6929,342.01,579.111

9,346.15,579.1119,299.387C579.1119,258.188,597.5929,257.31,598.3719,19

5.851L611.9539,195.851C612.5069,195.851,612.9539,195.403,612.9539,194.

851C612.9539,194.299,612.5069,193.851,611.9539,193.851L598.3909,193.85

1C598.3959,193.173,598.3999,192.499,598.3999,191.807L598.3499,191.807C

598.2859,189.425,596.6129,187.454,594.3749,186.932L594.3749,155.162L59

4.3839,155.162L594.3839,154.162C594.3839,125.325,617.8449,101.864,646.

6819,101.864C675.5199,101.864,698.9809,125.325,698.9809,154.162C698.98

09,155.312,698.9299,156.539,698.8189,158.096L698.8189,168.922L662.0879

,168.922L662.0879,181.332C662.0879,181.884,662.5349,182.332,663.0879,1

82.332

M106.1369,445.02L106.1369,412.023C108.5049,411.557,110.2929,409.473,11

0.2929,406.969C110.2929,404.466,108.5049,402.382,106.1369,401.915L106.

1369,321.557L132.2439,321.531L132.3389,277.521L106.1369,277.544L106.13

69,196.998C108.5049,196.531,110.2929,194.447,110.2929,191.943C110.2929

,189.439,108.5049,187.355,106.1369,186.888L106.1369,155.162L592.3749,1

55.162L592.3749,186.871C589.9259,187.27,588.0509,189.38,588.0509,191.9

43C588.0509,191.991,588.0639,192.036,588.0649,192.083C588.0029,251.216

Page 222: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 38

,568.2979,263.085,568.2979,299.387C568.2979,341.531,588.0289,352.882,5

88.0659,406.822C588.0649,406.873,588.0509,406.919,588.0509,406.969C588

.0509,409.548,589.9499,411.666,592.4229,412.045L592.4229,445.02z

M593.2059,197.099C594.4039,197.099,595.4939,196.673,596.3699,195.986C5

95.9299,229.062,590.2919,244.43,585.2929,258.039C581.0859,269.49,577.1

119,280.306,577.1119,299.387C577.1119,321.718,581.3139,332.719,585.760

9,344.365C590.7839,357.518,595.9669,371.111,596.3719,402.928C595.4959,

402.24,594.4049,401.814,593.2059,401.814C591.9999,401.814,590.9049,402

.245,590.0269,402.939C589.5399,376.374,584.2699,360.605,579.1609,345.3

38C574.6039,331.714,570.2979,318.846,570.2979,299.387C570.2979,283.755

,573.9949,272.849,578.2759,260.221C583.5689,244.608,589.5359,226.991,5

90.0289,195.976C590.9069,196.668,592.0009,197.099,593.2059,197.099

M700.9809,169.922C700.9809,169.728,700.9109,169.559,700.8169,169.406L7

00.8169,158.168C700.9289,156.635,700.9809,155.361,700.9809,154.162C700

.9809,124.222,676.6219,99.864,646.6819,99.864C617.0759,99.864,592.9289

,123.682,592.3929,153.162L104.1369,153.162L104.1369,186.888C101.7689,1

87.353,99.9809,189.437,99.9809,191.943C99.9809,194.448,101.7689,196.53

3,104.1369,196.998L104.1369,279.546L130.3349,279.523L130.2479,319.533L

104.1369,319.559L104.1369,401.914C101.7689,402.38,99.9809,404.465,99.9

809,406.969C99.9809,409.475,101.7689,411.559,104.1369,412.023L104.1369

,447.02L592.3919,447.02C592.8869,476.535,617.0509,500.395,646.6819,500

.395C676.6219,500.395,700.9809,476.037,700.9809,446.098C700.9809,444.8

96,700.9289,443.623,700.8189,442.162L700.8189,429.078L700.8189,429.077

L700.8189,404.957C700.9119,404.805,700.9809,404.637,700.9809,404.445C7

00.9809,404.254,700.9119,404.084,700.8189,403.933L700.8169,195.367C700

.9109,195.214,700.9809,195.044,700.9809,194.851C700.9809,194.658,700.9

109,194.488,700.8169,194.335L700.8169,170.438C700.9109,170.285,700.980

9,170.115,700.9809,169.922" Canvas.Left="0" Canvas.Top="0"/>

<Canvas x:Name="Zonas" Width="532.914" Height="376.898"

Canvas.Left="64.086" Canvas.Top="11">

<Path x:Name="z8" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="342.707" Height="28.605"

Data="F1M195.2651,395.3418C184.2651,395.3418,175.2651,388.9038,175.265

1,381.0388C175.2651,373.1718,184.2651,366.7368,195.2651,366.7368L497.9

721,366.7368C508.9721,366.7368,517.9721,373.1738,517.9721,381.0388C517

.9721,388.9058,508.9721,395.3418,497.9721,395.3418z"

Canvas.Left="11.646" Canvas.Top="255.057" Style="{DynamicResource

ZonaPathStyle}" MouseLeftButtonUp="OnClicked_z8"

MouseMove="OnMouseMove_z8" MouseLeave="OnMouseLeave_z8"></Path>

<Path x:Name="z11" Fill="{DynamicResource ZonaDimmer}" Stretch="Fill"

Width="366" Height="57.303"

Data="F1M183.6187,328.7539C172.6187,328.7539,163.6187,319.7539,163.618

7,308.7539L163.6187,291.4529C163.6187,280.4529,172.6187,271.4529,183.6

187,271.4529L509.6187,271.4549C520.6187,271.4549,529.6187,280.4549,529

.6187,291.4549L529.6187,308.7559C529.6187,319.7559,520.6187,328.7559,5

09.6187,328.7559z" Canvas.Left="0" Canvas.Top="159.773"

Style="{DynamicResource ZonaPathStyle}"

MouseLeftButtonUp="OnClicked_z11" MouseMove="OnMouseMove_z11"

MouseLeave="OnMouseLeave_z11"/>

<Path x:Name="z9" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="342.707" Height="28.606"

Data="F1M195.2651,233.4722C184.2651,233.4722,175.2651,227.0362,175.265

1,219.1692C175.2651,211.3032,184.2651,204.8672,195.2651,204.8672L497.9

721,204.8682C508.9721,204.8682,517.9721,211.3042,517.9721,219.1702C517

.9721,227.0372,508.9721,233.4732,497.9721,233.4732z"

Canvas.Left="11.646" Canvas.Top="91.187" Style="{DynamicResource

ZonaPathStyle}" MouseLeftButtonUp="OnClicked_z9"

MouseMove="OnMouseMove_z9" MouseLeave="OnMouseLeave_z9"/>

<Path x:Name="z5" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="36.128" Height="173.568"

Page 223: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 39

Data="F1M623.4648,382.6895C623.4648,385.4395,621.2148,387.6895,618.464

8,387.6895L610.6448,387.6895C607.8948,387.6895,604.9558,385.5465,604.1

138,382.9295C604.1138,382.9295,587.3368,330.7555,587.3368,300.9055C587

.3368,271.0555,603.9998,218.8845,603.9998,218.8845C604.8368,216.2645,6

07.7718,214.1215,610.5218,214.1215L618.4648,214.1215C621.2148,214.1215

,623.4648,216.3715,623.4648,219.1215z" Canvas.Left="423.718"

Canvas.Top="102.441" Style="{DynamicResource ZonaPathStyle}" Tag="6"

MouseLeftButtonUp="OnClicked_z5" MouseMove="OnMouseMove_z5"

MouseLeave="OnMouseLeave_z5"/>

<Path x:Name="z1" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="83.93" Height="74.003"

Data="F1M655.4082,185.6831C658.3132,185.6831,659.9302,183.3881,659.930

2,180.1561C659.9302,178.5101,659.9112,174.8041,659.8992,170.6641C659.8

992,167.6401,661.2952,166.0141,663.7982,166.0141C663.7982,166.0141,683

.9082,165.9731,685.4082,165.9731C687.5172,165.9731,688.6812,164.9631,6

88.6812,162.5611L688.6812,156.7431C688.7562,155.7191,688.8082,154.6881

,688.8082,153.6451C688.8082,130.4691,670.0202,111.6801,646.8432,111.68

01C623.6672,111.6801,604.8782,130.4691,604.8782,153.6451L604.8782,179.

3941C604.8782,183.0441,607.5712,185.6831,611.0912,185.6831z"

Canvas.Left="441.259" Canvas.Top="0" MouseLeftButtonUp="OnClicked_z1"

Tag="2" Style="{DynamicResource ZonaPathStyle}"

MouseMove="OnMouseMove_z1" MouseLeave="OnMouseLeave_z1"/>

<Path x:Name="z2" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="30.822" Height="19.538"

Data="F1M665.7109,176.2271C665.7109,174.5771,667.0609,173.2281,668.710

9,173.2291L693.5329,173.2451C695.1839,173.2461,696.5329,174.5971,696.5

329,176.2471L696.5299,189.7671C696.5299,191.4171,695.1809,192.7671,693

.5299,192.7671L668.7109,192.7671C667.0609,192.7671,665.7109,191.4171,6

65.7109,189.7671z" Canvas.Left="502.092" Canvas.Top="61.549"

Style="{DynamicResource ZonaPathStyle}" Tag="3"

MouseLeftButtonUp="OnClicked_z2" MouseMove="OnMouseMove_z2"

MouseLeave="OnMouseLeave_z2"/>

<Path x:Name="z6" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="83.93" Height="74.002"

Data="F1M655.4082,414.5762C658.3132,414.5762,659.9302,416.8712,659.930

2,420.1032C659.9302,421.7482,659.9112,425.4552,659.8992,429.5962C659.8

992,432.6192,661.2952,434.2442,663.7982,434.2442C663.7982,434.2442,683

.9082,434.2852,685.4082,434.2852C687.5172,434.2852,688.6812,435.2952,6

88.6812,437.6972L688.6812,443.5152C688.7562,444.5392,688.8082,445.5702

,688.8082,446.6132C688.8082,469.7892,670.0202,488.5782,646.8432,488.57

82C623.6672,488.5782,604.8782,469.7892,604.8782,446.6132L604.8782,420.

8652C604.8782,417.2152,607.5712,414.5762,611.0912,414.5762z"

Canvas.Left="441.259" Canvas.Top="302.896" Style="{DynamicResource

ZonaPathStyle}" Tag="7" MouseLeftButtonUp="OnClicked_z6"

MouseMove="OnMouseMove_z6" MouseLeave="OnMouseLeave_z6"/>

<Path x:Name="z7" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="30.822" Height="19.537"

Data="F1M665.7109,424.0312C665.7109,425.6812,667.0609,427.0312,668.710

9,427.0292L693.5329,427.0132C695.1839,427.0132,696.5329,425.6622,696.5

329,424.0112L696.5299,410.4922C696.5299,408.8422,695.1809,407.4922,693

.5299,407.4922L668.7109,407.4922C667.0609,407.4922,665.7109,408.8422,6

65.7109,410.4922z" Canvas.Left="502.092" Canvas.Top="295.812"

Style="{DynamicResource ZonaPathStyle}" Tag="8"

MouseLeftButtonUp="OnClicked_z7" MouseMove="OnMouseMove_z7"

MouseLeave="OnMouseLeave_z7"/>

<Path x:Name="z3" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="28.437" Height="174.166"

Data="F1M694,367.4883C694,378.8103,687.635,387.9883,679.781,387.9883C6

71.929,387.9883,665.563,378.8103,665.563,367.4883L665.563,234.3223C665

.563,223.0013,671.929,213.8223,679.781,213.8223C687.635,213.8223,694,2

Page 224: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 40

23.0013,694,234.3223z" Canvas.Left="501.944" Canvas.Top="102.142"

Style="{DynamicResource ZonaPathStyle}" Tag="4"

MouseLeftButtonUp="OnClicked_z3" MouseMove="OnMouseMove_z3"

MouseLeave="OnMouseLeave_z3"/>

<Path x:Name="z4" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="28.437" Height="174.166"

Data="F1M658.7324,367.4883C658.7324,378.8103,652.3674,387.9883,644.513

4,387.9883C636.6614,387.9883,630.2954,378.8103,630.2954,367.4883L630.2

954,234.3223C630.2954,223.0013,636.6614,213.8223,644.5134,213.8223C652

.3674,213.8223,658.7324,223.0013,658.7324,234.3223z"

Canvas.Left="466.677" Canvas.Top="102.142" Style="{DynamicResource

ZonaPathStyle}" Tag="5" MouseLeftButtonUp="OnClicked_z4"

MouseMove="OnMouseMove_z4" MouseLeave="OnMouseLeave_z4"/>

<Path x:Name="z10" Fill="{DynamicResource ZonaNormalColor}"

Stretch="Fill" Width="342.707" Height="28.606"

Data="F1M195.2651,233.4722C184.2651,233.4722,175.2651,227.0362,175.265

1,219.1692C175.2651,211.3032,184.2651,204.8672,195.2651,204.8672L497.9

721,204.8682C508.9721,204.8682,517.9721,211.3042,517.9721,219.1702C517

.9721,227.0372,508.9721,233.4732,497.9721,233.4732z"

Canvas.Left="11.646" Canvas.Top="125.187" Style="{DynamicResource

ZonaPathStyle}" MouseLeftButtonUp="OnClicked_z10"

MouseMove="OnMouseMove_z10" MouseLeave="OnMouseLeave_z10"/>

</Canvas>

</Canvas>

</Viewbox>

<Popup x:Name="popDimmers" AllowsTransparency="True"

PopupAnimation="Fade" HorizontalAlignment="Right" Grid.Column="1"

Grid.Row="1" d:LayoutOverrides="HorizontalAlignment">

<Border Margin="0" BorderBrush="Black" BorderThickness="1"

CornerRadius="5" Background="{DynamicResource AppControlBackground}">

<StackPanel Margin="0">

<Grid Margin="4,8,4,0" Height="90">

<ProgressBar Orientation="Vertical" Value="{Binding Value,

ElementName=slDimmer, Mode=OneWay}"/>

<Slider x:Name="slDimmer" Orientation="Vertical" Maximum="100"

SmallChange="1" ValueChanged="slDimmer_OnValueChanged"

Margin="6,0,3.667,0" AutoToolTipPlacement="TopLeft" Cursor="Hand"

TickFrequency="25" TickPlacement="TopLeft"

LostMouseCapture="slDimmer_OnMouseLost"/>

</Grid>

</StackPanel>

</Border>

</Popup>

<Popup x:Name="popSwitch" AllowsTransparency="True"

PopupAnimation="Fade" Margin="0,0,-37,0">

<Border BorderBrush="Black" BorderThickness="1"

Background="{DynamicResource AppControlBackground}" CornerRadius="5"

Height="72.625">

<StackPanel Margin="0">

<TextBlock TextWrapping="Wrap" Height="14.085"

TextAlignment="Center"/>

<Button x:Name="btnSwitch" Style="{DynamicResource IconButtonStyle}"

Width="40" Height="46" Click="btnSwitch_OnClick">

<Image x:Name="imgSwitch" Source="Img/sw_off.png"></Image>

</Button>

</StackPanel>

</Border>

</Popup>

<Popup x:Name="popTooltip" AllowsTransparency="True"

PopupAnimation="Fade" Margin="0,0,-37,0">

Page 225: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 41

<Border Width="82" Height="40" BorderBrush="Black" BorderThickness="1"

CornerRadius="5">

<Border.Background>

<LinearGradientBrush MappingMode="RelativeToBoundingBox"

EndPoint="0.5,1" StartPoint="0.5,0">

<GradientStop Color="#FFEAE6C2" Offset="0"/>

<GradientStop Color="#FFF0EBC0" Offset="1"/>

</LinearGradientBrush>

</Border.Background>

<StackPanel Margin="-1" Height="32">

<TextBlock x:Name="txZona" Margin="4,0,0,0" Height="16"

Text="TextBlock" TextWrapping="Wrap" FontWeight="Bold"/>

<TextBlock x:Name="txValor" Margin="4,0,0,0" Height="16" Text="No

disponible" TextWrapping="Wrap"/>

</StackPanel>

</Border>

</Popup>

</Grid>

</Window>

2.5.6. Código XAML de estilos

<Application.Resources>

<!-- Resources scoped at the Application level should be defined here.

-->

<!--

ESTILO DE ICONOS PARA TOOLBAR

-->

<Style x:Key="IconButtonStyle"

TargetType="{x:Type Button}">

<!-- valores por defecto -->

<Setter Property="Background"

Value="Transparent" />

<Setter Property="BorderBrush"

Value="Transparent" />

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="{x:Type Button}">

<Border x:Name="border"

Height="{TemplateBinding Height}"

Width="{TemplateBinding Width}"

SnapsToDevicePixels="True"

Background="{TemplateBinding Background}"

BorderBrush="{TemplateBinding BorderBrush}"

BorderThickness="1"

Padding="0"

CornerRadius="3,3,3,3">

<Border x:Name="innerBorder"

SnapsToDevicePixels="True"

BorderThickness="1"

Padding="2"

CornerRadius="3,3,3,3">

<ContentPresenter SnapsToDevicePixels="{TemplateBinding

SnapsToDevicePixels}"

HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"

Page 226: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 42

VerticalAlignment="{TemplateBinding VerticalContentAlignment}"

RecognizesAccessKey="True"

Margin="{TemplateBinding Padding}">

<ContentPresenter.Effect>

<DropShadowEffect x:Name="shadow"

ShadowDepth="2"

Opacity="0.7"

BlurRadius="3" />

</ContentPresenter.Effect>

<ContentPresenter.RenderTransform>

<TranslateTransform x:Name="translation"

X="-1"

Y="-1" />

</ContentPresenter.RenderTransform>

</ContentPresenter>

</Border>

</Border>

<ControlTemplate.Triggers>

<Trigger Property="IsKeyboardFocused"

Value="true">

<Setter TargetName="innerBorder"

Property="BorderBrush"

Value="#ff06cdff" />

<Setter Property="Background"

Value="LightBlue" />

</Trigger>

<Trigger Property="IsMouseOver"

Value="true">

<Setter Property="Background"

Value="LightBlue" />

</Trigger>

<Trigger Property="IsEnabled"

Value="false">

<Setter Property="Opacity"

Value="0.5" />

</Trigger>

<Trigger Property="IsPressed"

Value="True">

<!-- La animacion cuando presione el boton -->

<Trigger.EnterActions>

<BeginStoryboard>

<Storyboard>

<DoubleAnimation Duration="0:0:0"

To="0"

Storyboard.TargetName="shadow"

Storyboard.TargetProperty="(DropShadowEffect.ShadowDepth)" />

<DoubleAnimation Duration="0:0:0"

To="0"

Storyboard.TargetName="translation"

Storyboard.TargetProperty="(TranslateTransform.X)" />

<DoubleAnimation Duration="0:0:0"

To="0"

Storyboard.TargetName="translation"

Storyboard.TargetProperty="(TranslateTransform.Y)" />

</Storyboard>

</BeginStoryboard>

</Trigger.EnterActions>

<Trigger.ExitActions>

Page 227: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 43

<BeginStoryboard>

<Storyboard>

<DoubleAnimation Duration="0:0:0"

To="1"

Storyboard.TargetName="shadow"

Storyboard.TargetProperty="(DropShadowEffect.ShadowDepth)" />

<DoubleAnimation Duration="0:0:0"

To="-1"

Storyboard.TargetName="translation"

Storyboard.TargetProperty="(TranslateTransform.X)" />

<DoubleAnimation Duration="0:0:0"

To="-1"

Storyboard.TargetName="translation"

Storyboard.TargetProperty="(TranslateTransform.Y)" />

</Storyboard>

</BeginStoryboard>

</Trigger.ExitActions>

</Trigger>

</ControlTemplate.Triggers>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

<!--

COLORES PARA LAS ZONAS

Y EL EVENTO

-->

<SolidColorBrush x:Key="ZonaNormalColor" Color="#FFB0EF6B"/>

<SolidColorBrush x:Key="ZonaApagado" Color="White" />

<LinearGradientBrush x:Key="ZonaDimmer" EndPoint="0.5,1"

StartPoint="0.5,0" SpreadMethod="Repeat">

<GradientStop Color="#FF491717" Offset="0"/>

<GradientStop Color="#FF838383" Offset="1"/>

</LinearGradientBrush>

<SolidColorBrush x:Key="ZonaBorderColor" Color="#FF2419D2"/>

<SolidColorBrush x:Key="ZonaBorderDisableColor" Color="#FFC8C8C8"/>

<SolidColorBrush x:Key="ZonaFillColor" Color="#FF9D9D9D"/>

<SolidColorBrush x:Key="AppControlBackground" Color="#FFBBCFE0" />

<SolidColorBrush x:Key="AppBackground" Color="#FF668F9F"/>

<!--

Estilo para las zonas

-->

<Style x:Key="ZonaPathStyle" TargetType="{x:Type Path}">

<Setter Property="Stroke" Value="Transparent" />

<Setter Property="Fill" Value="{DynamicResource ZonaNormalColor}"/>

<Style.Triggers>

<Trigger Property="IsMouseOver" Value="True">

<Setter Property="Stroke" Value="{DynamicResource ZonaBorderColor}"/>

</Trigger>

<Trigger Property="Data" Value="{x:Null}"/>

</Style.Triggers>

</Style>

</Application.Resources>

Page 228: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Cliente Revisión 1.1 Enero 2012

Manual Técnico - 44

2.6. Plataforma de Usuario

Hardware

- Procesador Pentium 1GHz o equivalente

- RAM: 256 MB

- Disco Duro: 500 MB*

- Unidad CD o DVD

- Monitor: 800 x 600, 256 colors

- 1 Ranura USB (para el controlador USB)

- 1 Tarjeta de Red (en caso de funcionar en red )

Software

- Microsoft Windows XP

- Microsoft .Net Framework 3.5 SP1

Page 229: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Manual Técnico

Control de Luces - Cliente

Elaborado por: Chimbo Leonardo Salazar Eduardo

Page 230: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 1

Contenido

1. INTRODUCCIÓN……………………………………………………………………………………………………………………….…….……2

2. CONTENIDO TÉCNICO……………………………………………………………………………………………………………….…….…..2

2.1. DIAGRAMAS DE FLUJO DE DATOS…………………………………………………………………………….……………2

2.2. CONTROLES DE AUDITORIA IMPLEMENTADOS EN EL SISTEMA……………………………………….……11

2.3. MAPA DE NAVEGACIÓN……………………………………………………………………………………………….………11

2.4. DESCRIPCIÓN GRÁFICA DEL MAPA DE NAVEGACIÓN…………………………………………………….……..11

2.4.1. PANTALLA INICIAL……………………………………………………………………………………………………………….…..11

2.4.2 RED Z-WAVE………………………………………………………………………………………………………………….…….……12

2.4.3. OPCIONES…………………………………………………………………………………………………………………….….………13

2.5. CAMPOS REQUERIDOS………………………………………………………………………………………………..……….14

2.6. PROCESOS………………………………………………………………………………………………………………….………..15

2.6.1. PANTALLA PRINCIPAL Y CONEXIONES……………………………………………………………….………..15

2.6.2. RED Z-WAVE……………………………………………………………………………………………….……………..24

2.6.3. OPCIONES……………………………………………………………………………………………………….………….35

2.6.4. MODULO CONTRASEÑA……………………………………………………………………………………………………….………..40

2.7. PLATAFORMA DE USUARIO………………………………………………………………………………………….………42

Page 231: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 2

1. Introducción

Control de Luces – Servidor, es un módulo para el control de la intensidad de las luces

del aula magna de la PUCESD haciendo uso de la tecnología Z-Wave para el acceso a

dispositivos, controladores y Microsoft .Net Framework 3.5 conjuntamente con el

lenguaje de programación C# para la interacción con el usuario.

Este módulo está diseñado para trabajar en red de forma asíncrona, dando la posibilidad

de que varios usuarios se puedan conectar al servidor.

Con este módulo controlamos dos aspectos fundamentales:

- Red Z-Wave

o Esta red es la que nos permite acceder a los dispositivos que

encienden, apagan y regular la intensidad de las luces.

- Conexión de Red

o Envió/recepción de mensajes de control a través de la red.

2. Contenido Técnico

2.1. Diagramas de Flujo de Datos

Como la programación Windows es orienta a eventos, nuestro sistema cuando este

en ejecución responderá a los siguientes eventos.

Page 232: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 3

1.E

sta

ble

ce

r

Co

ne

xió

n d

e R

ed

Inic

iar

2.

Co

ne

cta

rse

a la

Re

d

Z-W

ave

Va

lor

No

do

s

3.

ES

PE

RA

R

CO

NE

XIO

NE

S

Al m

om

ento

de

inic

iar

el s

erv

ido

r

Page 233: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 4

Diccionario de Datos - Al momento de iniciar el servidor

Variable Tipo Descripcion

portStr string Obtiene el valor del ultimo puerto

guardo en el archivo de configuracion

port int Recibira la conversion de la varible

“portStr”

ipLocal IPEndPoint Esta varible permite asociar tanto la

direccion ip como el numero de puerto,

es decir un IP Compuesto.

Ej: 192.168.1.100:8990

m_mainSocket Socket Variable para crear la conexión de red

principal

m_ZWaveController ZWaveController Variable para el acceso al controlador

de la red Z-Wave

Page 234: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 5

Cu

and

o u

n c

lien

te s

e c

on

ecta

al s

ervi

do

r:

1. V

erifica

r L

ista

Co

ne

xio

ne

s

CL

IEN

TE

Inse

rta

r C

on

exió

n

Ag

reg

ar

Co

ne

xió

n

2.

Re

cib

ir M

en

sa

je

3.

De

co

dific

ar

Me

nsa

je4

. G

en

era

r

Lis

ta d

e N

od

os

5.

En

via

r

Lis

ta d

e N

od

os

Me

nsa

je

Page 235: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 6

Diccionario de Datos - Cuando un cliente se conecta al server:

Variable Tipo Descripcion

workerSocket Socket Una conexión para el cliente.

nextClientCount int Es el indice que ocupara el cliente

cuando se conecte.

m_workerSocketList ArrayList Es la Lista de usuarios conectados al

servidor.

msg string El mensaje que se registrara en el

listado de eventos.

socketData SocketPacket Clase auxiliar para el proceso de la

extración de los mensajes de control

enviados por la red.

iRx int Numero de caracteres que envio el

cliente.

chars Char[] La secuencia de caracteres que se

obtendra.

d Decoder Especifica el tipo decodificion de

mensaje.

charLen int Es el resulta de la decoficacion de la

sequencia de bytes a caracteres.

szData string Recibe el mensaje decoficado en forma

de cadena de caracteres.

replyMsg String El mensaje que se enviara de respuesta

byData byte[] Recibe la codificacion del mensaje

generado para enviarlo por la red.

mensajepartes string[] Una lista de los comandos recibos.

zonas StringBuilder Genera la cadena de la lista de nodos

Properties.

Settings.

Default

Settings Maneja el archivo de configuracion

Page 236: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 7

1.

Re

cib

ir M

en

sa

je2

. D

eco

dific

ar

Me

nsa

je

3.

Eje

cu

tar

Co

ma

nd

o

CL

IEN

TE

Me

nsa

jeM

en

sa

je

Co

ma

nd

o

Co

ma

nd

o

M

en

sa

je

4.

Ge

ne

rar

y E

nvia

r M

en

sa

je

Cu

and

o r

ecib

imo

s u

n m

ensa

je d

e co

ntr

ol d

e u

n c

lien

te c

on

ecta

do

:

Page 237: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 8

Diccionario de Datos - Cuando recibimos un mensaje de control de un cliente conectado:

Variable Tipo Descripcion

msg string El mensaje que se registrara en el

listado de eventos.

socketData SocketPacket Clase auxiliar para el proceso de la

extración de los mensajes de control

enviados por la red.

iRx int Numero de caracteres que envio el

cliente.

chars Char[] La secuencia de caracteres que se

obtendra.

d Decoder Especifica el tipo decodificion de

mensaje.

charLen int Es el resulta de la decoficacion de la

sequencia de bytes a caracteres.

szData string Recibe el mensaje decoficado en forma

de cadena de caracteres.

replyMsg String El mensaje que se enviara de respuesta

byData byte[] Recibe la codificacion del mensaje

generado para enviarlo por la red.

mensajepartes string[] Una lista de los comandos recibos.

valor int Indica encender o apagar todos los

nodos

nodo string Especifica el nodo al cual se cambiara

su valor

valor string El nuevo valor a cambiar al nodo

device ZWaveDevice Para acceder a la lista de nodos en el

controlador

Page 238: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 9

1.

Co

ne

cta

r a

la

Re

d Z

-

Wa

ve

VA

LO

R N

OD

OS

2.4

Bo

rra

r

US

B

2.1

Ag

reg

ar

No

do

s

2.2

Qu

ita

r

No

do

s

Zo

na

s y

No

do

s

Re

d Z

-Wa

ve

2. A

CC

ION

D

EL

US

UA

RIO

Cu

and

o a

dm

inis

tram

os

la R

ed Z

-Wav

e

Page 239: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 10

Diccionario de Datos: Cuando administramos la Red Z-Wave

Variable Tipo Descripcion

m_ZWaveController ZWaveController Variable para el acceso al

controlador de la red Z-Wave

i int Iteracion con la lista de nodos.

idnodo string La identificacion del nodo en la red.

valor string El valor actual del nodo.

tiponodo string El tipo del nodo.

tipobjeto String Transforma el tipo del nodo a cadena

de caracteres

listatipos String[] Divide la cadena de caracteres en

partes para obtener el tipo de nodo

tipo Object Recibe el tipo de nodo

m_listedNodes string[] Una lista de los nodos que se

asignaran en las zonas.

device ZWaveDevice Para acceder a cada nodo de la red Z-

Wave

lstNodos StringCollection Recibe la lista de nodos que se

asignaran a las zonas.

lstNodosGuardados StringCollection Carga los nodos que se han asignado a

las zonas

zonaIndex TextBox Indica a que zona se le debe asignar

dicho nodo

Properties.

Settings.

Default

Settings Manejar el archivo de configuracion

Page 240: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 11

2.2. Controles de auditoria implementados en el sistema.

Cada vez que sucede un evento en el sistema ya sea por la interacción con los clientes o

la administración de la Red Z-Wave, se enviara esta información a sección “Eventos” en

la pestaña de “Conexiones”:

Fig. 2.2 – 1

Nota: Este registro de eventos puede ser activado o desactivado desde la pestaña

“Opciones” en la Pantalla Principal.

2.3. Mapa de Navegación

El mapa de navegación muestra de forma gráfica la interconexión

entre cada una de las pantallas del sistema, lo que serviría para saber

cómo llegar a determinada parte de la aplicación.

PANTALLA INICIAL

CONEXIONES RED Z-WAVE OPCIONES

ZONAS Y NODOS

Fig. 2.3 – 1

2.4. Descripción gráfica del mapa de navegación

En esta sección indicamos cada una de las pantallas que mencionamos en el Mapa de

Navegación.

2.4.1. Pantalla Inicial

Page 241: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 12

En esta figura se muestra la pantalla principal y la pantalla de conexiones.

Fig. 2.4.1 – 1

2.4.2. Red Z-Wave

Fig. 2.4.2 - 1

Page 242: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 13

2.4.2.1. Zonas y Nodos

Fig. 2.4.2.1 - 1

2.4.3. Opciones

Fig. 2.4.3 – 1

Page 243: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 14

2.5. Campos Requeridos

Para que la aplicación pueda ejecutarse se deben tomar en cuenta estos dos campos

que se pueden encontrar en la pestaña de “Opciones”

Fig. 2.5 – 1

Dirección IP: Especifica la dirección IP que usará el servidor para crear la conexión con

los clientes, este valor se obtiene listando las dirección IP que tenga el computador; es

decir solo tenemos que seleccionar la que necesitemos usar.

Puerto: El número de puerto de red es un valor numérico teniendo en cuenta la

siguiente tabla:

Rango Descripción

< 1024 Son puertos reservados para el sistema operativo y son usados

por "protocolos bien conocidos".

1024 y 49151 Son denominados "registrados" y pueden ser usados por

cualquier aplicación.

49152 y 65535 Son denominados dinámicos o privados, porque son los usados

por el sistema operativo cuando una aplicación tiene que

conectarse a un servidor y por tanto necesita un puerto por

donde salir.

Fig. 2.5 - 2

En nuestro caso, el servidor aceptará cualquier valor comprendido entre 1024 y 49151

Los valores predefinidos de estos campos son:

Campo Valor

Dirección IP “Por Defecto”

Puerto 8990

Fig. 2.5 – 3

Page 244: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 15

2.6. Procesos

2.6.1. Pantalla Principal y Conexiones

Detallamos las funciones y procedimientos que controlan cada uno de estos

elementos

Fig. 2.6.1 - 1

Variables y Métodos:

// El objeto ZwaveController que nos permite conectarnos a la Red Z-Wave

private ControlThink.ZWave.ZWaveController m_ZWaveController = new

ControlThink.ZWave.ZWaveController();

// Funciones delegadas para la actualiazion de campos desde otro hilo de

// trabajo que no sea el hilo principal

public delegate void UpdateRichEditCallback(string text);

public delegate void UpdateClientListCallback();

// El Metodo que se llamara cuando exista envio de informacion de algun

// cliente.

public AsyncCallback pfnWorkerCallBack;

// La conexion de red principal

private Socket m_mainSocket;

// Una lista usada para mantener las conexiones con cada clientes conectado

// Esta sincronizada para trabajar en subprocesos

private System.Collections.ArrayList m_workerSocketList =

Page 245: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 16

ArrayList.Synchronized(new System.Collections.ArrayList());

// La siguiente varibale es incrementada cuando un nuevo cliente se conecta

private int m_clientCount = 0;

// Contiene la lista de nodos que estan en la red Z-Wave

// Esta lista se enviara para la asignacion de zonas/nodos

private string [] m_listedNodes;

Funciones y procedimientos

/// <summary>

/// Cargamos las opciones desde el archivo de configuracion.

/// </summary>

private void ConsolaPrincipal_Load(object sender, EventArgs e)

{

cbIP.Text = Properties.Settings.Default.ultimaIP;

txPuerto.Text = Properties.Settings.Default.puerto;

ckLogging.Checked = Properties.Settings.Default.logging;

tPolling.Interval =

Convert.ToInt16(Properties.Settings.Default.polling)*60000;

if (tPolling.Interval == 0)

tPolling.Enabled = false;

else

tPolling.Enabled = true;

GetIP();

if (String.IsNullOrEmpty(Properties.Settings.Default.appClave))

{

nIcon.Visible = false;

MessageBox.Show("Es necesario proporcionar una contraseña de

seguridad para algunas funciones de administración.", "Control de Luces -

Servidor", MessageBoxButtons.OK, MessageBoxIcon.Information);

this.MinimizeBox = false;

btCambiar.Text = "Asignar";

txPuerto.Enabled = false;

cbIP.Enabled = false;

ckLogging.Enabled = false;

txPActual.Enabled = false;

txPolling.Enabled = false;

btnGOpciones.Enabled = false;

btnRestaurar.Enabled = false;

cmdGo.Enabled = false;

txPNueva.Focus();

tabControles.TabPages.RemoveByKey("tabZwave");

tabControles.TabPages.RemoveByKey("tabPrincipal");

tabControles.SelectedIndex = 2;

tabControles.SelectedTab.Focus();

}

}

/// <summary>

/// Si la opcion de "Actualizar Clientes" esta activada

/// Este procedimiento enviara la informacion de los nodos a cada cliente

Page 246: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 17

/// </summary>

private void tPolling_Tick(object sender, EventArgs e)

{

if (m_mainSocket != null)

{

if (m_ZWaveController.IsConnected)

{

string srvReply;

Socket workerSocket = null;

srvReply = p_ExecuteCommand();

for (int i = 1; i <= m_workerSocketList.Count; i++)

{

workerSocket = (Socket)m_workerSocketList[i-1];

if (workerSocket != null)

{

SendMsgToClient(srvReply, i);

}

}

}

}

}

/// <summary>

/// Si la opcion "Registro de Eventos" esta activada

/// Este procedimiento guardara los eventos que se generaron cuando el

/// servidor estaba en ejecucion.

/// </summary>

private void ConsolaPrincipal_OnClosing(object sender, FormClosingEventArgs

e)

{

System.Text.StringBuilder namearchivo = new

System.Text.StringBuilder();

DateTime fecha;

if (Properties.Settings.Default.logging)

{

fecha = DateTime.Now;

namearchivo.Append(fecha.Year.ToString());

namearchivo.Append(fecha.Month.ToString());

namearchivo.Append(fecha.Day.ToString());

namearchivo.Append('_');

namearchivo.Append(fecha.Hour.ToString());

namearchivo.Append(fecha.Minute.ToString());

namearchivo.Append(fecha.Second.ToString());

namearchivo.Append(".txt");

AppendToRichEditControl("Guardando el registro de eventos.");

rtxMensajes.SaveFile("log\\"+ namearchivo.ToString(),

RichTextBoxStreamType.PlainText);

}

}

/// <summary>

/// Cargamos todas las direcciones IP que tenga el computador

/// </summary>

void GetIP()

{

String strHostName = Dns.GetHostName();

IPHostEntry iphostentry = Dns.GetHostEntry(strHostName);

Page 247: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 18

String IPStr = "";

cbIP.Items.Clear();

cbIP.Items.Add("Por Defecto");

cbIP.SelectedIndex = 0;

foreach (IPAddress ipaddress in iphostentry.AddressList)

{

// IPv4

if (ipaddress.AddressFamily == AddressFamily.InterNetwork)

{

cbIP.Items.Add(IPStr = ipaddress.ToString());

}

}

}

Fig. 2.6.1 – 2

/// <summary>

/// Este metodo será llamado por el hilo principal o por cualquier otro

/// </summary>

/// <param name="msg">Evento a registrar</param>

private void AppendToRichEditControl(string msg)

{

if (InvokeRequired)

{

// Cuando la peticion viene de otro lado que no sea el hilo

// principal

object[] pList = { msg };

rtxMensajes.BeginInvoke(new UpdateRichEditCallback(

OnUpdateRichEdit), pList);

}

else

{

// La peticion es directa desde el hilo principal

OnUpdateRichEdit(msg);

}

}

/// <summary>

/// Registra eventos

Page 248: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 19

/// </summary>

/// <param name="msg">Evento a registrar</param>

private void OnUpdateRichEdit(string msg)

{

string hora = DateTime.Now.ToShortTimeString() + ": ";

rtxMensajes.AppendText(hora + msg)

}

Fig. 2.6.1 – 3

/// <summary>

/// Actualizamos la lista de clientes conectados

/// </summary>

private void UpdateClientListControl()

{

if (InvokeRequired)

{

// Cuando la peticion viene de otro lado que no sea

// el hilo principal

lstClientes.BeginInvoke(new UpdateClientListCallback(

UpdateClientList), null);

}

else

{

// La peticion es directa desde el hilo principal

UpdateClientList();

}

}

/// <summary>

/// Actualizamos la lista de clientes en el listbox

/// </summary>

void UpdateClientList()

{

lstClientes.Items.Clear();

for (int i = 0; i < m_workerSocketList.Count; i++)

Page 249: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 20

{

string clientKey;

Socket workerSocket = (Socket)m_workerSocketList[i];

if (workerSocket != null)

{

if (workerSocket.Connected)

{

clientKey = ReturnIPFromClient(workerSocket, 0);

lstClientes.Items.Add(clientKey);

}

}

}

}

Fig. 2.6.1 – 4

/// <summary>

/// Iniciamos el servidor, primero creamos la conexion de red de modo

/// asincrono luego llamamos al procedimiento para conectarnos a la

/// red z-Wave,

/// </summary>

private void cmdGo_Click(object sender, EventArgs e)

{

try

{

string portStr = Properties.Settings.Default.puerto;

int port = System.Convert.ToInt32(portStr);

IPEndPoint ipLocal;

// se crea la conexion

m_mainSocket = new Socket(AddressFamily.InterNetwork,

SocketType.Stream,

ProtocolType.Tcp);

if (cbIP.Text == "Por Defecto")

ipLocal = new IPEndPoint(IPAddress.Any, port);

else

ipLocal = new IPEndPoint(IPAddress.Parse(cbIP.Text),

port);

// empezamos a escuchar peticiones

m_mainSocket.Bind(ipLocal);

m_mainSocket.Listen(4);

m_mainSocket.BeginAccept(new AsyncCallback(OnClientConnect),

null);

// iniciamos Red Z-wave

if (m_ZWaveController.IsConnected == false)

p_ZwaveConnect(1);

}

catch (SocketException se)

{

Page 250: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 21

AppendToRichEditControl("Error al conectarse, Error: " +

se.ErrorCode + System.Environment.NewLine);

}

}

/// <summary>

/// Este procedimiento puede ser llamando tanto para administrar la red,

/// como el inicio de conexiones

/// </summary>

/// <param name="opcion">0 Administracion, 1 Iniciar conexiones</param>

private void p_ZwaveConnect(int opcion)

{

if (m_ZWaveController.IsConnected == false)

{

cmdConectarDesconectar.Enabled = false;

try

{

// Conectamos al controlado

m_ZWaveController.Connect();

// Sincronizamos los objetos del controlador con este

// formulario para evitar problemas con los hilos de

// ejecucion

m_ZWaveController.SynchronizingObject = this;

if (opcion == 1)

{

UpdateControls(true);

AppendToRichEditControl("En espera de conexiones" +

System.Environment.NewLine);

}

else

AppendToRichEditControl("Administrando Red Z-Wave"+

System.Environment.NewLine);

}

catch (Exception ex)

{

MessageBox.Show("No se pude conectar con el controlador

USB." + System.Environment.NewLine + "Por favor

revise que el controlador USB este bien

conectado.", "Control de Luces",

MessageBoxButtons.OK,MessageBoxIcon.Information);

AppendToRichEditControl("Error al conectar a la Red Z-

Wave" + System.Environment.NewLine);

CloseSockets();

AppendToRichEditControl("Servidor detenido" +

System.Environment.NewLine );

}

finally

{

cmdConectarDesconectar.Enabled = true;

}

}

else

{

cmdConectarDesconectar.Enabled = false;

try

{

Page 251: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 22

m_ZWaveController.Disconnect();

}

catch

{

}

finally

{

cmdConectarDesconectar.Enabled = true;

}

}

UpdateConnectedState();

}

/// <summary>

/// Una vez conectados obtenemos la lista de dispostivos para mostrarlos

/// en el Datagrid

/// </summary>

private void UpdateConnectedState()

{

if (m_ZWaveController.IsConnected == true)

{

// Agregamos todos los dispositivos al grid

gridNodos.Rows.Clear();

int i = 0;

string idnodo, valor, tiponodo, tipobjeto;

string[] listatipos;

object tipo;

m_listedNodes = new string[m_ZWaveController.Devices.Count -1];

for (i = 0; i < m_ZWaveController.Devices.Count - 1; i++)

m_listedNodes[i] = "N/A";

i = 0;

foreach (ControlThink.ZWave.Devices.ZWaveDevice device in

m_ZWaveController.Devices)

{

idnodo = device.NodeID.ToString();

tipo = device.GetType().ToString().ToUpper();

try

{

if (String.IsNullOrEmpty(device.Level.ToString()))

valor = "N/A";

else

valor = device.Level.ToString();

}

catch

{ valor = "N/A"; }

tipobjeto = tipo.ToString();

listatipos = tipobjeto.Split('.');

tiponodo = listatipos[listatipos.Count()-1].ToString();

gridNodos.Rows.Add(idnodo, "", tiponodo, valor);

// Guardamos la lista de nodos para asignar a las zonas

if ( tiponodo =="MULTILEVELSCENESWITCH" || tiponodo ==

"BINARYSCENESWITCH" )

Page 252: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 23

{

m_listedNodes[i] = idnodo; i++;

}

}

cmdConectarDesconectar.Text = "&Desconectar";

}

else

cmdConectarDesconectar.Text = "&Conectar";

// Activamos o Desactivamos los botones segun corresponda.

cmdAgregar.Enabled = m_ZWaveController.IsConnected;

cmdQuitar.Enabled = m_ZWaveController.IsConnected;

cmdListado.Enabled = m_ZWaveController.IsConnected;

cmdUSB.Enabled = m_ZWaveController.IsConnected;

cmdZonas.Enabled = m_ZWaveController.IsConnected;

gridNodos.Enabled = m_ZWaveController.IsConnected;

}

Fig. 2.6.1 – 5

/// <summary>

/// Detenemos el servidor, cerrando conexiones y desconectando la red

/// z-Wave

/// </summary>

private void cmdStop_Click(object sender, EventArgs e)

{

AppendToRichEditControl("Cerrando conexiones." +

System.Environment.NewLine);

CloseSockets();

UpdateControls(false);

p_ZwaveConnect(0);

AppendToRichEditControl("Servidor detenido." +

System.Environment.NewLine);

}

Fig. 2.6.1 – 6

/// <summary>

/// TErminamos la aplicacion

/// </summary>

private void cmdCerrar_Click(object sender, EventArgs e)

{

m_ZWaveController.Disconnect();

CloseSockets();

Page 253: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 24

this.Close();

}

Fig. 2.6.1 – 7

/// <summary>

/// Cargamos el manual de usuario

/// </summary>

private void btnAyuda_Click(object sender, EventArgs e)

{

Lanzador.StartInfo.FileName = "Manual de Usuario.pdf";

Lanzador.Start();

}

2.6.1. Red Z-Wave

Fig. 2.6.2 – 1

Page 254: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 25

Fig. 2.6.2 – 2

/// <summary>

/// Llamamos al proceso para conectarnos a la red z-wave

/// </summary>

private void cmdConectarDesconectar_Click(object sender, EventArgs e)

{

p_ZwaveConnect(0);

}

/// <summary>

/// Este procedimiento puede ser llamando tanto para administrar la red,

/// como el inicio de conexiones

/// </summary>

/// <param name="opcion">0 Administracion, 1 Iniciar conexiones</param>

private void p_ZwaveConnect(int opcion)

{

if (m_ZWaveController.IsConnected == false)

{

cmdConectarDesconectar.Enabled = false;

try

{

// Conectamos al controlado

m_ZWaveController.Connect();

// Sincronizamos los objetos del controlador con este

// formulario para evitar problemas con los hilos de

// ejecucion

m_ZWaveController.SynchronizingObject = this;

if (opcion == 1)

{

UpdateControls(true);

AppendToRichEditControl("En espera de conexiones" +

System.Environment.NewLine);

}

else

AppendToRichEditControl("Administrando Red Z-Wave"+

System.Environment.NewLine);

}

catch (Exception ex)

{

MessageBox.Show("No se pude conectar con el controlador

USB." + System.Environment.NewLine + "Por favor

revise que el controlador USB este bien

conectado.", "Control de Luces",

MessageBoxButtons.OK,MessageBoxIcon.Information);

AppendToRichEditControl("Error al conectar a la Red Z-

Wave" + System.Environment.NewLine);

CloseSockets();

AppendToRichEditControl("Servidor detenido" +

System.Environment.NewLine );

}

Page 255: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 26

finally

{

cmdConectarDesconectar.Enabled = true;

}

}

else

{

cmdConectarDesconectar.Enabled = false;

try

{

m_ZWaveController.Disconnect();

}

catch

{

}

finally

{

cmdConectarDesconectar.Enabled = true;

}

}

UpdateConnectedState();

}

/// <summary>

/// Una vez conectados obtenemos la lista de dispostivos para mostrarlos

/// en el Datagrid

/// </summary>

private void UpdateConnectedState()

{

if (m_ZWaveController.IsConnected == true)

{

// Agregamos todos los dispositivos al grid

gridNodos.Rows.Clear();

int i = 0;

string idnodo, valor, tiponodo, tipobjeto;

string[] listatipos;

object tipo;

m_listedNodes = new string[m_ZWaveController.Devices.Count -1];

for (i = 0; i < m_ZWaveController.Devices.Count - 1; i++)

m_listedNodes[i] = "N/A";

i = 0;

foreach (ControlThink.ZWave.Devices.ZWaveDevice device in

m_ZWaveController.Devices)

{

idnodo = device.NodeID.ToString();

tipo = device.GetType().ToString().ToUpper();

try

{

if (String.IsNullOrEmpty(device.Level.ToString()))

valor = "N/A";

else

valor = device.Level.ToString();

}

catch

Page 256: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 27

{ valor = "N/A"; }

tipobjeto = tipo.ToString();

listatipos = tipobjeto.Split('.');

tiponodo = listatipos[listatipos.Count()-1].ToString();

gridNodos.Rows.Add(idnodo, "", tiponodo, valor);

// Guardamos la lista de nodos para asignar a las zonas

if ( tiponodo =="MULTILEVELSCENESWITCH" || tiponodo ==

"BINARYSCENESWITCH" )

{

m_listedNodes[i] = idnodo; i++;

}

}

cmdConectarDesconectar.Text = "&Desconectar";

}

else

cmdConectarDesconectar.Text = "&Conectar";

// Activamos o Desactivamos los botones segun corresponda.

cmdAgregar.Enabled = m_ZWaveController.IsConnected;

cmdQuitar.Enabled = m_ZWaveController.IsConnected;

cmdListado.Enabled = m_ZWaveController.IsConnected;

cmdUSB.Enabled = m_ZWaveController.IsConnected;

cmdZonas.Enabled = m_ZWaveController.IsConnected;

gridNodos.Enabled = m_ZWaveController.IsConnected;

}

Fig. 2.6.2 – 3

/// <summary>

/// Borramos la configuracion del controlador USB

/// </summary>

private void cmdUSB_Click(object sender, EventArgs e)

{

Clave wndClave = new Clave("¿Estas seguro de resetear el ontrolador

USB?\n \n" + "NOTA: Esta operación borrará todas las configuraciones

del controlador");

wndClave.ShowDialog();

if (Properties.Settings.Default.retClave == "rcOK")

{

m_ZWaveController.HardReset();

MessageBox.Show("Controlador USB restablecido", "Control de

Luces", MessageBoxButtons.OK, MessageBoxIcon.Information);

UpdateNetwork();

DataGridShow();

Properties.Settings.Default.retClave = "rcNULL";

Properties.Settings.Default.Save();

}

Page 257: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 28

}

Fig. 2.6.2 – 4

/// <summary>

/// Funcion para agregar nuevos nodos a la red z-Wave

/// NOTAS:

/// - Esta llamada que provoca un bloqueo hasta que se detecte el

/// dispositivo

/// - Si agrega un nodo que esta en la lista, devolvera el ID

/// correspondiente

/// </summary>

private void cmdAgregar_Click(object sender, EventArgs e)

{

lbNotificacion.Visible = true;

if (MessageBox.Show("Presione Aceptar y despues pulse un boton en el

dispositivo para agregar." + System.Environment.NewLine +

System.Environment.NewLine + "NOTA: El controlador USB deberia estar

a menos de 2 metros del dispositivo que estas agregando.", "Control

de Luces", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) ==

DialogResult.OK)

{

try

{

// Bloqueo hasta que se detecte el dispositivo

ControlThink.ZWave.Devices.ZWaveDevice device =

m_ZWaveController.AddDevice();

device.PollEnabled = true;

MessageBox.Show("Nodo #: " + device.NodeID + " agregado

satisfactoriamente.", "Control de Luces",

MessageBoxButtons.OK, MessageBoxIcon.Information);

AppendToRichEditControl("Nodo #: " + device.NodeID + "

agregado" + System.Environment.NewLine);

lbNotificacion.Visible = false;

UpdateConnectedState();

}

catch (Exception ex)

{

MessageBox.Show("Ocurio un error al añadir el dispositivo.",

"Control de Luces", MessageBoxButtons.OK,

MessageBoxIcon.Error);

lbNotificacion.Visible = false;

}

}

}

Page 258: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 29

Fig.2.6.2. – 5

/// <summary>

/// Funcion para quitar nodos de la red z-wave

/// NOTAS:

/// - Esta llamada que provoca un bloqueo hasta que se detecte el

/// dispositivo

/// </summary>

private void cmdQuitar_Click(object sender, EventArgs e)

{

lbNotificacion.Visible = true;

if (MessageBox.Show("Presione Aceptar y despues pulse un boton en el

dispositivo para quitar." + System.Environment.NewLine +

System.Environment.NewLine + "NOTA: El controlador USB deberia

estar a menos de 2 metros del dispositivo que estas quitando.",

"Control de Luces", MessageBoxButtons.OKCancel,

MessageBoxIcon.Information) == DialogResult.OK)

{

try

{

ControlThink.ZWave.Devices.ZWaveDevice device =

m_ZWaveController.RemoveDevice();

if (device != null)

{

lbNotificacion.Visible = false;

MessageBox.Show("Nodo #: " + device.NodeID + "

quitado.", "Control de Luces",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

AppendToRichEditControl("Nodo #: " + device.NodeID

+ " quitado" + System.Environment.NewLine);

UpdateConnectedState();

}

else

{

MessageBox.Show("Dispositivo reseteado.", "Control

de Luces", MessageBoxButtons.OK,

MessageBoxIcon.Information);

lbNotificacion.Visible = false;

}

}

catch (Exception ex)

{

MessageBox.Show("Ocurrio un error al quitar el

dispositivo.", "Control de Luces",

MessageBoxButtons.OK, MessageBoxIcon.Error);

lbNotificacion.Visible = false;

}

}

}

Page 259: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 30

Fig. 2.6.2 – 6

/// <summary>

/// Lanzamos el formulario para asignacion de Zonas,

/// enviamos como parametro la lista de nodos

/// </summary>

private void cmdZonas_Click(object sender, EventArgs e)

{

Zonas wndZonas = new Zonas(m_listedNodes);

wndZonas.ShowDialog();

}

Fig. 2.6.2 – 7

/// <summary>

/// Llamado para actulizar la lista de dispositivos

/// </summary>

private void cmdListado_Click(object sender, EventArgs e)

{

UpdateConnectedState();

}

Fig. 2.6.2 -8

Este procedimiento manjea el grid: UpdateConnectedState();

Page 260: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 31

Fig. 2.6.2 -9

Variables

StringCollection lstNodos = new StringCollection();

StringCollection lstNodosGuardados = new StringCollection();

private TextBox zonaIndex;

Funciones y Métodos

/// <summary>

/// Recibimos la lista de nodos

/// </summary>

public Zonas(string [] Nodos)

{

InitializeComponent();

int i;

if (Nodos != null)

{

for (i =0; i< Nodos.Length; i++)

if (Nodos[i] != "N/A")

{

lstNodos.Add(Nodos[i]);

}

Page 261: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 32

}

}

/// <summary>

/// Verificamos si hay nodos para asignar

/// </summary>

private void Zonas_Load(object sender, EventArgs e)

{

if (lstNodos.Count == 0)

{

listaNodos.Items.Add("N/A");

MessageBox.Show("No hay nodos para enlazar","Control de

Luces",MessageBoxButtons.OK,MessageBoxIcon.Error);

this.Dispose();

}

else

{

p_ActualizarListaNodos();

}

}

/// <summary>

/// Actualizamos la lista de nodos disponibles y los nodos que ya

/// fueron asignados

/// </summary>

void p_ActualizarListaNodos()

{

Properties.Settings.Default.Reload();

lstNodosGuardados.Clear();

lstNodosGuardados.Add(Properties.Settings.Default.z1);

lstNodosGuardados.Add(Properties.Settings.Default.z2);

lstNodosGuardados.Add(Properties.Settings.Default.z3);

lstNodosGuardados.Add(Properties.Settings.Default.z4);

lstNodosGuardados.Add(Properties.Settings.Default.z5);

lstNodosGuardados.Add(Properties.Settings.Default.z6);

lstNodosGuardados.Add(Properties.Settings.Default.z7);

lstNodosGuardados.Add(Properties.Settings.Default.z8);

lstNodosGuardados.Add(Properties.Settings.Default.z9);

lstNodosGuardados.Add(Properties.Settings.Default.z10);

lstNodosGuardados.Add(Properties.Settings.Default.z11);

listaNodos.Items.Clear();

for (int i = 0; i < lstNodos.Count; i++)

{

if (lstNodosGuardados.Contains(lstNodos[i]) == false)

{

listaNodos.Items.Add(lstNodos[i]);

}

}

listaNodos.Items.Add("N/A");

}

/// <summary>

Page 262: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 33

/// Al momento de seleccionar un nodo de la lista de disponibles

/// asignamos a la zona y guardamos en el archivo de configuracion

/// luego ocultamos la lista de seleccion

/// </summary>

private void listaNodos_SelectedIndexChanged(object sender, EventArgs e)

{

if (listaNodos.SelectedItem != null)

{

zonaIndex.Text = listaNodos.SelectedItem.ToString();

Properties.Settings.Default.Save();

listaNodos.Visible = false;

p_ActualizarListaNodos();

}

}

/// <summary>

/// Seleccionamos la la zona a la cual asignaremos el nodo

/// </summary>

private void z1_Click(object sender, EventArgs e)

{

zonaIndex = z1;

listaNodos.Location = z1.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z2_Click(object sender, EventArgs e)

{

zonaIndex = z2;

listaNodos.Location = z2.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z3_Click(object sender, EventArgs e)

{

zonaIndex = z3;

listaNodos.Location = z3.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z4_Click(object sender, EventArgs e)

{

zonaIndex = z4;

listaNodos.Location = z4.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z5_Click(object sender, EventArgs e)

{

zonaIndex = z5;

listaNodos.Location = z5.Location;

listaNodos.Visible = true;

listaNodos.Focus();

Page 263: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 34

}

private void z6_Click(object sender, EventArgs e)

{

zonaIndex = z6;

listaNodos.Location = z6.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z7_Click(object sender, EventArgs e)

{

zonaIndex = z7;

listaNodos.Location = z7.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z8_Click(object sender, EventArgs e)

{

zonaIndex = z8;

listaNodos.Location = z8.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z9_Click(object sender, EventArgs e)

{

zonaIndex = z9;

listaNodos.Location = z9.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z10_Click(object sender, EventArgs e)

{

zonaIndex = z10;

listaNodos.Location = z10.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void z11_Click(object sender, EventArgs e)

{

zonaIndex = z11;

listaNodos.Location = z11.Location;

listaNodos.Visible = true;

listaNodos.Focus();

}

private void listaNodos_OnKeyPress(object sender, KeyPressEventArgs e)

{

if (e.KeyChar == (char)Keys.Escape)

{

listaNodos.Visible = false;

}

}

Page 264: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 35

Fig. 2.6.2 – 10

/// <summary>

/// Borramos la asignacion de toda las zonas

/// </summary>

private void btnLimpiar_Click(object sender, EventArgs e)

{

z1.Text = "N/A";

z2.Text = "N/A";

z3.Text = "N/A";

z4.Text = "N/A";

z5.Text = "N/A";

z6.Text = "N/A";

z7.Text = "N/A";

z8.Text = "N/A";

z9.Text = "N/A";

z10.Text = "N/A";

z11.Text = "N/A";

Properties.Settings.Default.Save();

p_ActualizarListaNodos();

}

Fig. 2.6.2 – 11

/// <summary>

/// Cerramos la ventana

/// </summary>

private void btnCerrar_Click(object sender, EventArgs e)

{

this.Dispose();

}

2.6.2. Opciones

Page 265: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 36

Fig. 2.6.3 – 1

Fig. 2.6.3 – 2

/// <summary>

/// Cargamos todas las direcciones IP que tenga el computador

/// </summary>

void GetIP()

{

String strHostName = Dns.GetHostName();

IPHostEntry iphostentry = Dns.GetHostEntry(strHostName);

String IPStr = "";

cbIP.Items.Clear();

cbIP.Items.Add("Por Defecto");

cbIP.SelectedIndex = 0;

foreach (IPAddress ipaddress in iphostentry.AddressList)

{

// IPv4

if (ipaddress.AddressFamily == AddressFamily.InterNetwork)

{

cbIP.Items.Add(IPStr = ipaddress.ToString());

}

}

}

Page 266: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 37

Fig. 2.6.3 – 3

/* Funciones para validar el ingreso del numero de puerto.

*

* txPuerto_Validating - Ejecuta cuando el usuario ingresa valores al

* textbox

* txPierto_Validated - Cuando el valor ingresado es correcto, borramos el

* mensaje de error

* ValidarNumerodePuerto - La validacion de los datos ingresados, si hay

* algun error se cancela la ejecucion hasta

* corregir el error

*

*/

private void txPuerto_Validating(object sender,

System.ComponentModel.CancelEventArgs e)

{

string errorMsg;

if (!ValidarNumerodePuerto(txPuerto.Text, out errorMsg))

{

e.Cancel = true;

txPuerto.Select(0, txPuerto.Text.Length);

this.errorProvider1.SetError(txPuerto, errorMsg);

}

}

private void txPuerto_Validated(object sender, System.EventArgs e)

{

errorProvider1.SetError(txPuerto, "");

}

private bool ValidarNumerodePuerto(string npuerto, out string errorMessage)

{

if (npuerto.Length == 0)

{

errorMessage = "El numero de puerto debe estar comprendido

entre 1024 y 49151\n" + "Por defecto es: 8990";

return false;

}

try

{

if (int.Parse(npuerto) >= 1024 && int.Parse(npuerto) <= 49151)

{

errorMessage = "";

return true;

}

}

catch(Exception)

{

errorMessage = "Caracter(s) invalido(s)";

return false;

}

Page 267: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 38

errorMessage = "El numero de puerto debe estar comprendido entre 1024

y 49151\n" + "Por defecto es: 8990";

return false;

}

Fig. 2.6.3 – 4

/// <summary>

/// Con este procedimiento cargamos las opciones por defecto

/// </summary>

private void btnRestaurar_Click(object sender, EventArgs e)

{

Clave wndClave = new Clave("¿Estas seguro de restablecer las opciones

del servidor?\n" + "NOTA: Se cambiarán todas las configuraciones del

servidor a sus valores iniciales");

wndClave.ShowDialog();

if (Properties.Settings.Default.retClave == "rcOK")

{

Properties.Settings.Default.Reset();

MessageBox.Show("Opciones restablecidas", "Control de Luces -

Servidor", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

}

Fig. 2.6.3 – 5

/// <summary>

/// Este procedimiento guarda las opciones al archivo de configuracion

/// </summary>

private void btnGOpciones_Click(object sender, EventArgs e)

{

Properties.Settings.Default.ultimaIP = cbIP.Text;

Properties.Settings.Default.puerto = txPuerto.Text;

Properties.Settings.Default.polling = txPolling.Value;

Properties.Settings.Default.logging = ckLogging.Checked ;

Properties.Settings.Default.Save();

if (txPolling.Value == 0)

tPolling.Enabled = false;

else

tPolling.Enabled = true;

MessageBox.Show("Las opciones han sido guardadas", "Control de Luces

- Servidor", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

Page 268: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 39

Fig. 2.6.3-6

private void btCambiar_Click(object sender, EventArgs e)

{

// Realizamos las comprobaciones necesarias antes de cambiar la

contraseña

// 1. La contraseña debe ser mayor o igual a 4 digitos.

// 2. Se necesita que la nueva contraseña sea ingresada 2 veces.

// 3. Debemos conocer la contraseña vigente.

if (txPNueva.TextLength >= 4 && txPRNueva.TextLength >= 4)

{

if (btCambiar.Text == "Cambiar")

{

if (txPNueva.Text == txPRNueva.Text)

{

if (Encriptar.verifyMd5Hash(txPActual.Text,

Properties.Settings.Default.appClave))

{

Properties.Settings.Default.appClave =

Encriptar.getMd5Hash(txPNueva.Text);

Properties.Settings.Default.Save();

MessageBox.Show("Nueva contraseña asignada

con éxito.", "Control de Luces",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

txPActual.Clear();

txPNueva.Clear();

txPRNueva.Clear();

}

else

{

MessageBox.Show("La contraseña actual no es

la correcta.", "Control de Luces",

MessageBoxButtons.OK,

MessageBoxIcon.Warning);

txPActual.Focus();

}

}

else

{

MessageBox.Show("No coinciden las nuevas

contraseñas ingresadas.", "Control de Luces",

MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

Page 269: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 40

// Si es la primera vez que se ejecuta el servidor.

if (btCambiar.Text == "Asignar")

{

if (txPNueva.Text == txPRNueva.Text)

{

Properties.Settings.Default.appClave =

Encriptar.getMd5Hash(txPNueva.Text);

Properties.Settings.Default.Save();

MessageBox.Show("Nueva contraseña asignada con

éxito.", "Control de Luces", MessageBoxButtons.OK,

MessageBoxIcon.Information);

nIcon.Visible = true;

this.MinimizeBox = true;

btCambiar.Text = "Cambiar";

txPNueva.Clear();

txPRNueva.Clear();

txPuerto.Enabled = true;

cbIP.Enabled = true;

ckLogging.Enabled = true;

txPActual.Enabled = true;

txPolling.Enabled = true;

btnGOpciones.Enabled = true;

btnRestaurar.Enabled = true;

cmdGo.Enabled = true;

tabControles.TabPages.Insert(0, tabPrincipal);

tabControles.TabPages.Insert(1, tabZwave);

tabControles.SelectedIndex = 0;

tabControles.SelectedTab.Focus();

btnGOpciones.Focus();

}

else

{

MessageBox.Show("No coinciden las nuevas

contraseñas ingresadas.", "Control de Luces",

MessageBoxButtons.OK, MessageBoxIcon.Warning);

txPNueva.Focus();

}

}

}

else

{

MessageBox.Show("Se deben ingresar minimo 4 caracteres

para la contraseña.", "Control de Luces",

MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

2.6.3. Modulo Contraseña

Page 270: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 41

Fig. 2.6.4 - 1

public partial class Clave : Form

{

String claveApp;

String claveRevisar;

public Clave(string msg)

{

InitializeComponent();

lbDescripcion.Text = msg;

}

private void Clave_Load(object sender, EventArgs e)

{

Properties.Settings.Default.retClave = "rcNULL";

Properties.Settings.Default.Save();

claveApp = Properties.Settings.Default.appClave;

}

private void btAceptar_Click(object sender, EventArgs e)

{

Properties.Settings.Default.retClave = "rcOK";

Properties.Settings.Default.Save();

this.Close();

}

private void txPassword_TextChanged(object sender, EventArgs e)

{

if (String.IsNullOrEmpty(txPassword.Text) == false)

{

claveRevisar = Encriptar.getMd5Hash(txPassword.Text);

if (claveRevisar == claveApp)

btAceptar.Enabled = true;

else

btAceptar.Enabled = false;

}

}

Page 271: Elaboración de software para el control de intensidad de luz prototipo Aula Magna

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 42

private void btCerrar_Click(object sender, EventArgs e)

{

this.Close();

}

}

2.7. Plataforma de Usuario

Hardware

- Procesador Pentium 1GHz o equivalente

- RAM: 256 MB

- Disco Duro: 500 MB*

- Unidad CD o DVD

- Monitor: 800 x 600, 256 colors

- 1 Ranura USB (para el controlador USB)

- 1 Tarjeta de Red (en caso de funcionar en red )

Software

- Microsoft Windows XP

- Microsoft .Net Framework 3.5 SP1