[LUA HC2 – Leçon 2] – Association de modules

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)

1
2
3
4
5
6
7
--[[
%% properties
22 value
%% globals
--]]
local doorSensorValue = fibaro:getValue(22, 'value')
fibaro:debug('Mon etat = ' .. doorSensorValue)
--[[
%% 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 😉

1
2
3
4
5
6
7
8
9
10
11
12
--[[
%% 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
--[[
%% 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--[[
%% 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
--[[
%% 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à 😉

  • Pas de commandes groupées pour le moment.

 

Laisser un commentaire