Корзина пуста

Использование входа S2 Fibaro Dimmer 2 для активации пользовательских сцен

У модуля FIBARO Dimmer 2 (да и не только у него, об этом позже), есть интересная возможность использовать входы S1 и S2 не только для управления нагрузкой, подключенной непосредственно к модулю и не только для управления другими устройствами, подключенными по ассоциации, но и для активации пользовательских сцен! Причем, что очень важно, можно отслеживать не просто нажатие на кнопку, подключенную ко входу, но так же двойное, тройное нажатие и удержание, чем сильно расширить функциональность системы.

Особенно удобно использовать вход S2 — в отличие от S1, его можно использовать совершенно независимо от нагрузки, подключенной к Fibaro Dimmer 2. Такаим образом, установив двухклавишный выключатель вместо одноклавишного, можно использовать первую клавишу по классической схеме для управления непосредственно диммируемым светом (влючить-ярче-слабее-выключить), а при помощи второй клавиши, например, сценой задавать точное значение яркости, к примеру, 50%.

За работу данной функции, в модуле FIBARO Dimmer 2 отвечает параметр 28. Поскольку, использование этого параметра увеличивает нагрузку на сеть Z-Wave, он по умолчанию выключен (значение 0). Учитывая этот факт, не включайте его без лишней необходимости, хотя мы не замечали какого бы то ни было замедления работы системы с включенным параметром на нескольких диммерах в сети.

Параметр 28 Scene Activation

Кроме параметра 28, для нормальной работы должен быть изменен параметр 26 (отключено использование входа S2 для управления подключенной к диммеру нагрузкой):

Параметр 26 Scene Activation

... и параметр 20, который определяет тип выключателя, подключенного ко входам S1 и S2.

Параметр 20 Scene Activation

Мы во всех наших проектах рекомендуем использование выключателей именно "звонкового" типа (momentary switch), это во всех смыслах практичнее и удобнее.

Схема подключения модулей

Для более наглядной демонстрации использования входа S2 для активации сцен (scene activation), соберем небольшой стенд. Одна часть схемы (верхняя) — классическое подключение FIBARO Dimmer 2 совместно с двухклавишным выключателем и нагрузкой в виде лампы накаливания. Вторая часть схемы (нижняя) — реле FIBARO Switch 1x2.5, не подключенное к выключателю, но нагруженное лампой накаливания.

Схема подключения FIBARO Dimmer 2 для Scene Activation

Задача состоит в том, чтобы клавишей, подключенной ко входу S1 диммера, управлять лампой накаливания, подключенной к нему же. А при помощи клавиши S2 — включать или выключать лампу, подключенную к реле, которая может быть расположена, допустим, вообще в другой комнате и не имеющая собственного выключателя.

Код сцены-обработчика активации входов S1 и S2 на языке Lua

--[[
%% properties
1611 sceneActivation
%% events
%% globals
--]]

-- у диммера надо настроить такие параметры (ассоциации не трогаем):
-- 20 = 0
-- 26 = 0
-- 28 = 1


local dimmerID = 1611 -- ID диммера
local lightID = 10 -- ID включаемого по S2 реле (света в другой комнате)
local scene = fibaro:getValue(dimmerID, 'sceneActivation') -- читаем событие

fibaro:debug(scene); -- для понимания значения при том или ином нажатии

if (scene == '26') then
  -- если нажали однократно S2, то включаем если выключен или 
  -- выключаем если включен свет с помощью реле lightID
  if (fibaro:getValue(lightID, 'value') == '0') then
    fibaro:call(lightID, 'turnOn')
  else
    fibaro:call(lightID, 'turnOff')
  end 
end
           	

Прицип работы скрипта достаточно прост. Сама сцена начинает выполняться, когда срабатывает триггер sceneActivation у устройства с ID 1611 (вторая строчка кода) — в нашем случае это диммер. То есть триггер, вызывающий сцену, как бы говорит нам: "что-то нажали на устройстве 1611", но пока не понятно какую клавишу и как именно и нам далее это нужно определить. Сохраняем код события в переменной scene и разбираем его. Нажимая клавиши разным способом (одинарное, двойное, тройное, долгое нажатие), экспериментально можно определить код каждого конкретного нажатия, выводя его через fibaro:debug(scene). В нашем примере, коду "26" соответствует однократное нажатие клавиши, подключенной ко входу S2 (а, например, двойному нажатию соответствует код "24"). После того, как мы знаем коды событий, создаем простое условие (или набор условий), исходя из которых, обрабатываем то или иное нажатие. В нашем примере, при нажатии на S2 на диммере, мы, в зависимости от текущего состояния реле (ID 10), либо включаем лампу, подключенную к нему, либо выключаем ее.

Помимо FIBARO Dimmer 2, активация сцен (параметр Scene Activaton) доступна в FIBARO Door/Window Sensor, FIBARO Universal Sensor и FIBARO Roller Shutter 2.

Вопросы и замечания пишите в комментариях.

Комментарии

Добрый день. Подскажите, пытаюсь запустить сцену с помощью S2 входа на Dimmer 2 (FGD 212). Код почти такой же, только задача по нажатию второй кнопки в прихожей, выключить свет в зале.
Проблема в том, что scene возвращает все время значение 0. И то, только когда в ручном режиме запускаю сцену (оно и понятно). В автоматическом сцена почему-то не запускается от нажатия s2.
Вот код:
--[[
%% properties
71 sceneActivation
%% globals
--]]

local DimmerID1 = 71 -- ID диммера, на котором нажимается S2
local DimmerID2 = 59 -- ID выключаемого по S2 диммера (света в зале)
local scene = fibaro:getValue(DimmerID1, 'sceneActivation') -- читаем событие с диммера ID 71

fibaro:debug(scene); -- для понимания значения при нажатии

if (scene == '26') then
-- если нажали однократно S2, то выключаем свет с помощью диммера с ID 59
fibaro:call(DimmerID2, 'turnOff')
fibaro:debug('свет выключен'); -- для понимания срабатывания выключения
end

Подскажите, в чем проблема. Материала по созданию сцен на LUA для Fibaro очень мало. что-то дельное найти удалось только на вашем ресурсе.

Извините, что долго молчали — спам-фильтр был неисправен и удалил ваше сообщение.

Попробуйте изменить заголовок таким образом:

%% properties
71 sceneActivation
%% events
%% globals

Добавить комментарий

Возникли вопросы?