Manual paso a paso homeLYnk homeLYnk homeLYnk ............................................................................................................................................... 1 Creación de un proyecto paso a paso.......................................................................................... 4 1 Configuración inicial de homeLYnk....................................................................................... 4 1.1 Conexión del homeLYnk a una intranet (red IP) ..................................................... 4 1.1.1 Cambio de idioma ........................................................................................................ 5 1.2 Cambio de dirección IP ...................................................................................................... 6 1.3 Configuración de la comunicación KNX....................................................................... 7 2 Creación de un proyecto ............................................................................................................ 9 2.1 Capacidad de almacenamiento del homeLYnk y versión del homeLYnk .... 10 2.2 Importar el proyecto desde ETS.................................................................................. 10 2.3 Modificación de las direcciones de grupo................................................................ 11 2.4 Creación de las vistas de edificio ................................................................................ 13 2.5 Creación de Plantillas ...................................................................................................... 14 2.6 Importar imágenes de fondo ........................................................................................ 15 2.7 Importar iconos ................................................................................................................. 15 2.8 Creación de páginas de Navegación ........................................................................... 16 2.9 Edición de la plantilla. ..................................................................................................... 18 2.10 Edición de las páginas de navegación .................................................................... 20 2.11 Creación de botones de control ................................................................................ 22 2.12 Creación de Widgets ...................................................................................................... 26 2.13 Grafico simple .................................................................................................................. 31 2.14 Medidor .............................................................................................................................. 32 2.15 Etiqueta de texto ............................................................................................................. 33 2.16 Frame .................................................................................................................................. 34 2.17 Visualizar cámaras IP .................................................................................................... 35 2.18 Creación de horarios ..................................................................................................... 37 2.19 Creación de gráficos en la vista de navegación ................................................... 39 2.20 Alarmas .............................................................................................................................. 40 3 Programación Avanzada ......................................................................................................... 42 3.1 Script ...................................................................................................................................... 42 3.2 AND y OR ............................................................................................................................. 42 3.3 Programación de Scripts con la Ayuda ..................................................................... 45 3.4 Creación de cuenta e-mail.............................................................................................. 45 3.5 Envío de e-mail automático ......................................................................................... 45 3.6 Envío de correo electrónico cada vez que me cambia la IP pública, para poder tener IP dinámica ............................................................................................................ 46 3.7 Maestro hora y fecha ....................................................................................................... 48 3.8 Datos Modbus: Power Meter ........................................................................................ 50 3.9 Ejemplo script PM7 .......................................................................................................... 51 4 Como realizar copias de seguridad y/o exportar a otros homeLYnk.................... 56 4.1 Realizar una copia de seguridad ................................................................................. 56 4.2 Cargar una copia de seguridad .................................................................................... 56 Creación de un proyecto paso a paso 1 Configuración inicial de homeLYnk. Alimentar el homeLYnk a 24Vdc, 10mA, veréis que los leds 1 y 2 están encendidos de color verde. 1.1 Conexión del homeLYnk a una intranet (red IP) Mediante el puerto Ethernet se conectará el homeLYnk a una red de datos, comprobar que los leds de comunicación color verde y naranja están activos. Ahora es importante que el rango ip al que pertenece el dispositivo, este dentro del rango ip de nuestra intranet. Por defecto homeLYnk viene con la dirección 192.168.0.10 con una máscara 255.255.255.0 Con lo que o bien debemos crear una red punto a punto con nuestro pc O bien ir al router y cambiar el rango de la red Una vez realizado estos cambios mediante internet Chrome, Firefox, safari o cualquier otro navegador menos Explorer, vamos a la dirección http:/192.168.0.10 Seleccionamos configurador Una vez pulsado nos pedirá nombre de usuario y contraseña, Por defecto es: Nombre de usuario: admin Contraseña: admin 1.1.1 Cambio de idioma Ahora podemos cambiar el idioma a español y configuramos los parámetros ip del homeLYnk 1.2 Cambio de dirección IP Seleccionamos Sistema Ahora vamos a la pestaña Network (red) Seleccionamos Interface Ahora ya podremos seleccionar entre direccionamiento estático o dinámico, recomendamos estático, y ponemos los parámetros adecuados a nuestra red, en caso de desconocerlos es conveniente preguntar primero al proveedor de servicios de telecomunicación, ya que si lo rellenamos de forma incorrecta podemos quedarnos sin comunicación con el dispositivo. Ponemos los parámetros por defecto de nuestro router o PC. 1.3 Configuración de la comunicación KNX En la misma pestaña Network, seleccionamos KNX connection Aquí podremos seleccionar si queremos que la comunicación sea vía TP ( cable rojo/negro) o vía Ethernet (será necesario tener una pasarela KNX IP con clientes libres). También procederemos a darle la dirección individual KNX al dispositivo, esta dirección es muy importante darla pero es mandatorio si en la instalación hay acopladores de línea o área tanto TP como IP. Ahora ya esta listo para comunicar tanto con nuestra red KNX como con nuestra red IP. Este es un buen momento para, en caso de desearlo, cambiar el nombre de usuario y contraseña, mediante la pestaña System, seleccionamos User Access. Introducimos el nombre de usuario y contraseña que queramos. Ojo: Se puede dar la circunstancia que para que el cambio sea efectivo se deba desconectar la alimentación del dispositivo y volverlo a conectar . 2 Creación de un proyecto OJO!!!: Se recomienda usar el navegador firefox o chrome, en caso de no ser así, pude funcionar de manera errática. Mediante nuestro navegador vamos a la dirección que hemos asignado previamente a HomeLYnk y nos encontramos la siguiente página. Seleccionamos configurador 2.1 Capacidad de almacenamiento del homeLYnk y versión del homeLYnk En cualquier momento es útil conocer la cantidad de memoria disponible del dispositivo, así como saber si se encuentra en comunicación con una red KNX, esto es muy simple y esta siempre disponible, tan solo debemos fijarnos en la parte inferior derecha de la pantalla . En la parte inferior izquierda nos mostrará el número de versión. 2.2 Importar el proyecto desde ETS Primero procederemos a importar las direcciones de grupo de nuestro proyecto en ETS, para el ejemplo lo mostraremos en ETS4, pero evidentemente funciona en ET3 y ETS4. vamos al ETS4, y exportamos nuestro proyecto a formato OPC Guardamos el archivo Y ahora procedemos a importarlo. 2.3 Modificación de las direcciones de grupo Ahora en la pestaña Objetos, podremos comprobar si se han importado correctamente las direcciones de grupo, añadir en caso que sea necesario (ojo en este caso recomendamos insertar un Dummy en el proyecto de ETS e insertarla en el), ver el valor que tienen, modificarlo y en caso de no haberle dado el tipo de datos en el proyecto de ETS, se le debe dar. Nota: las direcciones de grupo con acentos aparecen con símbolos extraños!!! En cada pantalla aparece un numero delimitado de objetos de comunicación, para irlos viendo todos, en la parte inferior tenéis un navegador que os permitirá ir cambiado de página y ver/modificar todas las direcciones de grupo. Es muy importante para las visualizaciones que las direcciones de grupo tengan un tipo de dato definido, si os habéis olvidado de definirlo el el proyecto de ETS ahora podéis hacerlo, mi realimentación de estado de posición de la persiana, no tiene tipo de dato y voy a dárselo, así como cambiar el símbolo extraño del acento. En Nombre o dirección de grupo, pondremos o palabra clave en mi caso Altura o grupo principal e intermedio, cualquier cosa que me sirva para agrupar las direcciones. Clicamos encima de una dirección: fijaos que muestra 1byte entero sin signo Y le damos al tipo de datos que deseemos. Es importante que si se va a usar como en este caso una dirección como escucha, que mantenga congruencia con la dirección principal. 2.4 Creación de las vistas de edificio Vamos a realizar la visualización de una vivienda unifamiliar de dos plantas, más un sótano. Primeramente seleccionamos Vista de la estructura. Añadimos la estructura del edificio / vivienda en Niveles / Página Y ahora en Plantillas / Widgets creamos la plantilla común a todas las visualizaciones. Observamos que en la parte izquierda tenemos dos carpetas: • Layouts • Widgets 2.5 Creación de Plantillas Para crear las plantillas iremos a Layout No es importante por ahora el saber como va a ser esta plantilla, ya que lo definiremos más adelante. Si ya lo tenemos claro también podemos añadir los widgets 2.6 Importar imágenes de fondo Vamos a la pestaña Visor gráfico y en la subpestaña Imágenes / Fondos, añadimos todas las imágenes de fondo que necesitemos. Si se desea se puede renombrar la imagen poniendo un nombre en el recuadro Nombre Ojo para que se refresque la pantalla y ver las imágenes importadas, seleccionar cualquier pestaña de las de la parte superior y volver a esta pantalla. 2.7 Importar iconos Para añadir iconos, lo vamos ha hacer de otra forma, en lugar de ir de uno a uno, pongo todos los iconos en una carpeta del sistema operativo. Y lo comprimo en formato zip En Iconos, vamos a Añadir iconos, y seleccionamos el archivo Zip 2.8 Creación de páginas de Navegación Volvemos a Niveles / Página Y añadimos la ventana de planta, en el caso del ejemplo en Planta Baja Aquí a parte del nombre, podremos seleccionar si queremos que tenga una plantilla, en este caso sí, que tamaño ha de tener, si se ha de poder ver desde Smartphone o desde pc… Recomendamos realizar una pantalla genérica y una vez hechas todas, duplicarlas y adaptarlas a Smartphone y/o tableta y/o PC. Añadimos todas las estancias.. Así mismo aprovecharemos para crear las pantallas de inicio para la navegación como usuario. Seleccionamos la página deseada, en este ejemplo, la página Main. Y procedemos a ponerla como principal de la siguiente manera. Guardamos y continuamos. Aquí podríamos seleccionar una navegación diferente para pc o Smartphone, con diferentes pantallas y modos de visualización, de momento para este ejercicio, lo vamos a dejar tal y como se muestra. 2.9 Edición de la plantilla. En primer lugar vamos a proceder a definir la plantilla general, en el caso de este ejemplo, será un navegador que me permitirá cambiar de planta, ir a la página de temporización (riego, modo de clima por ejemplo), y una gráfica de consumos eléctricos, adecuado a la nueva tarificación eléctrica. Visualización en la pestaña de edición, layout y Plantilla Genérica. Procedemos a desbloquear la pantalla, ponerla en modo edición, Seleccionamos Imagen, e insertamos una imagen, yo me he creado una plantilla usando PowerPoint, he guardado como imagen, en opciones de PowerPoint, tanto para la imagen de fondo como para los iconos, pero también se puede hacer a mano con homeLYnk. Ahora crearemos los botones de navegación, vamos a Enlace de pagina, Página aquí seleccionamos la página destino creada previamente, el modo de visualización, en este ejemplo icono, y en Icono de estado activo seleccionamos un icono en modo activo y en Icono otro en modo desactivado, así se podrá ver que pagina esta seleccionada en cada momento. Como he explicado anteriormente también he creado los iconos con PowerPoint Para que queden del mismo tamaño y ordenados, fijaos que puedo poner el tamaño del icono de forma manual, así como su posición en el eje vertical, luego como mi plantilla de ppt tenia las posiciones de los iconos marcados , resulta muy fácil de ordenarlos. Seleccionamos Guardar y volver a cargar la página, y ya hemos acabado la plantilla. 2.10 Edición de las páginas de navegación Para comprobar que todo está bien, vamos a Visualización, seleccionamos planta baja, y primera, comprobamos que los botones de planta cambian y aprovechamos para añadir la imagen de la planta Creamos ahora los botones para navegar por las habitaciones de la planta baja. Para ello lo primero que hay que hacer es volver al modo de edición pulsando el botón Desbloquear la página actual para la edición, situado abajo a la derecha de la pantalla. Selecicionamos la pestaña Enlace de página, y creamos un botón con destino la planta que deseemos, en este ejemplo Sala, y el resto de las estancias. Siempre, siempre, siempre, para que un cambio se haga hay que dar al botón de Aplicar cambios, de otra forma se perderá. Si ahora procedemos a seleccionar el check button Ocultar fondo, y sobre todo Aplicar, haremos el botón transparente, y así dará la sensación que pulsamos sobre la habitación, a la hora de seleccionar las estancias, es importante que el icono que hayamos escogido sea default on o default off, ya que son los que me permitirán una transparencia total. Podemos observar que aunque no aparezca nada cuando pulsamos por donde debería estar el botón aparece el botón en forma de semitransparencia. Guardamos, y continuamos con las otras páginas. Nota: Podemos comprobar que funciona en cualquier momento abriendo otra pantalla del navegador y yendo a PC/Tableta Visualization y navegando por nuestro configuración. Vamos ahora a configurar la vista de la sala, en este ejemplo en la sala hay dos luces regulables y tres on/off, tres persianas y un termostato para el control de un fan-coil para climatizar la sala. Para la navegación de las estancias, he creado una plantilla, que me permite ir a la siguiente estancia, a la anterior, o subir al menú planta baja. Primero crearemos los botones de navegación, para ello seleccionamos la pantalla Sala, la ponemos en modo edición y vamos a Enlace de página. Y en enlace de página, crearemos los botones Añadimos ahora la imagen de fondo 2.11 Creación de botones de control Y ahora procederemos ha añadir 1 botón para la persiana, 1 botón para una luz regulable, y 1 botón para una luz on / off. Empezaremos por la persiana, en la pestaña Objeto, seleccionaremos la dirección de grupo que deseemos enviar, en este caso queremos no solo subir bajar la persiana sino posicionarla, es por ello que seleccionamos la dirección de grupo del objeto de posición del actuador de persiana. Seleccionamos el icono que deseemos, en el ejemplo Blind_0. Como queremos representar la posición de la persiana, lo que haremos será añadir tantos iconos como estados queramos representar, para este ejemplo 10, para ello seleccionamos Iconos adicionales y procedemos de la siguiente manera. Observar que lo que hacemos es dar una horquilla de valores entre los cuales cada icono estará activo, así, por ejemplo, si la posición de la pantalla es 32% se mostrará el icono que marca el 30% de la posición. En este momento, somos capaces de enviar valores al bus, pero si cambia la posición de la persiana, por una escena, por la direcciones up/down, etc... el sistema no se enterará y mostrará un estado erróneo, es por ello que pondremos la dirección de estado de altura de la persiana, para ello seleccionamos Estado del Objeto y ponemos la dirección de grupo del objeto de realimentación de estado de la persiana. Hacemos lo propio para las luces regulables. Añadimos la luz binaria, on/off, aquí volveremos a poner un icono para el estado On, encendida y otro para el estado Off, apagado. Como habéis apreciado en las imágenes e ido añadiendo todos los elementos de la habitación, os recomiendo que para hacerlo seleccionéis un dispositivo y lo dupliquéis, luego simple mente tendréis que reubicarlo y cambiar las direcciones de grupo, la principal y la de estado una vez hecho esto es importantísimo pulsar el botón de aplicar para que los cambios sean efectivos. Guardamos y continuamos. Ahora procederemos a crear el control de temperatura de la habitación. 2.12 Creación de Widgets Para ello utilizaremos los Widgets, los widgets no son más que ventanas emergentes o Pop-up, que relacionaremos a botones. Primero como hasta ahora me crearé la plantilla utilizando Power Point, o la herramienta que queramos. Previamente en Vista de la estructura, Plantillas/widgets, creamos un Widget de temperatura con las siguientes características de tamaño e imagen. Añado un botón de la siguiente manera, en la sala Guardo y cierro Voy a edición del widget Temperatura Sala Y con la plantilla, pongo los botones que quiera, en mi caso, los de estado e clima: Protección, espera, noche y confort, de 1 byte y modo frio/calor. También añadiré la información de l temperatura, habrá una de escucha Temp. Ambiente y otra de escritura, temp de consigna. Es importante poner las unidades en la dirección de grupo Así como establecer unos rangos coherentes. Añadimos los objetos de temperatura como Objetos, y en modo de visualización seleccionamos sólo valor. Para la temperatura ambiente selecuionaremos sólo lectura, así no podre sobreescribirla. Ahora los modos de clima, el objetivo es tener lo siguiente: El valor Velocidad de ventilador, es un slider que va a limitar la velocidad máxima que puede adquirir el ventilador del Fan-Coil. Tenemos también los modos de funcionamiento KNX de 1 byte, un icono para seleccionar frio/calor en la habitación y otro que me muestra la velocidad actual del ventilador. Vemos los pasos. Observar que hemos puesto dos direcciones de grupo para los modos de funcionamiento, la primera me servirá para enviar un valor y la segunda para que me lo represente. Selecciono un icono por defecto en modo desactivado, en mi caso en gris, y otro en verde, como seleccionado. Recordar que los modos KNX son : 1 confort, 2 stand-by, 3 Night, 4 Protección. Procedemos de forma análoga para las velocidades de ventilación. La limitación de velocidad lo haremos en modo texto, de igual modo que las temperaturas, en la pestaña Objetos, previamente nos hemos asegurado que tengan el datapoint que necesitamos y le ponemos como sufijo oC o %, si queremos podemos dar propiedades del texto y adecuarlo a nuestro estilo. Ahora ya hemos hecho una habitación tipo, si queréis podéis duplicarla en Vista de la estructura, y de esta forma os ahorrareis tiempo. Hay varias opciones tanto en ventanas emergentes como en pantalla completa, que resumiremos a continuación. 2.13 Grafico simple En la pestaña Visualización del menú Configurator: El grafico simple es un tipo de grafico que guarda pocos valores, y sirve para mostrar los últimos n valores de forma fácil y rápida, en este ejemplo vamos a mostrar los valores de temperatura ambiente de la sala, para que se pueda observar el control que hemos realizado si se ajusta o no a los parámetros deseados. Ojo no funciona con valores de 1 bit. En la Pantalla de la Sala, la edito y añado un Gráfico, tal y como muestro. Aquí podre definir el tamaño de la ventana y los valores que muestro, y en caso de desearlo, podre hacerlo como ventana emergente. 2.14 Medidor En la pestaña Visualización del menú Configurator: El medidor es una forma de representar un valor de forma analógica con una forma similar a un velocímetro de un coche, también se muestra el valor de forma digital. Vamos a mostrar la velocidad del viento usando el medidor. Para ello vamos a la planta baja, la editamos y agregamos el Medidor. Observar que para variar el tamaño de este tipo de icono, se hace poniendo un valor absoluto de 100 a 500. Para poner el fondo de escala, los valores máximo y mínimo del objeto, se hace en Objetos, se selecciona Visor de parámetros de la dirección de grupo y se edita. 2.15 Etiqueta de texto En la pestaña Visualización del menú Configurator: La Etiqueta de texto no es más que un texto que podemos poner como y dónde necesitemos, siguiendo el ejemplo anterior, añadiremos la etiqueta de “Velocidad del viento” al Medidor, que hemos agregado anteriormente. Como en el caso del las variables de texto, puedo cambiar color, tamaño, tipo de letra… 2.16 Frame En la pestaña Visualización del menú Configurator: Si necesitamos redirigir al cliente a una página web, a un horario o tendencia, pero desde la navegación de las pantallas tenemos esta herramienta. Si clicamos en URL, podremos escoger que tipo de pantalla queremos, podemos mostrar uno de los gráficos de consumo, cambiar el horario del riego…, o redirigirles a alguna página web que es lo que mostraremos en el ejemplo. Vamos a hacer una ventana emergente, que nos dirigirá a nuestra pagina web, para que el cliente contacte con nosotros en caso de problemas. Primero añado una ventana emergente o widget que llamaré Pagina web, y tendrá un tamaño de 650x490 Añado un icono que llame a mi página web Y ahora en el Widget Página Web, añado la pagina web 2.17 Visualizar cámaras IP En la pestaña Visualización del menú Configurator: Añadir la visualización de una cámara ip es tan sencillo como añadir un objeto en la pantalla donde este la cámara, introducir la dirección IP de la misma, si tiene usuario y contraseña se introduce seguida de la dirección IP y escoger si se quiere visionar en una ventana nueva o no. Ejemplo cámara pelco: http://192.168.0.23/api/jpegControl.php?frameRate=10 Ejemplo cámara axis: http://user:[email protected]:80(puerto) 2.18 Creación de horarios Vamos a crear varios horarios, 1.- Riego temporizado 2.- Modos de clima en función de días laborables /vacacionales 3.- Posición de persianas 1.- Riego temporizado: vamos a la pestaña Funciones y seleccionamos Horario Ahora hemos creado un registro de horario que en mi caso se llama riego, y ahora lo configuro para la horquilla de días en los que quiero que este activo Pulso luego en eventos, y seleccionaré para que horas ha de funcionar Pongo en mi caso 10 minutos a las 6 de la mañana y 10 minutos a las 11 de la noche, y tres días por la semana. Ahora hago lo mismo para los modos de funcionamiento de clima, la idea es la misma que con la visualización, ya que utilizaré el objeto de 1 byte, y Cambiare de modo noche confort stand by confort noche. Podemos discernir entre días normales y festivos, si sabemos el día festivo lo podemos añadir de la siguiente manera Vamos ahora a crear un horario “abierto”, el de persianas, yo se que mi cliente quiere que las persianas de la sala estén sujetas a un horario, pero no se ni cuantos ni como. Creo el horario Persiana sala pero no le añado eventos Si vamos al la visualización de usuario, podremos observar que el cliente, siempre podrá añadir o suprimir tramos si el horario esta creado. 2.19 Creación de gráficos en la vista de navegación Vamos ha mostrar un ejemplo de un grafico con un valor de dos bytes, una temperatura. Nos vamos a la pestaña registro de tendencias, añadimos un nuevo registro y lo editamos. OJO: Como guardamos valores promedios, no me sirve para saber si algo se ha conectado puntualmente, ya que quizás el valor promedio se tomo como 0, si que sirve para ver el valor promedio de temperatura, consumo etc... Ponemos en objeto la dirección de grupo que nos interesa supervisar. Se almacenaran los datos guardados cada minuto en una media de 1 hora o 1 día o 3 días o 10 días, tal y como se ve a continuación. En la parte de visualización, podemos supervisar la variable en periodos de un día, un mes o un año y compararla con periodos anteriores. También desde la pestaña data, podemos descargar los datos en formato csv. 2.20 Alarmas Nos puede interesar que alguna acción me genere una alerta, esto lo realizaré mediante un script, lo haré en la lista de eventos, y me aparecerá en la pestaña de Alertas. Para que cualquier script genere una Alarma, es tan sencillo como añadir: alert(message, [var1, [var2, [var3]]]) Vamos ha hacer que me genere una alarma si la temperatura interior baja de 7ºC. temperatura = grp.getvalue('1/1/1') –-1/1/1 direccion de grupo de latemperatura interior de la estancia if temperatura < 7 then alert('La Temperatura ambiente ha bajado a niveles peligrosos, riesgo de rotura de tuberías: %.1f', temperatura) end 3 Programación Avanzada Hasta ahora hemos visto la parte “asequible” del homeLYnk, ahora vamos a ver la verdadera potencia del dispositivo, cuidado no es recomendable para todos los niveles, se precisan de conocimientos avanzados de programación, ya que las consecuencias pueden ser imprevisibles, si no se esta seguro de lo que se hace, ahora si se controla nos abre un abanico de posibilidades muy interesante. Vamos a mostrar unos pequeños ejemplos de la programación de Scripts 3.1 Script homeLYnk, me permite la programación de scripts con LUA. Existen varios tipos de Scripts, que usaré según lo necesito y que explico a continuación: Basado en eventos: Son funciones que se llamarán solamente cuando ocurra algo, en este caso telegramas de KNX, direcciones de grupo enviadas al bus. Residente: Son funciones que se llamaran cada cierto periodo de tiempo, pero siempre fijo, independientemente del día de la semana, mes y fecha. Horario: Son funciones que yo escogeré a que hora, día de la semana, días festivos, y/o mes quiero que se llamen, en un horario fijo. Funciones comunes: Son funciones generales que se llamaran desde otros scripts, y que me permitirán el no tener que llamarlas cada vez que escribo un script. Funciones de inicio: Sólo se llamarán cuando arranque el dispositivo, es útil para inicializar variables. Nota: Las anotaciones que se deseen hacer, se hacen poniendo dos guiones primero -- 3.2 AND y OR Supongamos que tenemos la necesidad de encender la luz exterior del jardín, si llueve, ya sea de día o de noche, y también cuando se haga de noche. Esto es lo que en lógica se llama una puerta OR u O lógica Haremos un evento residente, en este ejemplo, ya que esta función la pueden disparar varios eventos. Por ejemplo si en lugar de una puerta lógica de 2 entradas fuese de 25, podría repetir el script en todas ellas o hacerlo residente. Ahora en este caso podeis escoger lo que más os conevnga a vosotros. Observar que como no me va de 60 segundos hago que lo mire cada 60 seg. Y así no colapso el dispositivo. GUARDO Y EDITO. La dirección de grupo de crepúsculo es la 1/1/5 y la de lluvia la 1/1/1 y la de las luces del jardín 3/0/8 --OR u O de dos puertas --Primero hago una variable para cada dirección de grupo, si hay más más valor1 = grp.getvalue('1/1/1')-- le indico que busque su valor actual valor2 = grp.getvalue('1/1/5') if valor1 == true or valor2 == true then grp.write('3/0/8', true) else grp.write('3/0/8', false)-- si ni es de noche ni llueve, que se apague end Otro ejemplo Ahora queremos que si llueve y no hay nadie en el jardín baje las persianas (lo detectamos con la posición de la puerta de jardín), este script lo disparará el evento lluvia, ya que en caso contrario, no tiene sentido. Esto es una AND u Y lógica con una de las puertas negadas NOT. La dirección de grupo que me indica si llueve o no es la 1/1/1, y la dirección de puerta abierta es la 5/3/2. Como a esta función la dispara un evento, es imprescindible decir cual, en mi caso la lluvia 1/1/1, la de UP/Down de todas las persianas de la sala es la 2/0/35 Y ahora el script --AND o Y de dos puertas, la segunda negada --Primero hago una variable para cada dirección de grupo, si hay más más valor1 = grp.getvalue('1/1/1')-- le indico que busque su valor actual -- ******OJO quizás me interesa más la realimentación de estado***** valor2 = grp.getvalue('5/3/2') if valor1 == true and valor2 == false then --Aquí niego la entrada 2 grp.write('2/0/35', true) -- else -- si pongo algo aquí lo hará si no no!! end 3.3 Programación de Scripts con la Ayuda 3.4 Creación de cuenta e-mail Este script vuelve a ser residente, y lo ejecutaremos sólo una vez, por ello lo haremos en Funciones comunes. Y edito el script function mail(to, subject, message) -- asegúrate de que estos valores son los correctos local settings = { -- "from" dirección de envío de correo electrónico from = '[email protected]', -- smtp nombre de usuario user = '[email protected]', -- smtp contraseña password = 'mypassword', -- smtp servidor server = 'smtp.gmail.com', -- smtp puerto del servidor port = 465, -- activar ssl, necesario para gmail secure = 'sslv23', Cambio estos valores, los que están en verde, en función de los parámetros del proveedor de correo de nuestro cliente. 3.5 Envío de e-mail automático Ahora voy a hacer que cada vez que haya alarma de inundación, a parte de cortar la electroválvula del agua, me enviará un correo informándome de que ha habido un escape, y que es probable que necesite los servicios de un fontanero. La dirección de grupo de la alarma de inundación es la 7/1/1. Voy y creo un script llamado por un evento, que será la alarma de inundación, acuérdate de activarlo si quieres que funcione. Lo edito como muestro a continuación: --Enviar correo subject = ' Posible Inundación, electrovalvula de agua cerrada' message = ' Se ha producido una alarma de inundación en la vivienda... ' mail('[email protected]', subject, message) --cambiar la dirección de correo, por la deseada del destinatario end Cambio los valores que están en verde, en función de lo que necesite. 3.6 Envío de correo electrónico cada vez que me cambia la IP pública, para poder tener IP dinámica Hare un tipo de evento Horario, que me compruebe la IP pública todos los días cada 4 horas Observar que para poner más de una hora, lo hago con comas, lo edito - Obtener la dirección IP pública y el cambio de correo electrónico require ('socket.http) socket.http.timeout = 5 data = socket.http.request (http://checkip.dyndns.org/) -- Obtener la dirección IP pública y si cambia enviarlo vía e-mail require ('socket.http') socket.http.timeout = 5 data = socket.http.request ('http://checkip.dyndns.org/') -- Miro la ip pública if not data then log('Su dirección IP pública no ha podido ser averiguada') return end wan = "(% d +). (% d +). (% d +). (% d +)" wan = string.sub (data,string.find (data, wan)) -- Log (wan) WANIP = storage.get ('wan_ip') if wanip == nil then wanip = "0.0.0.0" storage.set('wan_ip', wanip) else if wanip == wan then -- No hacer nada else -- El correo electrónico ha tenido que estar configurado en Funciones comunes subject = 'Notificación Importante de homeLYnk' message = 'Su dirección IP pública ha cambiado: ' .. wan .. mail ('[email protected]', subject, message) log ("Su dirección IP pública ha cambiado:" .. wan) storage.set ('wan_ip',wan) end end wan = storage.get ('wan_ip') 3.7 Maestro hora y fecha Si se dispone de conexión a internet, homeLynk dispone de Network time protocolo (NTP). Con acceso a internet homeLYnk actualizará automáticamente la hora y la fecha desde los servidores definidos en Utilidades/Sistema/Services/NTP client: Ojo: clicar en el botón, no en la flechita. 0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org Hare ahora un script que me envíe la hora al bus todos los días a las 5:00 am, de esta forma tendré sincronizado la hora todos los días. -- primero obtengo la hora como una tabla now = os.date('*t') -- EL día de la semana empieza en domingo y he de convertirlo al formato KNX wday = now.wday == 1 and 7 or now.wday - 1 -- Tabla de hora time = { day = wday, hour = now.hour, minute = now.min, second = now.sec, } -- Tabla de fecha date = { day = now.day, month = now.month, year = now.year, } -- enviar al bus KNX grp.update('0/2/1', time, dt.time) grp.update('0/2/2', date, dt.date) 3.8 Datos Modbus: Power Meter Para la comunicación de Modbus, primero hemos de conectar el bus ModBus a nuestro equipo tal y como especifican las especificaciones. En este ejemplo conectaré una PM. Hay que crear unas direcciones de grupo KNX dónde se almacenarán los valores ModBus, de hecho vamos a crear una pasarela o Gateway KNX-Modbus. Os recomiendo que estas direcciones se añadan en un Dummy en el proyecto de ETS, así no habrá conflictos de duplicidad ni problemas con los acopladores, no obstante si se desea hacer de forma peligrosa, se puede crear directamente desde la pestaña de Objetos de homeLYnk. Hago las graficas de los valores que deseo mostrar y ahora realizamos el script 3.9 Ejemplo script PM7 En la pestaña Residente de la pestaña Funciones selecciono nueva Tengo varios tipos de scripts, los que son disparados por un evento, cambio de valor de una dirección de grupo KNX, y otros como los de este ejemplo que queremos que estén funcionando constantemente, son los que llama Residentes, nosotros indicaremos la frecuencia a la que se llamara a mi script, ojo no abuséis por que podéis saturar el bus KNX!!! Y señalo en mi caso una lectura cada minuto. Seguidamente lo edito. if not mb3 then -- abro la comunicación require('luamodbus') mb3 = luamodbus.rtu() mb3:open('/dev/RS485', 19200, 'E', 8, 1, 'H')-- configurar la red modbus por RS485 -- 19200 velocidad de transmisión (330,600,1200,4800,9600,19200,38400,57600,115200,230400) --'E' even, 'O' Odd, 'N' None -- 8 Numero de bits de dato : 5, 6, 7 u 8 -- 1 Numero de bits de stop : 1 o 2 -- Tipo de comunicación "H" Half duplex o 'F' Full duplex mb3:connect() end mb3:setslave(3) -- (3) Nº de esclavo de la red modbus o direccion modbus del dispositivo a leer mb3:flush() local V1,V2,V3, I1,I2,I3,W,VA,WA, frecuencia -- definición de variables --Hay tipos de datos en modbus de 1 byte o de 2 -- ejemplo tipo de datos de 1 registro --frecuencia PM7 frecuencia = mb3:readregisters(2016)-- registro 2017 frecuencia de red uno menos que el nº de registro de la PM grp.write('12/7/0',frecuencia)-- escribo el valor de frecuencia en la direccion de grupo KNX de frecuencia PM1 --ejemplo tipo de datos de 2 registros --Tension V1-N Pm7 r1, r2 = mb3:readregisters(1059, 2)-- registro 1060 tension L1-N if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/1', value) end --Energia Aparente PM7 r1, r2 = mb3:readregisters(1001, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/11', value) end --Energia Reactiva PM7 r1, r2 = mb3:readregisters(1003, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/12', value) end --Energia Real PM7 r1, r2 = mb3:readregisters(999, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/10', value) end --Potencia Aparente PM7 r1, r2 = mb3:readregisters(1007, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/8', value) end --Potencia Reactiva PM7 r1, r2 = mb3:readregisters(1009, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/9', value) end --Potencia Real PM7 r1, r2 = mb3:readregisters(1005, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/7', value) end --Intensidad I1-N Pm7 r1, r2 = mb3:readregisters(1033, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/4', value) end --Intensidad I2-N Pm7 r1, r2 = mb3:readregisters(1035, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/5', value) end --Intensidad I3-N Pm7 r1, r2 = mb3:readregisters(1037, 2) if r1 then value = bit.lshift(r1, 16) + r2 value = lmcore.inttohex(value, 4) value = knxdatatype.decode(value, dt.float32) grp.write('12/7/6', value) end 4 Como realizar copias de seguridad y/o exportar a otros homeLYnk Como habréis observado, para programar el dispositivo es imperativo estar online, así si quiero hacer modificaciones de un dispositivo ubicado en casa de un cliente, o bien lo hago en casa del cliente, o me conecto mediante una VPN, o tengo otro dispositivo en mi lugar de trabajo y lo importo exporto, de esta manera también me aseguro de tener copias de seguridad. 4.1 Realizar una copia de seguridad En la pestaña Utilidades selecciono el icono Copia de seguridad Y automáticamente se me descarga un archivo con extensión .tar.gz en la carpeta de descargas. 4.2 Cargar una copia de seguridad En Utilidades pulso el botón de Restaurar y selecciono el archivo.