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

Scene Home Center 2 Fibaro

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à 😉

[recent_deals per_page=”3″ columns=”3″ orderby=”date” order=”desc”]

 

Articles Similaires

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.