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
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
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
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.
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.
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.
.
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.
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
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
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
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
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
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
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
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.
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.
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
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.
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.
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
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
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.
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
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.
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
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.
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)
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
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
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
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.
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
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
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/
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.
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.
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
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).
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
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
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
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.
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
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
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)
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
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
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.
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.
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.
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
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.
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.
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
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)
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.
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
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-
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:
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.
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.
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.
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
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.
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.
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.
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
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
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
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.
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.
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.
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
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.
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.
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.
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
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.
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
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
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.
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.
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.
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
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
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
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
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
89
Envio de mensajes al servidor
Ilustración 41: Envió de mensajes al servidor en ejecución
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
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.
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.
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.
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
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.
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
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.
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.
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.
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
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
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
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.
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.
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.
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
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
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/
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
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.
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.
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/)
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
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
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
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.
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.
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.
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.
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.
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.
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
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.
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
125
ANEXO 1 Entrevista encargado 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.
127
ANEXO 2 Entrevista Ing. Mauricio Masache
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%.
129
ANEXO 3 Plano Eléctrico
130
Plano Eléctrico del Aula Magna de la PUCESD
131
132
ANEXO 4 Precio de Equipos Z-Wave
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
134
ANEXO 5 Manuales de instalación de dispositivos
135
136
137
ANEXO 6 Manuales de software
Elaborado por:
Chimbo Leonardo
Salazar Eduardo
Enero 2012
Control de luces – Cliente
Manual de Usuario
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
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.
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
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
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.
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
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
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
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
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)
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.
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
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
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
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).
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
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
Elaborado por:
Chimbo Leonardo
Salazar Eduardo
Enero 2012
Control de luces – Servidor
Manual de Usuario
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
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.
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
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
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
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
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
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.
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
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
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.
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.
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
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
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.
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
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
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:
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
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
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.
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
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:
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:
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
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
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.
Manual Técnico
Control de Luces - Cliente
Elaborado por: Chimbo Leonardo Salazar Eduardo
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
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.
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
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
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
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
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
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
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
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)
{
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)
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");
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");
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)
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);
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;
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
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");
}
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());
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;
}
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;
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;
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
*
*/
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;
}
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")
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
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]));
}
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");
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));
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>
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
{
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;
}
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"/>
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>
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}"/>
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
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
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"
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
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">
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}"
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>
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>
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
Manual Técnico
Control de Luces - Cliente
Elaborado por: Chimbo Leonardo Salazar Eduardo
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
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.
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
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
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
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
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
:
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
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
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
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
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
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
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
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 =
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
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);
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
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++)
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)
{
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
{
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" )
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();
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
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 );
}
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
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();
}
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;
}
}
}
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;
}
}
}
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();
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]);
}
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>
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();
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;
}
}
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
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());
}
}
}
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;
}
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);
}
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);
}
}
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
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;
}
}
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