manual paso a paso HomeLYnk

Anuncio
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:password@192.168.0.23: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 = 'example@gmail.com',
-- smtp nombre de usuario
user = 'example@gmail.com',
-- 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('homelynk@schneider-electric.com', 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 ('homelynk@schneider-electric.com', 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.
Descargar