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

Page 1

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 I.

OBJETIVOS ESPECÍFICOS 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

X

Aula Magna. Equipos inalámbricos

X

compatibles con la red eléctrica actual. 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

Consumo de

0

1

2

3

X

energía eléctrica.

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

Nivel de Impacto

-3

-2

-1

0

1

2

3

Indicadores Presentación de eventos en general en el Aula

X

Magna. Total

2

Tabla 4: Impacto social

∑= 2

Vin= Valor del Indicador Nin= Número total de indicadores

Nivel de Impacto = Impacto medio positivo.


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

X

inalámbrica. Reducción de consumo

X

energético. 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 -3

-2

-1

0

1

2

3

Indicadores Impacto Tecnológico

x

Impacto Social

x

Impacto Económico

x

Impacto Ambiental

Total

x

-1

Tabla 6: Impacto general

∑= 5 3

Anexo 4

4

Anexo 5

1

2

3


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

2.1

MARCO TEÓRICO

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.

Ilustración 3: Partes de la lámpara fluorescente, Autor: Wikipedia, citado 12/04/2011, fuente: http://es.wikipedia.org/wiki/Luminaria_fluorescente

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.


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

Ilustración 4: Funcionamiento de un Dimmer. Autor: HowStuffWorks, citado: 12/04/2011, fuente: http://home.howstuffworks.com/dimmer-switch2.htm

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.


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…

2.6

Persianas y motores.

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

Y cualquier dispositivo adaptado mediante una interface.

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

Ilustración 5: Tecnología Z- Wave. Autor: ZenSys, citado: 12/04/2011, fuente: http://www.zen-sys.com/modules/Products&Techonology/

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/iaCMDocMan/?docId=13&mode=CUR ) 6/01/2010


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.zensys.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.zensys.com/modules/iaCMDocMan/?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 ZWave. 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 AsiHome – Especificaciones técnicas http://www.asihome.com/ 11/09/2010

10


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.

11

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

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

PROTOCOLO TCP/IP12

2.7

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.

OSI

TCP/IP

7

Aplicación

6

Presentación

5

Sesión

4

Transporte

Transporte

3

Red

Interred

2

Enlace de Datos

1

Física

Aplicación

Subred

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).


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

TCP IP LAN

HTTP

UDP ICMP

RTC

PPP

Aplicación Transporte Interred 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

Asynchronous

Methods

Methods

Connect()

Receive()

BeginConnect() EndConnect()

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 3.1

METODOLOGÍA

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*

Escenario

10x100w

Control

Control de

Actual

Intensidad

Switch 3 Subzonas

Público 4 Subzonas

Camerinos

1000w

40x40w + 5x80w

Control individual de las zonas

Atenuable

o como grupo

Encender /

Control individual de las zonas o como grupo

Apagar

2000w

4x100w Switch

4 Subzonas

Si,

No, Solo Breakers

Requisito

400w

Si,

Control independiente en cada

Atenuable

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 Control Luces Servidor «uses»

Gestionar Red Z-Wave

Zonas y Nodos

Gestionar datos de conexión Iniciar Red Z-Wave «extends»

Iniciar Sistema «extends» Iniciar Conexiones de Red

Administrador

ControlLuces Cliente

Enviar/Recibir Datos

Ilustración 20: Diagrama General – Servidor

Control Luces Cliente «uses»

Interactuar Mapa de Zonas

Datos del Servidor

Gestionar Datos de Conexión

«extends»

Iniciar Conexión de Red

Iniciar Sistema ControlLuces Servidor

Usuario

Enviar/Recibir Datos

Ilustración 21: Diagrama General – Cliente


64

3.1.3.2 Servidor 3.1.3.2.1 Gestionar Red Z-Wave

Gestionar Red Z-Wave

Administrador

Ilustración 22: CU Gestionar Red Z-Wave

GESTIONAR RED Z-WAVE

Descripción

Precondición

El administrador desea agregar, quitar nodos o borrar la configuración del controlador USB.

El controlador USB debe estar conectado al computador y funcionando correctamente.

Flujo: Agregar/Quitar un nodo

Secuencia

Paso

Acción

1

Conectarse al controlador USB.

2

Seleccione la opción deseada agregar/quitar Nodo.

Normal

3

4

El sistema muestra el mensaje para entrar en modo de detección.

Confirmar el mensaje.


65

5

6

7

Ahora el administrador debe pulsar un botón en el dispositivo para que el sistema lo detecte.

El sistema detecta el dispositivo para agregar/quitar según sea el caso y muestra la información correspondiente.

Salir del modo detección.

Postcondición Se actualiza la lista de nodos.

Paso

Excepciones

1

6

Acción

El contralor USB no responde, verificar que este bien conectado al computador.

Al cabo de un tiempo especificado no se detecta algún dispositivo, se muestra el mensaje de error.

Flujo: Borrar Configuración USB

Secuencia

Paso

Acción

1

Conectarse al controlador USB.

2

Seleccione la opción Borrar USB.

Normal

3

4

El sistema muestra un cuadro de dialogo solicitando contraseña para continuar.

Escriba la contraseña y pulse el botón aceptar.


66

Postcondición Se actualiza la lista de nodos

Paso

Acción

Excepciones 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.

El controlador USB debe estar conectado al computador y funcionando Precondición

correctamente. Conocer donde se instalaron los nodos.

Flujo: Mapa Zonas y Nodos

Paso

Acción

1

Conectarse al controlador USB.

Secuencia Normal


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

Postcondición

nodos.

Se guarda automáticamente cada cambio realizado en el archivo de configuración.

Paso

Excepciones

Repetir paso 4 - 6 hasta a asignar todas las zonas con sus

1

4

Acción

El contralor USB no responde, verificar que este bien conectado al computador.

Pulsar la tecla ESC para cerrar la lista de nodos disponibles.

3.1.3.2.3 Gestionar Datos de Conexión

Gestionar datos de conexión

Administrador

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

Paso

Acción

Normal 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

4

Para cambiar el número de puerto: Ingrese el número de puerto deseado.

Pulse el botón de guardar.

Postcondición Guardar las opciones en el archivo de configuración.

Excepciones

Paso

3

Acción

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

2

3

4

El sistema cargará las opciones del archivo de configuración.

Para cambiar la contraseña debe ingresarla 2 veces y conocer la contraseña anterior. El sistema comprobará los datos ingresados mostrando el mensaje correspondiente.

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

«extends»

Iniciar Red Z-Wave

Iniciar Sistema «extends» Iniciar Conexiones de Red Administrador

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

Paso

Acción

Normal 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 «extends» Iniciar Sistema

Iniciar Red Z-Wave

Ilustración 26: CU Iniciar Red Z-Wave

INICIAR RED Z-WAVE

Descripción

El sistema llama a este modulo

Necesitamos conocer si la llamada es: Precondición

Para gestionar la red z-wave O para ejecutar peticiones de los clientes

Flujo: Iniciar

Secuencia

Paso

Acción

Normal 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

El contralor USB no responde, verificar que este bien conectado al computador 2,6 No es posible tener 2 aplicaciones servidor corriendo al mismo tiempo

3.1.3.2.6 Iniciar Conexiones de Red. «extends» Iniciar Sistema

Iniciar Conexiones de Red

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

Paso

Acción

Normal 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

No se pudo crear la conexión 2

El número de puerto está siendo usado por otra aplicación. Problemas de conectividad

3.1.3.2.7 Enviar/Recibir Datos

Iniciar Sistema

Enviar/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

Paso

Acciรณn

Normal 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

Interactuar Mapa de Zonas

Usuario

Ilustración 29: CU Interactuar Mapa de Zonas

INTERACTUAR MAPA DE ZONAS

Descripción

El usuario desea cambiar el estado de una zona.

Iniciar Sistema. Precondición Datos del Servidor.

Flujo: Apagar/Encender/Atenuar Zonas

Secuencia

Paso

Acción

Normal 1

2

El sistema mostrará el estado de las zonas de acuerdo a la información recibida del servidor.

El usuario selecciona una zona para apagar/encender/atenuar.

El sistema mostrará el control lumínico 3

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

Paso

Acción

Normal 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

Gestionar Datos de Conexión

Usuario

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

Paso

Acción

Normal 1

2

El sistema cargará las opciones del archivo de configuración.

Para cambiar la dirección IP: Escriba la dirección IP que usa el servidor


78

3

4

Para cambiar el número de puerto: Ingrese el número de puerto deseado.

Pulse el botón Conectar.

Postcondición Guardar las opciones en el archivo de configuración.

Excepciones

Paso

2

3

Acción

Se aceptará el formato de dirección IPv4 el cual es xxx.xxx.xxx.xxx

Solo se pueden ingresar valores numéricos, caso contrario se mostrara el mensaje de error

3.1.3.3.4 Iniciar Sistema «extends» Iniciar Sistema

Iniciar Conexión de Red

Usuario

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

Paso

Acción

Normal 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

5

El sistema activa el mapa de zonas de acuerdo a la información recibida.

El sistema activa la barra de herramientas.

Postcondición El sistema está listo para su uso.

Excepciones

Paso

3

Acción

Ver excepciones para el caso de uso Iniciar Conexión de Red

3.1.3.3.5 Iniciar Conexión de Red «extends» Iniciar Sistema

Iniciar Conexión de Red

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

Paso

Acción

Normal 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

El número de puerto está siendo usado por otra aplicación. 2

Problemas de conectividad El servidor no está activo


81

3.1.3.3.6 Enviar/Recibir Datos

Enviar/Recibir Datos

Iniciar Sistema

ControlLuces Servidor

Ilustración 34: CU Enviar/Recibir Datos

ENVIAR/RECIBIR DATOS

Descripción

Precondición

El sistema llama a este módulo cada vez que se genere una petición al servidor. 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

Paso

Acción

Normal 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.

Cliente

Interfaz de Usuario

Usuario Modulo de Red -TCP/IP

Servidor -TCP/IP Modulo de Red

-Red Z-Wave

Swtich/Dimmer Vizia RF

ControlZWave.dll

Registro Eventos

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.


Iniciar 1.Establecer Conexi贸n de Red

3. ESPERAR CONEXIONES

2. Conectarse a la Red Z-Wave

Valor Nodos

84

Al iniciar el servidor.

Ilustraci贸n 36: Diagrama Al iniciar el servidor


CLIENTE

Mensaje

5. Enviar Lista de Nodos

1. Verificar Lista Conexiones

4. Generar Lista de Nodos

Agregar Conexiรณn

Insertar Conexiรณn

3. Decodificar Mensaje

2. Recibir Mensaje

85

Cuando el servidor recibe una conexiรณn.

Ilustraciรณn 37: Diagrama Al recibir una conexiรณn


CLIENTE

Mensaje

Mensaje

4. Generar y Enviar Mensaje

1. Recibir Mensaje

Comando

Mensaje

3. Ejecutar Comando

2. Decodificar Mensaje

Comando

86

Al recibir un mensaje de un cliente conectado.

Ilustraci贸n 38: Diagrama al recibir un mensaje de un cliente


Red Z-Wave

2.4 Borrar USB

1. Conectar a la Red ZWave

Zonas y Nodos

2. ACCION DEL USUARIO

VALOR NODOS

2.1 Agregar Nodos

2.2 Quitar Nodos

87

Al administrar la red Z-Wave.

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:

PANTALLA INICIAL

CONEXIONES

RED Z-WAVE

ZONAS Y NODOS

Ilustración 42: Navegación de interfaces

OPCIONES


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

La barra de herramientas nos ofrece las siguientes opciones:

1

2

3

4

5

6

7

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 4.1

DISCUSIÓN Y RESULTADOS

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 Se anexa plano eléctrico del Aula Magna de la PUCESD. 20 Se anexa entrevista realizada al Ing. Mauricio Masache. 19


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

36,97

36,97

92,27 Valor Total:

97,27

1 1

ControlThink CTZUS-1US - ThinkStick Only (US Frequency) Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer

Tabla 12: Costos de equipos

1030,56


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. 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 22


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 Leviton VRI06-1LZ - vizia rf + 600W Incandescent Dimmer Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer

Cantidad

Ahorro unitario

Ahorro total

4

19,60

78,4

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.

27

Manejo local o remoto de las luminarias.

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

36,97

36,97

92,27

97,27

1 1

ControlThink CTZUS-1US - ThinkStick Only (US Frequency) Leviton VRI10-1LX - vizia rf + 1000W Incandescent Dimmer

Valor Total:

1030,56


134

ANEXO 5 Manuales de instalaci贸n de dispositivos


135


136


137

ANEXO 6 Manuales de software


Control de luces – Cliente

Manual de Usuario

Elaborado por: Chimbo Leonardo Salazar Eduardo

Enero 2012


Control de Luces - Cliente

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

Manual de Usuario - 1


Control de Luces - Cliente

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. Manual de Usuario - 2


Control de Luces - Cliente

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 Manual de Usuario - 3


Control de Luces - Cliente

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

Manual de Usuario - 4


Control de Luces - Cliente

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.

Manual de Usuario - 5


Control de Luces - Cliente

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 Manual de Usuario - 6


Control de Luces - Cliente

g. Esperamos hasta que termine la instalaci贸n

Fig. 2.2 - 4

h. Instalaci贸n Completa

Fig. 2.2 - 5

Manual de Usuario - 7


Control de Luces - Cliente

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 Manual de Usuario - 8


Control de Luces - Cliente

En la parte superior esta la barra de herramientas nos ofrece las siguientes opciones:

1

2

3

4

5

6

7

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 Manual de Usuario - 9


Control de Luces - Cliente

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)

Manual de Usuario - 10


Control de Luces - Cliente

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. Manual de Usuario - 11


Control de Luces - Cliente

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 las luminarias

ubicado en la barra de herramientas, si desea apagar todas

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

Manual de Usuario - 12


Control de Luces - Cliente

3.4.

Elija la acción que desea realizar

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

Manual de Usuario - 13


Control de Luces - Cliente

Servidor -

Obligatoriamente tiene que ser la misma IP que usa el servidor

-

El puerto de red donde el servidor está escuchando las peticiones

-

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".

Puerto

Notas:

-

1024 a

Son denominados "registrados" y pueden ser usados por cualquier aplicación.

49151 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

-

3.5.

ESTOS VALORES SERAN VALIDADOS AL MOMENTO DE INTENTAR CONECTARSE AL SERVIDOR

Mensajes de Error y Posibles soluciones Manual de Usuario - 14


Control de Luces - Cliente

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). Manual de Usuario - 15


Control de Luces - Cliente

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

Manual de Usuario - 16


Control de Luces - Cliente

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

Manual de Usuario - 17


Control de luces – Servidor

Manual de Usuario

Elaborado por: Chimbo Leonardo Salazar Eduardo

Enero 2012


Control de Luces - Servidor

Contenido 1.

INTRODUCCIÓN .......................................................................................................................................2

2.

INSTALANDO LA APLICACIÓN ..................................................................................................................2 2.1. 2.2.

3.

EL ADAPTADOR USB ................................................................................................................................7 3.1. 3.2.

4.

INSTALANDO .NET FRAMEWORK 3.5 SP1 (NECESARIO)................................................................................... 2 INSTALANDO LA APLICACIÓN ....................................................................................................................... 5

CONECTANDO EL ADAPTADOR USB AL COMPUTADOR ...................................................................................... 8 ¿CÓMO RECONOCE EL SISTEMA OPERATIVO AL ADAPTADOR USB? ..................................................................... 9

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

Manual de Usuario - 1


Control de Luces - Servidor

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.

Manual de Usuario - 2


Control de Luces - Servidor

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 Manual de Usuario - 3


Control de Luces - Servidor

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

Manual de Usuario - 4


Control de Luces - Servidor

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 Manual de Usuario - 5


Control de Luces - Servidor

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 Manual de Usuario - 6


Control de Luces - Servidor

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

Manual de Usuario - 7


Control de Luces - Servidor

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. Manual de Usuario - 8


Control de Luces - Servidor

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

Manual de Usuario - 9


Control de Luces - Servidor

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

Manual de Usuario - 10


Control de Luces - Servidor

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. Manual de Usuario - 11


Control de Luces - Servidor

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.

Manual de Usuario - 12


Control de Luces - Servidor

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

Manual de Usuario - 13


Control de Luces - Servidor

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 Manual de Usuario - 14


Control de Luces - Servidor

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.

Manual de Usuario - 15


Control de Luces - Servidor

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

Manual de Usuario - 16


Control de Luces - Servidor

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

Manual de Usuario - 17


Control de Luces - Servidor

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:

Manual de Usuario - 18


Control de Luces - Servidor

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

Manual de Usuario - 19


Control de Luces - Servidor

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 Manual de Usuario - 20


Control de Luces - Servidor

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. Manual de Usuario - 21


Control de Luces - Servidor

-

4.3.

El botón Aceptar se activará cuando ingrese la contraseña correcta.

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 Manual de Usuario - 22


Control de Luces - Servidor

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 -

Son denominados "registrados" y pueden ser usados por cualquier aplicación.

49151 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:

Manual de Usuario - 23


Control de Luces - Servidor

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:

Manual de Usuario - 24


Control de Luces - Servidor

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

Manual de Usuario - 25


Control de Luces - Servidor

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

Manual de Usuario - 26


Control de Luces - Servidor

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 de Usuario - 27


Manual TĂŠcnico Control de Luces - Cliente

Elaborado por: Chimbo Leonardo Salazar Eduardo


Control de Luces – Cliente

Revisión 1.1

Enero 2012

Contenido

1.

INTRODUCCIÓN………………………………………………………………………………………..…….…...2

2.

CONTENIDO TÉCNICO……………………………………………………………………………………...…..2

2.1.

DIAGRAMAS DE FLUJO DE DATOS……………………………………………………………….………..2

2.2.

MAPA DE NAVEGACIÓN2.

2.3.

DESCRIPCIÓN GRÁFICA DEL MAPA DE NAVEGACIÓN…………………………….………...……7

2.3.1.

CONTENIDO TÉCNICO……………………………………..………7

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

Manual Técnico - 1


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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.

Manual Técnico - 2


Lista Nodos

1. Establecer Conexión

Datos

4. Decodificar Mensaje

2. Enviar Mensaje

Mensaje

Mensaje

SERVIDOR

3. Recibir Mensaje

Mensaje

Revisión 1.1

Al momento de conectarse al servidor

6. ACCION USUARIO

Conectar

Control de Luces – Cliente Enero 2012

Manual Técnico - 3


Control de Luces – Cliente

Revisión 1.1

Enero 2012

Diccionario de Datos - Al momento de conectarse al servidor Variable

Tipo

ip

IPAddress

Recibe la conversion del cuadro de texto “txIP”

iPortNo

int

Recibira la conversion del cuadro de texto “txPuerto”

ipEnd

IPEndPoint

Descripcion

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

ObservableCollection

La colección donde se guarda la lista de nodos, para mostrarla en el panel de informacion

MyZoneInfo <ZoneInfo>

Manual Técnico - 4


4. Ejecutar Acción

1. Enviar Mensaje

Resultado

Mensaje

3. Decodificar Mensaje

SERVIDOR

Mensaje

2. Recibir Mensaje

Mensaje

Revisión 1.1

Estamos conectados y enviamos una petición al servidor

Lista Nodos

Acción Usuario

Acción Usuario

Control de Luces – Cliente Enero 2012

Manual Técnico - 5


Control de Luces – Cliente

Revisión 1.1

Enero 2012

Diccionario de Datos - Cuando un cliente se conecta al server: Variable

Tipo

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

void

Muestra el cuadro flotante para atenuadores

void

Muestra el cuadro flotante para los interruptores

showPopDimmers( string valor) showPopSwitch( string valor)

Descripcion

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

ObservableCo llection

La colección donde se guarda la lista de nodos, para mostrarla en el panel de informacion

MyZoneInfo

<ZoneInfo>

Manual Técnico - 6


Control de Luces – Cliente

2.2.

Revisión 1.1

Enero 2012

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 Manual Técnico - 7


Control de Luces – Cliente

2.4.

Revisión 1.1

Enero 2012

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 Dirección IP Puerto

Valor “Por Defecto” 8990 Fig. 2.4 – 3 Manual Técnico - 8


Control de Luces – Cliente

2.5.

Revisión 1.1

Enero 2012

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 Manual Técnico - 9


Control de Luces – Cliente

Revisión 1.1

Enero 2012

{ 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) { Manual Técnico - 10


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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) Manual Técnico - 11


Control de Luces – Cliente

Revisión 1.1

Enero 2012

{ 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");

Manual Técnico - 12


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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");

Manual Técnico - 13


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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) Manual Técnico - 14


Control de Luces – Cliente

Revisión 1.1

Enero 2012

{ 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);

Manual Técnico - 15


Control de Luces – Cliente

Revisión 1.1

Enero 2012

// 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; Manual Técnico - 16


Control de Luces – Cliente

Revisión 1.1

Enero 2012

} 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 Manual Técnico - 17


Control de Luces – Cliente

Revisión 1.1

Enero 2012

/// 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"); }

Manual Técnico - 18


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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()); Manual Técnico - 19


Control de Luces – Cliente

Revisión 1.1

Enero 2012

break; } } } }

Fig. 2.5.2 - 7

Luces Escenario

/// <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; } Manual Técnico - 20


Control de Luces – Cliente

Revisión 1.1

Enero 2012

} } }

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; Manual Técnico - 21


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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; Manual Técnico - 22


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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 * */

Manual Técnico - 23


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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; }

Manual Técnico - 24


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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") Manual Técnico - 25


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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 Manual Técnico - 26


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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])); }

Manual Técnico - 27


Control de Luces – Cliente

Revisión 1.1

Enero 2012

/// <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");

Manual Técnico - 28


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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));

Manual Técnico - 29


Control de Luces – Cliente

Revisión 1.1

Enero 2012

}

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>

Manual Técnico - 30


Control de Luces – Cliente

Revisión 1.1

Enero 2012

<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 { Manual Técnico - 31


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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; }

Manual Técnico - 32


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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="clrnamespace:Interfaz.Properties" xmlns:ic="clrnamespace: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"/> Manual Técnico - 33


Control de Luces – Cliente

Revisión 1.1

Enero 2012

<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>

Manual Técnico - 34


Control de Luces – Cliente

Revisión 1.1

Enero 2012

<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}"/> Manual Técnico - 35


Control de Luces – Cliente

Revisión 1.1

Enero 2012

</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 Manual Técnico - 36


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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 Manual Técnico - 37


Control de Luces – Cliente

Revisión 1.1

Enero 2012

,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" Manual Técnico - 38


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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 Manual Técnico - 39


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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"> Manual Técnico - 40


Control de Luces – Cliente

Revisión 1.1

Enero 2012

<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}" Manual Técnico - 41


Control de Luces – Cliente

Revisión 1.1

Enero 2012

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> Manual Técnico - 42


Control de Luces – Cliente

Revisión 1.1

Enero 2012

<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>

Manual Técnico - 43


Control de Luces – Cliente

2.6.

Revisión 1.1

Enero 2012

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 - 44


Manual TĂŠcnico Control de Luces - Cliente

Elaborado por: Chimbo Leonardo Salazar Eduardo


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 1


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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.

Manual Técnico - 2


1.Establecer Conexión de Red

3. ESPERAR CONEXIONES

2. Conectarse a la Red Z-Wave

Valor Nodos

Revisión 1.1

Al momento de iniciar el servidor

Iniciar

Control de Luces – Servidor Enero 2012

Manual Técnico - 3


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 4


5. Enviar Lista de Nodos

1. Verificar Lista Conexiones

4. Generar Lista de Nodos

Agregar Conexión

3. Decodificar Mensaje

2. Recibir Mensaje

Revisión 1.1

Cuando un cliente se conecta al servidor:

CLIENTE

Mensaje

Insertar Conexión

Control de Luces – Servidor Enero 2012

Manual Técnico - 5


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Maneja el archivo de configuracion

Settings. Default

Manual Técnico - 6


Mensaje

4. Generar y Enviar Mensaje

1. Recibir Mensaje

Comando

Mensaje

3. Ejecutar Comando

2. Decodificar Mensaje

Comando

Revisión 1.1

Cuando recibimos un mensaje de control de un cliente conectado:

CLIENTE

Mensaje

Control de Luces – Servidor Enero 2012

Manual Técnico - 7


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 8


2.4 Borrar USB

1. Conectar a la Red ZWave

Cuando administramos la Red Z-Wave

Red Z-Wave

Zonas y Nodos

2. ACCION DEL USUARIO

VALOR NODOS

2.1 Agregar Nodos

2.2 Quitar Nodos

Control de Luces – Servidor Revisión 1.1 Enero 2012

Manual Técnico - 9


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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 ZWave

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

Manejar el archivo de configuracion

Settings. Default

Manual Técnico - 10


Control de Luces – Servidor

2.2.

Revisión 1.1

Enero 2012

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 Manual Técnico - 11


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 12


Control de Luces – Servidor

Revisión 1.1

Enero 2012

2.4.2.1. Zonas y Nodos

Fig. 2.4.2.1 - 1

2.4.3. Opciones

Fig. 2.4.3 – 1 Manual Técnico - 13


Control de Luces – Servidor

2.5.

Revisión 1.1

Enero 2012

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 Dirección IP

Valor “Por Defecto”

Puerto

8990 Fig. 2.5 – 3 Manual Técnico - 14


Control de Luces – Servidor

2.6.

Revisión 1.1

Enero 2012

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 = Manual Técnico - 15


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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 Manual Técnico - 16


Control de Luces – Servidor

Revisión 1.1

Enero 2012

/// </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); Manual Técnico - 17


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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 Manual Técnico - 18


Control de Luces – Servidor

Revisión 1.1

Enero 2012

/// </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++) Manual Técnico - 19


Control de Luces – Servidor

Revisión 1.1

Enero 2012

{ 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) {

Manual Técnico - 20


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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 ZWave" + System.Environment.NewLine); CloseSockets(); AppendToRichEditControl("Servidor detenido" + System.Environment.NewLine ); } finally { cmdConectarDesconectar.Enabled = true; } } else { cmdConectarDesconectar.Enabled = false; try { Manual Técnico - 21


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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" ) Manual Técnico - 22


Control de Luces – Servidor

Revisión 1.1

Enero 2012

{ 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(); Manual Técnico - 23


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 24


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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 ZWave" + System.Environment.NewLine); CloseSockets(); AppendToRichEditControl("Servidor detenido" + System.Environment.NewLine ); } Manual Técnico - 25


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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 Manual Técnico - 26


Control de Luces – Servidor

Revisión 1.1

Enero 2012

{ 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(); } Manual Técnico - 27


Control de Luces – Servidor

Revisión 1.1

Enero 2012

}

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; } } }

Manual Técnico - 28


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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; } } }

Manual Técnico - 29


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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();

Manual Técnico - 30


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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]); } Manual Técnico - 31


Control de Luces – Servidor

Revisión 1.1

Enero 2012

} } /// <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> Manual Técnico - 32


Control de Luces – Servidor

/// /// /// ///

Revisión 1.1

Enero 2012

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(); Manual Técnico - 33


Control de Luces – Servidor

Revisión 1.1

Enero 2012

} 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; } } Manual Técnico - 34


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 35


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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()); } } }

Manual Técnico - 36


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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; } Manual Técnico - 37


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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); }

Manual Técnico - 38


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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); } } Manual Técnico - 39


Control de Luces – Servidor

Revisión 1.1

Enero 2012

// 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

Manual Técnico - 40


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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; } }

Manual Técnico - 41


Control de Luces – Servidor

Revisión 1.1

Enero 2012

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

Manual Técnico - 42


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.