La scène précédente (Leçon 1) avait un inconvénient important – elle devait être déclenchée manuellement. Aujourd’hui je vais vous expliquer comment automatiser une scène en code LUA. Nous allons allumer une lumière à l’ouverture de la porte. Pour cela nous allons utiliser deux modules :
- binary_light (vu dans la Leçon 1)
- door_sensor (détecteur d’ouverture de porte/fenêtre)
Pour comprendre comment fonctionne door_sensor nous allons nous aider d’API fibaro:debug déjà vu dans la Leçon 1. (nous supposons que notre door_sensor porte le numéro ID = 22 et notre binary_light a toujours ID = 100)
–[[
%% properties
22 value
%% globals
--]]
local doorSensorValue = fibaro:getValue(22, ‘value’)
fibaro:debug(‘Mon etat = ‘ .. doorSensorValue)
Nous déclarons notre variable doorSensorValue et grâce à la commande fibaro:getValue (Leçon 1) nous luis attribuons l’état actuel de notre door_sensor.
En exécutant la scène manuellement dans la console Debug on obtient Mon etat = 0 ou Mon etat = 1 en fonction de l’état de notre module. Une fois activée la scène nous donnera l’état du module à chaque changement.
Utilisons cela pour activer notre deuxième module binary_light
–[[
%% properties
22 value
%% globals
--]]
– Lecture de l’état value du module 22 door_sensor
local value = fibaro:getValue(<doorSensor>, ‘value’)
— si l’état door_sensor = 1 alors on allume la lumière
if (value == ’1′) then
fibaro:call(100, ‘turnOn’)
end
La scène fonctionne bien mais la lumière va s’allumer à chaque ouverture de porte donc pour que cela ne fonctionne plus il faut désactiver notre scène ou…… tous simplement allumer la lumière si notre door_sensor est activé. Il faut modifier notre script.
–[[
%% properties
22 value
%% globals
--]]
– Lecture de l’état value du module 22 door_sensor
local value = fibaro:getValue(22, ‘value’)
– Lecture de l’état d’activation du module 22 door_sensor
local armed = fibaro:getValue(22, ‘armed’)
– si l’état value door_sensor = 1 et il est activé alors on allume la lumière
if (armed == ’1′ and value == ’1′) then
fibaro:call(100, ‘turnOn’)
end
Et voilà