Curso de Programación LUA

LUA 101

← Volver al Índice

LENGUAJE LUA:

lua

  • Implementado como una libreria, escrito en C limpio.
  • Un lenguaje de programación de extensión diseñado para apoyar la programación de procedimiento en general, con instalaciones de descripción de datos.
  • Destinado a ser utilizado como un potente y ligero lenguaje de script para cualquier programa que lo necesite.
  • Ofrece buen soporte para la programación orientada a objetos, programación funcional y programación basada en datos.

Temas de la lección

Objetivos del Curso– LUA

Tema Progreso:

← Volver a la lección

Estimado usuario,

En esta introducción:

  • Usted aprenderá los fundamentos del lenguaje de programación LUA.
  • Conocerás los pormenores sobre la creación de escenas.
  • usted conocerá sobre la arquitectura del dispositivo del Home Center 2.

Introduction – LUA

Tema Progreso:

← Volver a la lección

Creación de nueva escena en LUA

3.x interfaz habilitada completamente para nueva funcionalidad en Lenguaje LUA y la programación de escenas.

Para crear escenas basadas en LUA:

  • Abrir pestaña «Escenas»

0

  • Haz clic en el menú «Add scene»

1

  • Haga clic en «Guardar» en la sección «Agregar escena en LUA»

2

Ventana de creador de escena vacía

3

Cada escena escrito en LUA siempre debe tener una forma:

1

2

3

4

1 –[[ </br>

2 %% properties </br>

3 %% globals </br>

4 –]]

El encabezado es absolutamente esencial para cualquier escena. Debajo del encabezado ’%% properties’ van los Disparadores definidos, y el ‘%% globals’ son las variables globales – ambos mecanismos se describirán más adelante.

Ventana de edición de código

El texto puede ser escrito en la ventana de edición de código.En LUA, se escriben los comandos como en otros lenguajes de programación una línea debajo de la otra. Si ya conoces otros lenguajes de programación, esta línea no termina con ningún signo, aunque Lua ignora el punto y coma al final de la línea, Por lo que no tiene que deshacerse de los hábitos adquiridos de otros lenguajes de programación que requieren ese símbolo

Devices – LUA

Tema Progreso:

← Volver a la lección

Para entender sobre la programación en LUA es crucial saber qué dispositivos están incluidos. A continuación encontrará, qué tipo de dispositivos se incluyen en LUA.

Lista de dispositivos que también incluye HC_user. Desde 3.x interfaz, los usuarios se han convertido en los dispositivos. Con este enfoque, usted puede programar la etapa avanzada en la características individuales de los usuarios. Este procedimiento fue diseñado para unificar la funcionalidad de Home Center 2 usados en las escenas.

Al agregar un módulo de Z-WAVE a Home Center 2, se presenta como un Tipo de dispositivo:

  • binary_light – Relay Switches, dispositvos dos-estados, por ejemplo. Fibaro Relay Switch, Fibaro Wall Plug
  • dimmable lights – por ejemplo. módulo Dimmer, sirenas Z-WAVE externas
  • blind – Controladores Roller Shutters, por ejemplo. Fibaro Roller Shutter
  • virtual_device – Dispositivos virtuales creados por el usuario
  • thermostat_setpoint – Válvulas termostáticas, por ejemplo. Danfoss Living Connect
  • motion_sensor – sensores de movimiento, sensores binarios, por ejemplo. Fibaro Motion Sensor
  • door_sensor – sensores de Puerta/Ventana, por ejemplo. Fibaro Door/Window Sensor
  • smoke_sensor – sensores binarios de humo, por ejemplo. Fibaro Smoke Sensor
  • water_sensor – sensores de inundación, por ejemplo. Fibaro Flood Sensor
  • ip_camera – Cámaras IP

En la interfaz del Home Center 2 los dispositivos disponibles se caracterizan por:

  • deviceID – número de dispositivo único en la base de datos del Home Center 2
  • tipo – tipo del dispositivo (por ejemplo, binary_light o smoke_sensor)
  • propiedades – (por ejemplo. Value, dead): ilustran el estado actual del dispositivo, las propiedades del dispositivo son información de solo lectura, como (el sensor de movimiento está infringido, el interruptor de encendido/ apagado está encendido y el shutter está abierto)
  • acciones – (por ejemplo, TurnON (), turnOFF ()): representa las acciones reales que se pueden realizar en el dispositivo. Por ejemplo, si tenemos el módulo de conmutador de relé, podemos activarlo (acción ON () (turnON ()) o desactivarlo (acción OFF (). Si tenemos luz regulable, podemos encenderla, para alguna palanca exacta (por ejemplo, para el 50%), que se representa mediante la acción setValue ().

TIP:
Si no está seguro de las acciones reales que tus dispositivos pueden ejecutar también puede obtener una vista previa y usarlos desde la interfaz de Home Center 2 mientras crea una nueva escena de LUA.

5

Escenas – LUA – Script 1 – ENCENDER

Tema Progreso:

← Volver a la lección

El uso del lenguaje LUA nos permite programar cualquier algoritmo de control. En los próximos capítulos encontrará ejemplos y tutoriales Cómo iniciar sus primeros algoritmos de control de su Casa Inteligente.

Primero, crearemos el la escena más simple posible, que será simplemente encender el dispositivo.

Para ENCENDER el dispositivo fibaro:call es la función indicada. Esta es la función más elemental en las escenas Home Center 2. Esta función envía una solicitud al dispositivo para realizar una acción.

La función toma al menos dos argumentos:

  • deviceID – El ID del dispositivo mencionado
  • actionName – acciones que puede realizar en el dispositivo (por ejemplo, turnOn, TurnOff, SetValue)

Suponga que tiene un sistema en el Relay Switch con deviceID 2 para que este se encienda y apague, para esto, necesita escribir el siguiente script:

1

2

3

4

5

6

1 –[[ <br />

2 %% properties <br />

3 %% globals <br />

4 –]] <br />

5 <br />

6 fibaro:call(2, ‘turnOn’) –turn ON/OFF function

Nuestro primer programa sencillo consiste en encabezado y una secuencia de comandos de escena estándar. En este código al dispositivo de DeviceID número 2 se envía la instrucción para ENCENDER. Para ejecutar la escena, haga clic en el botón INICIO.

Frase

1

–turn ON/OFF function

es el lugar en el código que será omitido durante la ejecución del guión – los encabezados son un caso especial – este lugar no se aplica a los comentarios. Los comentarios son muy útiles cuando se escribe y analiza el código, especialmente cuando lo lee más tarde o cuando otra persona lo analiza. Es bueno usar comentarios.

Para ejecutar la escena debe ser guardado (botón GUARDAR) y luego puede iniciarla presionando INICIO. Escrito antes del script se ejecutará una vez por cada vez que presione el INICIO. De esta manera también puedes ejecutar esta escena desde las interfaces móviles. Encenderá el dispositivo todas las veces, cuando haga clic en el botón RUN.

Escenas – LUA – Script 2 – APAGAR

Tema Progreso:

← Volver a la lección

En este guión crearemos la escena que APAGUE el dispositivo. Para apagar el dispositivo, volveremos a utilizar la misma función fibaro:call(). La única diferencia es que pondrás otra acción en ella, que será ‘turnOff’.

1

1 –[[<br/>2 %% properties<br/>3 %% globals<br/>4 –]]<br/>5 fibaro:call(2, ‘turnOff’) — this function will turn OFF the device

Los scripts anteriores funcionan exactamente igual que Script1: se basa en el mismo guión de encabezado y escena. Al dispositivo con DeviceID 2 se envía una acción a turn OFF.

Escenas – LUA – Script 3 – ENCENDER, ESPERAR 3 SEGUNDOS, APAGAR

Tema Progreso:

← Volver a la lección

En el próximo guión crearemos la escena que enciende el dispositivo y lo apaga después de 3 segundos.

Por encender y de las instrucciones que podemos usar fibaro:call() función.

Por tiempo de retardo usaremos la función llamada fibaro:sleep(). Estas funciones demoran la siguiente instrucción por algún tiempo declarado. Por ejemplo función fibaro:call(3000) congelará las instrucciones durante los próximos 3 segundos. El tiempo 3000 se expresa en milisegundos. 1 s = 1000 ms.

1

2

3

4

5

6

7

8

1 –[[ <br />

2 %% properties <br />

3 %% globals <br />

4 –]] <br />

5 <br />

6 fibaro:call(2, ‘turnOn’) –- turns ON device <br />

7 fibaro:sleep(3000) — waits 3s <br />

8 fibaro:call(2, ‘turnOff’) –- turns OFF the device

Como antes primera parte superior del script es un encabezado estándar, el resto del código son fibaro:call y el botón fibaro:sleep funciones En esta secuencia de comandos, la escena encenderá el dispositivo con el ID del dispositivo 2, luego esperará 3 segundos y luego apagará el mismo dispositivo.

TIP:
Como puede ver, es muy fácil crear estos retrasos en LUA. Los retrasos son muy útiles en sistemas domésticos inteligentes. El tiempo de demora es no limitado en el sistema de domótica Fibaro.

Escenas – LUA – Guión 4 – DEBUGGER

Tema Progreso:

← Volver a la lección

El mecanismo básico de casi todos los idiomas programables es un depuradorFibaro LUA tiene el depurador también. Después de wiki: “La depuración es un proceso metódico de encontrar y reducir el número de errores, o defectos, en un programa de ordenador o una pieza de hardware electrónico, por lo que es comporta como se esperaba”.

La definición suena tal vez un poco complicado, pero la depuración es una herramienta muy útil. Se ayuda a los programadores a controlar los lugares exactos en el código que se ejecuta la secuencia de comandos, por lo que mejora el análisis y la hora de la detección de errores de programa. Usted debe notar, que en LUA, como en otros idiomas programables código se ejecuta línea por línea. En primer lugar se ejecutan las instrucciones de cabecera y luego la línea por línea de código de script.

La función de depuración en escenas Fibaro LUA se llama fibaro:debug()
Esto funciona registros de impresión deseada. Este registros de depuración se imprimen en la sección de depuración del creador guión.

Vamos a crear otra secuencia de comandos que utiliza el mecanismo de depuración simple:

1

2

3

4

5

6

1 –[[ <br />

2 %% properties <br />

3 %% globals <br />

4 –]] <br />

5<br />

6 fibaro:debug(‘Hello world!’)

De hecho esta escena hace nada al lado que muestra un registro sencillo con “Hola mundo!” Cadena de letras.

En la ventana de depuración veremos:


Escenas – LUA – Guión 5 – GUIONES anteriores juntos

Tema Progreso:

← Volver a la lección

En el guión anterior Está familiarizado con función fibaro:debug() Vamos a crear un ejemplo más avanzado:

1

2

3

4

5

6

7

8

9

10

11

12

1 –[[ </br>

2 %% properties </br>

3 %% globals </br>

4 –]] </br>

5 </br>

6 fibaro:call(2, ‘turnOn’) — turns ON device </br>

7 fibaro:debug(‘Device with DeviceID 2 is Turned ON!’) </br>

8 fibaro:debug(‘I’m waiting 3 seconds’) </br>

9 fibaro:sleep(3000) — waits 3s </br>

10 fibaro:debug(‘Now I will turn off the device’) </br>

11 fibaro:call(2, ‘turnOff’) — turns off the device </br>

12 fibaro:debug(‘The script was executed correctly’)

¿Como funciona?

Como ahora script se ejecuta línea por línea. En primer lugar por favor el código de cabecera está marcada y luego la escritura se convierte en el dispositivo. En el próximo paso depurador se muestra el mensaje Dispositivo con DeviceID 2 está activada! y ‘Estoy esperando 3 segundos. Entonces función fibaro:sleep función está empezando a contar con 3000 ms. Después de este tiempo script se ejecuta la siguiente línea que es función fibaro:debug función con el mensaje «Ahora voy a apagar el dispositivo. Entonces se convierte en realidad del dispositivo por fibaro:call En la última línea de depurador imprime el mensaje de que ‘El script se ha ejecutado correctamente’.

¿Dónde podemos usarlo?

Como se puede ver arriba el código se ejecuta línea por línea y después de cada instrucción ejecutada depurador nos informa sobre el lugar correcto ejecución de código. Gracias a él si depuración no se imprimirá la última información de ‘El script se ejecuta correctamente, podemos aprender que había algún error en la línea anterior. Esta es la información de retroalimentación no tiene precio para nosotros. En las secuencias de comandos muy simples depurador no es tan importante, ya que el código es corto y simple. Si algo va mal probablemente podemos encontrar el fallo por nosotros mismos. Sin embargo, en las secuencias de comandos más avanzados o en scripts escritos por otra persona para encontrar los errores en el código sin depurador sería muy difícil y requiere mucho tiempo.

Escenas – LUA – Guión 6 – PASS VALOR DE UNA FUNCIÓN

Tema Progreso:

← Volver a la lección

En este paso, aprenderá a pasar valor a una funciónComo usted probablemente sabe, no todos los dispositivos domóticos funciona como activar o OFF. No son sólo los interruptores binarios en su sistema de casas inteligentes. También hay otro tipo de dispositivos como atenuadores o persiana enrollable que pueden tener estados indirectos. No puede haber la instrucción como: abrir las persianas de rodillos para el 50% o gire en el atenuador de 75%. Para manejar este tipo de comandos que vamos a utilizar (de nuevo) nuestra función básica fibaro:call.

fibaro:call envía la instrucción de ejecución de algún dispositivo. Los argumentos que contiene son deviceID and the instrucción de acción. Dimmer o roller shutter tienen acción adicional, que se llama ‘setValue‘.

Sintaxis se basa la siguiente manera:

Fibaro: call (10, ‘setValue’, ’50’)

Digamos que tendremos siguientes dispositivos en nuestra casa inteligente:

  • Interruptor de relé (con deviceID 2)
  • Dimmer (con deviceID 5)
  • Roller Shutter (con deviceID 10)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

1 –[[ </br>

2 %% properties </br>

3 %% globals </br>

4 –]] </br>

5 </br>

6 fibaro:debug(‘Start of the program’) </br>

7 fibaro:debug(‘I will turn on the device with deviceID=2’) </br>

8 fibaro:call(2,’turnOn’) –- turns ON the device </br>

9 fibaro:debug(‘I am waiting 5 seconds’) </br>

10 fibaro:sleep(5000) — waits 5 seconds </br>

11 fibaro:debug(‘I waited 5 seconds, now I will open roller blinds for 50%’) </br>

12 fibaro:call(10, ‘setValue’, ’50’) –- opens blinds </br>

13 fibaro:debug(‘I opened the shutters, now I will turn on the light for 75%’) </br>

14 fibaro:debug(I will wait 5 seconds’) </br>

15 fibaro:sleep(5000) — waits 5 seconds </br>

16 fibaro:call(5, ‘setValue’,’75’) — set light </br>

17 fibaro:debug(‘Light set’) </br>

18 fibaro:debug(‘I will turn off the devices’) </br>

19 fibaro:call(2, ‘turnOff’) — turns off Relay Switch </br>

20 fibaro:call(5, ‘turnOff’) — turns off Dimmera </br>

21 fibaro:debug(‘I will close the shutters’) </br>

22 fibaro:call(10, ‘turnOff’) — closes the shutter </br>

23 fibaro:debug(‘Devices was turned off – code was executed correctly’)


Escenas – LUA – Guión 7 – Obtiene el valor DEL DISPOSITIVO

Tema Progreso:

← Volver a la lección

En el siguiente paso, aprenderá funcionalidad muy importante – la forma de obtener el valor de la dispositivo.Como ya saben lado de realizar alguna acción del dispositivo también se puede obtener sus propiedades. Por ejemplo el movimiento del sensor de la propiedad sería si el sensor se infringió o no se infringió. Dimmer puede encender o apagar. Relay Switch podría encender o apagar. Por supuesto, los dispositivos pueden compartir muchas de esas propiedades, pero en principio se aprenderán únicos básicos.

Por Ejemplo:

Digamos que tenemos relé conmutador con deviceID 2. Este tipo de dispositivo es binary_light, que puede tener algunas propiedades. Por el momento el más importante para nosotros sería propiedad denominada “valor”.

Valor es propiedad del dispositivo que almacena un estado exacto del dispositivo. Si el valor = 0 entonces el dispositivo está apagado, si el valor = 1 entonces el dispositivo se enciende.

Para obtener el valor del dispositivo que tendrá que utilizar la función apropiada. Esta función se llama fibaro:getValue(deviceID, propertyName).

Ahora aprenderá siguiente mecanismo básico de los lenguajes de programación – valor de la la variable. En la programación de ordenadores, una variable es una ubicación de almacenamiento y un nombre simbólico asociado (un identificador) que contiene alguna cantidad o información conocida o desconocida, esta información se denomina un valor. Así que, de hecho, – la variable tiene siempre tres atributos – tipo, nombre y valor ..

Para crear la variable en LUA tenemos que declarar que:

1

2

1 local myValue </br>

2 myValue = 10

Este comando va a declarar un valor llama myValue, y en la siguiente línea que asigna el valor 10 a la misma.

Ahora bien, si queremos usar algún valor dispositivos que tenemos que asignar este valor a la variable. Así que podemos decir, que el sistema va a ver el valor del dispositivo si lo asignamos a la variable.

Podemos hacerlo de la siguiente manera:

1

1 local myValue = fibaro:getValue(2, ‘value’)

Ahora, cuando el sistema se ejecutará la función fibaro:getValue, asignará el valor del dispositivo (con DeviceID = 2) a la variable llamada myValue.

Por enciende relay switch este valor ascenderá 1 ..

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

1 –[[ </br>

2 %% properties </br>

3 %% globals </br>

4 –]] </br>

5 </br>

6 local myVariable –declaration of Value </br>

7 </br>

8 fibaro:debug(‘Now I will turn on the Deivce with deviceID=2’) </br>

9 fibaro:call(2, ‘turnOn’) –-turns on the device </br>

10 myVariable = fibaro:getValue(2, ‘value’) </br>

11 fibaro:debug(‘myVariable is = ‘ .. myVariable) </br>

12 fibaro:debug(‘Now I will turn off the device’) </br>

13 fibaro:debug(‘Waiting for 3 seconds’) </br>

14 fibaro:sleep(3000) </br>

15 </br>

16 fibaro:call(2, ‘turnOff’) </br>

17 fibaro:debug(‘I’ve turned off the device’) </br>

18 fibaro:sleep(3000) </br>

19 myVariable = fibaro:getValue(2, ‘value’) </br>

20 fibaro:debug(‘MyVariable is now = ‘ .. myVariable) </br>

21 </br>

22 fibaro:debug(‘Now I will turn off deviceID=2’) </br>

23 fibaro:call(2, ‘turnOn’) </br>

24 fibaro:sleep(3000) </br>

25 myVariable = fibaro:getValue(2, ‘value’) </br>

26 fibaro:debug(‘Now my variable, again is = ‘ .. myValue)

En el principio nos declara variable local llamada myVariable. Sistema muestra la información de la función fibaro:debug, y luego por la función fibaro:call se enciende el dispositivo. Valor de la variable se establece para la escritura 1. Luego de apagar el dispositivo y muestra el valor de la variable de nuevo. Es igual a 0. En la etapa final, el sistema utilizando el fibaro:call la función está mostrando valor final de la variable.

Escenas – LUA – Guión 8 – Si la declaración ENTONCES CONDICIONAL

Tema Progreso:

← Volver a la lección

Ahora aprenderá siguiente elemento de lenguajes de programación que se llama IF-THEN condicional comunicado. Sentencia condicional es una característica que realiza acciones específicas dependiendo de la condición declarada. Por ejemplo, si deviceID = 3 se pone en ON luego apagar deviceID = 5.

Cada instrucción IF-THEN condicional tiene siguiente sintaxis::

1

2

3

4

5

1 if (condition) then </br>

2 </br>

3 instruction </br>

4 </br>

5 end

En el principio vamos a crear sencilla condicional comunicado. SI deviceID = 3 se pone en ON luego apagar deviceID = 5

1

2

3

4

5

6

7

8

9

10

11

12

1 –[[ </br>

2 %% properties </br>

3 %% globals </br>

4 –]] </br>

5 local myVariable –declaration of variable </br>

6 </br>

7 fibaro:call(2, ‘turnOn’) –turnsON device=2 </br>

8 myVariable = fibaro:getValue(2, ‘value’) </br>

9 </br>

10 if (myVariable == ‘1’) then </br>

11 fibaro:call(3, ‘turnOn’) </br>

12 end

En el primer paso que declara la variable llamada myVariable. A continuación se enciende el sistema DeviceID = 2. Para sistema de myVariable variable asigna el valor 1. A continuación, el sistema está checking la condición. Si la condición es verdadera (valor = 1), entonces la escritura se moverá a la siguiente línea y se convierte en el dispositivo con deviceID = 3. Si la condición es falsa (valor = 0), entonces guión detener la ejecución del código.

Escenas – LUA – Guión 9 – encienda el interruptor USANDO DOOR/WINDOW SENSOR

Tema Progreso:

← Volver a la lección

Ahora podemos utilizar la información anterior para crear la escena que se encienda el interruptor door/window sensor. Digamos que tenemos sensor de ventana de la puerta con deviceID 145. Tipo de dispositivo de este tipo es door_sensor. Tiene varias propiedades como BatteryLevel, armado, pero en este momento sólo estamos interesados en “VALOR”.

Como sabemos el valor obtiene el estado del dispositivo. Si el sensor se infringió (o se abrió) después value=1, si el sensor no se infringió (o puertas están cerradas) el value=0. Si queremos comprobar cuál es el valor de nuestro sensor tenemos que comprobarlo por función fibaro:getValue Tal función se ve de la siguiente manera:

1

1 fibaro:getValue(145, ‘value’)

Si quisiéramos comprovar si el sensor está armado podríamos utilizar

1

1 fibaro:getValue(145, ‘armed’)

Vamos a tratar el siguiente script:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

1 –[[ </br>

2 %% properties </br>

3 %% globals </br>

4 –]] </br>

5 </br>

6 local myVar1 = fibaro:getValue(145, ‘value’) –-state of the sensor </br>

7 fibaro:debug(‘value = ‘ .. myVar1) –-prints value of variable1 </br>

8 local myVar2 = fibaro:getValue(2, ‘value’) –-state of on/off switch </br>

9 fibaro:debug(‘value = ‘ .. myVar2) –-prints value of variable2 </br>

10 </br>

11 if (myVar1 == ‘1’) then </br>

12 </br>

13 if (myVar2 == ‘0’) then </br>

14 fibaro:call(2, ‘turnOn’) </br>

15 else </br>

16 fibaro:call(2, ‘turnOff’) </br>

17 end </br>

18 </br>

19 end

Escena funcionará de la siguiente manera:

  • a MyVar1 guión asigna valor del sensor
  • Fibaro: Valor de las impresiones de depuración de MyVar1
  • a myvar2 guión asigna valor del conmutador
  • Fibaro: Valor de las impresiones de depuración de myvar2
  • Script comprueba la condición – si MyVar1 = 1, por lo que se abre sensor ventana de la puerta
  • En el siguiente paso se utilizó siguiente condición de declaración – si la puerta se abrió y el interruptor se apaga luego lo enciende o se establece en estado opuesto.

Escenas – LUA – Guión 10 – ESCENA activa automáticamente

Tema Progreso:

← Volver a la lección

Todos los guiones anteriores antes tenían una característica común – la ejecución de una sola vez . Estos scripts trabajaron sólo cuando hemos presionado el botón START. Por supuesto que hay escenas que deben ser activados solamente por el botón, pero sobre todo la concepción de las escenas es que deben ser activan automaticamente en base a otros dispositivos indirectos. Para encender automáticamente el estado que necesitamos para declarar TRIGGER Triggers son eventos que llaman a la escena de la escritura de ejecución.

Digamos que queremos crear la escena que se encienda la luz (deviceID 3) cuando motion_sensor (deviceID 50) detectará el movimiento. Guión será simple:

1

2

3

4

5

6

1 local myVariable –declaration of Variable </br>

2 </br>

3 myVariable = fibaro:getValue(50, ‘value’) </br>

4 if (myVariable == ‘1’) then </br>

5 fibaro:call(3, ‘turnOn’) </br>

6 end

1) declaramos la variable
2), asignamos valor de sensor de movimiento (deviceID 50) a la variable
3) Creamos declaración de estado – Si el sensor se rompe a continuación, encienda la luz.

La pregunta es – Como el sistema ksabe ahora comprobar el valor del Motion Sensor todo el tiempo?

La respuesta es – el TRIGGER.

Trigger informa al motor de escenas, que nuestra propiedad importante del dispositivo está cambiando y la escena debe ser ejecutado. Declaramos que en la cabecera. Trigger tiene la sintaxis siguiente:

[DeviceID] [propiedad]

1

2

3

4

5

1 –[[ </br>

2 %% properties </br>

3 50 value </br>

4 %% globals </br>

5 –]] </br>

Por lo tanto, declaramos detonante de deviceID = 50. Por ahora en adelante, cada vez que si el valor de deviceID 50 cambiará – motor de escena ejecutará la secuencia de comandos. Permite comprobar ejemplo de nuevo anterior con sensor:

1

2

3

4

5

6

7

8

9

10

11

1 –[[ </br>

2 %% properties </br>

3 50 value </br>

4 %% globals </br>

5 –]] </br>

6 local myVariable –declaration of Variable </br>

7 </br>

8 myVariable = fibaro:getValue(50, ‘value’) </br>

9 if (myVariable == ‘1’) then </br>

10 fibaro:call(3, ‘turnOn’) </br>

11 end

Esta escena funcionará de la siguiente manera:
1) Declaramos Trigger en la cabecera. El disparador se declara para deviceID = 50 para el valor de la propiedad. Así que cada vez que cambia este valor – el sistema es ejecutar la escena.
2) Declaramos variable local llamada myVariable.
3) Para myVariable asignamos valor del sensor de movimiento.
4) Creamos declaración de estado – Si el sensor se rompe a continuación, encienda la luz (deviceID = 3).

También podemos añadir la siguiente línea a su vez deviceID 3 en el caso de la puerta están cerrados.

1

2

3

4

5

6

7

8

9

10

11

12

13

1 –[[ </br>

2 %% properties </br>

3 50 value </br>

4 %% globals </br>

5 –]] </br>

6 local myVariable — declaration of Variable </br>

7 </br>

8 myVariable = fibaro:getValue(50, ‘value’) </br>

9 if (myVariable == ‘1’) then </br>

10 fibaro:call(3, ‘turnOn’) </br>

11 else </br>

12 fibaro:call(3, ‘turnOff’) </br>

13 end


Resumen – LUA

Tema Progreso:

← Volver a la lección

Estimado usuario,

Gracias por completar nuestro curso usted. Ahora usted puede:

  • Modificar escenas propuestas
  • Crear sus propias escenas
  • Visitar Fibaro Forum para obtener nuevas ideas y códigos fuente para las escenas