Условие попадания события во временной промежуток: различия между версиями

Материал из Sprut.hub Wiki
Нет описания правки
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
Если вы хотите проверить условие по периоду времени с точностью до минут, то пока придется использовать блок кода в разделе Если.
Если вы хотите проверить условие по периоду времени с точностью до минут, то пока придется использовать блок кода в разделе Если. При этом сам период времени - не является триггером для срабатывания сценария. При включенном "желтом кружочке" - триггером будет являться только время начала и окончания периода.
 
При этом, данный блок кода не является триггером для запуска сценария. Его можно использовать только в качестве дополнительного условия проверки в режиме: '''"Если сработал датчик движения и текущее время находится в указанном промежутке, тогда выполнить вот это"'''


== Вариант в блочном сценарии ==
== Вариант в блочном сценарии ==
Строка 13: Строка 11:
Если блок периода времени, включен как триггер, то это запустит срабатывание сценария в указанные часы в промежутке времени. То есть в данном примере - сценарий будет запущен в 7 утра и 23 часа вечера.
Если блок периода времени, включен как триггер, то это запустит срабатывание сценария в указанные часы в промежутке времени. То есть в данном примере - сценарий будет запущен в 7 утра и 23 часа вечера.


{{QuoteYellow|Причем в 23 часа - сработает блок Иначе, при его наличии}}
{{QuoteYellow|Причем в 7 утра - сработает блок Тогда, а в 23 часа - сработает блок Иначе, при его наличии, так как период времени завершен}}
[[Файл:Период времени - сценарий триггер.png|центр|обрамить]]Чтобы использовать период времени только как условие попадания события в этот промежуток, триггер с блока периода времени необходимо снять
[[Файл:Период времени - сценарий триггер.png|центр|обрамить]]Чтобы использовать период времени только как условие попадания события в этот промежуток, триггер с блока периода времени необходимо снять. Тогда сценарий будет работать только тогда, когда сработает тревога у сигнализации в период с 7 утра до 23 вечера.
[[Файл:Период времени - сценарий.png|центр|обрамить]]
[[Файл:Период времени - сценарий.png|центр|обрамить]]


== Вариант с помощью блоков кода ==
== Вариант с помощью блоков кода ==
При этом, данный блок кода не является триггером для запуска сценария. Его можно использовать только в качестве дополнительного условия проверки в режиме: '''"Если сработал датчик движения и текущее время находится в указанном промежутке, тогда выполнить вот это"'''


== Внутри одних суток ==
== Внутри одних суток ==

Текущая версия от 19:31, 2 января 2024

Если вы хотите проверить условие по периоду времени с точностью до минут, то пока придется использовать блок кода в разделе Если. При этом сам период времени - не является триггером для срабатывания сценария. При включенном "желтом кружочке" - триггером будет являться только время начала и окончания периода.

Вариант в блочном сценарии

В блочных сценариях появился блок, в котором можно выбирать период времени, при соблюдении которого - сценарий будет выполняться.

Он добавляется в блоке Если, с условием выполнения всех блоков в разделе Если в режиме "Все сразу"

При этом его использовать можно несколькими способами:

Если блок периода времени, включен как триггер, то это запустит срабатывание сценария в указанные часы в промежутке времени. То есть в данном примере - сценарий будет запущен в 7 утра и 23 часа вечера.

Причем в 7 утра - сработает блок Тогда, а в 23 часа - сработает блок Иначе, при его наличии, так как период времени завершен

Чтобы использовать период времени только как условие попадания события в этот промежуток, триггер с блока периода времени необходимо снять. Тогда сценарий будет работать только тогда, когда сработает тревога у сигнализации в период с 7 утра до 23 вечера.

Вариант с помощью блоков кода

При этом, данный блок кода не является триггером для запуска сценария. Его можно использовать только в качестве дополнительного условия проверки в режиме: "Если сработал датчик движения и текущее время находится в указанном промежутке, тогда выполнить вот это"

Внутри одних суток

let time = new Date().getHours() * 60 + new Date().getMinutes();
let start = 01 * 60 + 25;
let end = 03 * 60 + 30;
return ((time >= start) && (time <= end))

где:

в блоке start 01 - это часы, 25 это минуты начального периода

в блоке end: 03 - это часы, 30 это минуты конечного периода

При переходе через полночь

let time = new Date().getHours() * 60 + new Date().getMinutes();
let start = 17 * 60 + 25;
let end = 03 * 60 + 30;
return ((time >= start) || (time <= end))

где:

в блоке start 17 - это часы, 25 это минуты начального периода

в блоке end: 03 - это часы, 30 это минуты конечного периода