Управление освещением
    Презентации
    Технические решения на LogicMachine
    Визуализация
      evika.ru    Технические решения на LogicMachine    Динамическое изменение времени запуска программ по расписанию из визуализации LogicMachine

    Динамическое изменение времени запуска программ по расписанию из визуализации LogicMachine

    Задача

    Позволить конечному пользователю изменять время открытия и закрытия жалюзи утром и вечером из визуализации, не заходя в раздел «Скрипты».

    Создаем 3 объекта:

    — Время открытия (тип: 10. 3 байта время / день недели)
    — Время закрытия (тип: 10. 3 байта время / день недели)
    — Управляемый объект, например жалюзи (тип: 1. 1 бит (бинарный))

    Пользовательская библиотека программ

    Добавляем следующий код в Скрипты — >  Общие функции (Scripts -> Common functions)

     

    function matchdate(now, obj)
        -- получить значение объекта 
        local odate = grp.getvalue(obj)
        -- проверяем только часы и минуты, секунды игнорируем
        return type(odate) == 'table' and now.hour == odate.hour and now.min == odate.minute
      end
      function scheduler(startobj, endobj, ctrlobj)
        -- текущая дата и время как тип table
     local now = os.date('*t')
        -- проверяем, не нужно ли открывать жалюзи
       if matchdate(now, startobj) then
       grp.write(ctrlobj, true, dt.bool)
       end
       -- проверяем, не нужно ли закрывать жалюзи 
       if matchdate(now, endobj) then
       grp.write(ctrlobj, false, dt.bool)
     end
     end

    Программа по расписанию

    Создаем скрипт по расписанию, который запускается каждую минуту и содержит следующий код

    scheduler("Время открытия", "Время закрытия", "Жалюзи")

    Редактирование объектов из визуализации

    В этом примере учитывается только значение времени, значение даты (дня недели) игнорируется.

    Создание более сложной логики

    Для создания более сложной логики мы можем создать событийный скрипт, который будет обрабатывать событие при записи в групповой адрес управляемого объекта. Например:

    -- Утро: открыть жалюзи1 на 50%, жалюзи2 – 100%
    -- Вечер: оставить открытыми жалюзи 1 на 10%, жалюзи 2 закрыть полностью
    value = event.getvalue()
     
    -- Утро
    if value then
        grp.write('Жалюзи 1', 50)
        grp.write('Жалюзи 2', 100)
    -- Вечер
    else
        grp.write('Жалюзи 1', 10)
        grp.write('Жалюзи 2', 0)
    end




    Copyright © Evika.ru 2017
    All Rights Reserved