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”]