Горячая линия Embedded System Rus:8-800-775-06-34 (звонок по России бесплатный)

LM5_N
LM-Wall_N
DALI_N
Vita_N

Сценарий: Выключить всё когда уходите. Включить когда вернетесь домой, только то, что было выключено

Шаг 1 – Соединитесь с LogicMachine

Соединитесь с LogicMachine при помощи стандартных параметров доступа (IP: 192.168.0.10; login/password: admin/admin)

Шаг 2 – Создайте сценарий: “Выключить все/включить, что было выключено”

На панели Скрипты (Scripting) нажмите кнопку Событийные (Even-based), затем добавьте сценарий, нажав Добавить новый скрипт (Add new script). В данном примере сценарий будет запущен каждый раз при активации группового адреса KNX со значениями 12/1/1

Шаг 3 – Сохраните сценарий и войдите в редактор

После сохранения сценария, нажмите на значке в колонке Редактор (Editor), чтобы войти в редактор сценариев. Вы легко можете найти подходящий код для ввода среди встроенных шаблонов, расположенных в левой части окна.

-- сохраняем ключ
key = 'multiswitch_1'
 
-- группы используемые в скрипте
groups = {
 
-- 1 байтовое диммирование
{ address = '0/0/7', status = '0/0/10', dt = dt.scale },
 
-- 1 байтовое диммирование
{ address = '0/0/8', status = '0/0/11', dt = dt.scale },
 
-- 1 битовое управление
{ address = '0/0/9', status = '0/0/12', dt = dt.bool },
 
}
 
-- текущее действие
on = event.getvalue()
 
-- текущее значение выключателя
value = storage.get(key .. 'status', false)
 
-- сейчас свет включён и мы его выключаем.
if value and not on then
    state = {}
    -- сохраняем текущее состояние для каждой группы и выключаем свет
    for _, group in ipairs(groups) do
        if type(group) ~= 'table' then
            group = { address = group }
        end
    gdt = group.dt or dt.bool
    state[ group.address ] = {
    value = grp.getvalue(group.status or group.address),
    dt = gdt
    }
    -- отправляем 0 или false, в зависимости от типа данных
    val = group.dt == dt.scale and 0 or false
    grp.write(group.address, val, gdt)
end
 
-- сохраняем значения и отмечаем что мы выключили
storage.set(key .. 'groups', state)
storage.set(key .. 'status', false)
end
 
-- сейчас свет выключен и мы его включаем - возвращаем значения
if not value and on then
    state = storage.get(key .. 'groups', {})
    -- возвращаем значения для каждой группы
    for group, v in pairs(state) do
    grp.write(group, v.value, v.dt)
end
 
-- отмечаем что свет включен
storage.set(key .. 'status', true)
end