Вход / Регистрация / Добавить статью

Запуск скрипта на dzVents по времени

dzVents

Триггеры времени dzVents

Domoticz dzVents

Существует несколько вариантов триггеров времени. Важно знать, что события таймера Domoticz запускаются только один раз каждую минуту, поэтому одна минута — это самый маленький интервал для ваших таймерных скриптов. Тем не менее, dzVents дает вам много возможностей для полного контроля над тем, когда и как часто вызывается ваш скрипт (время в формате 24 часа и все даты в дд / мм).

Триггеры времени в скриптах мы определяем для того, чтобы скрипт срабатывал в строго указанное Вами время или промежуток времени.

Пример. Розетка включается каждый день в 13:00 и  выключается в 21:00. Ночник включается при наличии движения в комнате от заката до рассвета.

Пример использования триггера времени в скриптах dzVents (timer)

on = {
   timer = {
   'every minute',              -- вызывает скрипт каждую минуту
   'every other minute',        -- каждую минуту: xx: 00, xx: 02, xx: 04, ..., xx: 58
   'every xx minutes',          -- начиная с xx: 00 запускает каждые xx минут
                                          -- значение (от 0 до 24)
   'every hour',                -- 00:00, 01:00, ..., 23:00  (24x за 24hrs)
   'every other hour',          -- 00:00, 02:00, ..., 22:00  (12x за 24hrs)
   'every xx hours',            -- начиная с 00:00, запускает каждый xx час 
                                          -- значение (от 0 до 24)
   'at 13:45',                  -- конкретное время
   'at *:45',                   -- каждые 45 минут часа
   'at 15:*',                   -- каждую минуту с 15:00 до 16:00
   'at 12:45-21:15',            -- между 12:45 и 21:15. Использовать '*' нельзя!
   'at 19:30-08:20',            -- между 19:30 и 8:20, а затем на следующий день
   'at 13:45 on mon,tue',       -- в 13:45 только по понедельникам и вторникам (английский)
   'on mon,tue',                -- по понедельникам и вторникам
   'every hour on sat',         -- вы правильно догадались
   'at sunset',                 -- использует информацию о закате солнца из Domoticz
   'at sunrise',                -- использует информацию о восходе солнца из Domoticz
   'at sunset on sat,sun',
   'xx minutes before sunset',
   'xx minutes after sunset',
   'xx minutes before sunrise',
   'xx minutes after sunrise'   -- Угадай ;-)
   'between aa and bb'          -- aa / bb может быть отметкой времени, как 15:44
                                         -- aa / bb может быть восход / закат
                                         -- aa / bb может быть xx минут до / после 
                                            восхода / заката
   'at nighttime',              -- между закатом и восходом солнца 
   'at daytime',                -- между восходом и закатом
   'at daytime on mon,tue',     -- между восходом и закатом только по пн и вт
   'in week 12,44'              -- в 12 или 44 неделю
   'in week 20-25,33-47'        -- между 20-25 или между 33-47 неделями 
   'in week -12, 33-'           -- неделя <= 12 или неделя >= 33
   'every odd week',
   'every even week',           -- нечетные или четные недели
   'on 23/11',                  -- 23 ноября (дд / мм)
   'on 23/11-25/12',            -- между 23/11 и 25/12
   'on */2,15/*',               -- каждый день в феврале или каждый 15-й день месяца
   'on -3/4,4/7-',              -- до 3/4 или после 4/7
   -- все их можно объединить:
-'at nighttime at 21:32-05:44 every 5 minutes on sat, sun',
-'every 10 minutes between 20 minutes before sunset and 30 minutes 
  after sunrise on mon,fri,tue on 20/5-18/8'
            -- или просто сделайте:
            function(domoticz)
            -- вы можете использовать domoticz.time чтобы получить текущее время
            -- Обратите внимание, что эта функция вызывается каждую минуту!
            -- пользовательский код, который возвращает true или false
                ...
            end
       },
   }

События таймера запускаются каждую минуту. Если такой триггер возникает, dzVents будет сканировать все события на основе таймера и будет оценивать правила. Если у вас есть правило on mon, скрипт будет выполняться каждую минуту, но только в понедельник. Помните о логике при использовании нескольких типов триггеров таймера.  Нет смысла комбинировать триггер для определенного или мгновенного времени с триггером для диапазона или последовательности раз (например, «на закате» каждые 6 минут) в той же конструкции. По аналогии ‘between aa and bb’ имеет смысл только с мгновенными aa и bb.

Одно важное замечание: если Domoticz по какой-либо причине пропускает событие таймера, вы можете пропустить триггер! Таким образом, вы должны создать некоторые отказоустойчивые проверки или некоторую избыточность (проверка по двум условиям), если у вас есть критические временные элементы для управления. Нет ничего, что нельзя сделать на dzVents.

Ограничения при использовании

Реализация every xx minutes и every xx hours ограничена. Интервал сбрасывается каждые *: 00 (для минут) или 00: *для часов. Используйте интервал, который является целым делителем из 60 (или 24 часа). Таким образом, можно использовать значения 1, 2, 3, 4, 5, 6, 10, 12, 15, 20 и 30 минут.

Денис Лунин

Радиоинженер, техно-гик. Есть опыт разработчика.

Оцените автора
( Пока оценок нет )
Добавить комментарий

"Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности