Головоломка с сценарием взятия/снятия

FORUM_NAME: АРМ Орион Про версии до 1.20
Описание: АРМ "Орион Про" — пакет программного обеспечения для аппаратно-программного комплекса ИСО "Орион", на котором реализуются системы охранной сигнализации, контроля и управления доступом, охранного видеонаблюдения, автоматика противопожарных систем, сопряженные с инженерными системами объектов.
Справочная информация, руководства для АРМ Орион Про версии до 1.20
Модератор: Модераторы

Уважаемые пользователи! В связи с отсутствием возможности оплачивать хостинг сайта и отсутствием материальной помощи от пользователей, Форум вынужден будет прекратить работу с Марта месяца 2024 года!.


DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #81 DruG » 07.07.2016, 17:06

действительно, тут и ограничений то никаких не видно. Может попробовать разбить диапазон на два? с 22:00 до 23:59 и с 0:00 до 5:00, правда тут целая минута выпадает

pet-and M
Активный участник
Активный участник
pet-and M
Активный участник
Активный участник
Возраст: 45
Репутация: 139
Сообщения: 3300
Зарегистрирован: 11.11.2012
С нами: 11 лет 4 месяца
Профессия: инженер
Откуда: Санкт-Петербург

Непрочитанное сообщение #82 pet-and » 07.07.2016, 18:12

Видимо, все дело в том, что скрипт не умеет понимать значение "время", а пользуется исключительно математическим принципом, где не существует правила, что 5>22. Поэтому, придется смириться с тем, что надо обозначать два условия: от 22:00 до 23:59 и от 00:00 до 5:00. С этим как раз все более менее ясно.
А вот почему не работает с 8:00 до 21:00, таки непонятно.
Хотя, как вариант - попробуйте задать время в условии не " 5:00", а "05:00".

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #83 XAMMEP » 08.07.2016, 10:58

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "23:59")) или ((ТекущееВремя() >= "00:00") и (ТекущееВремя() <= "05:00"))
- срабатывает только до 0, после нет

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "23:59")) или ((ТекущееВремя() >= "0:00") и (ТекущееВремя() <= "5:00"))
или

Код: Выделить всё

((ТекущееВремя() >= "0:00") и (ТекущееВремя() <= "5:00")) или ((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "23:59"))
- срабатывает все 24 часа

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "05:00"))
- не срабатывает вовсе

Добавлено спустя 15 минут 40 секунд:
Даже попробовал

Код: Выделить всё

((ТекущееВремя() >= "22:00") и (ТекущееВремя() <= "5:00"))
или

Код: Выделить всё

((ТекущееВремя() >= "0:00") и (ТекущееВремя() <= "2:00"))
- результат потрясает, не срабатывает с 5.00 до 9.59, в остальное время сработки
Где логика?????!!!!!

pet-and M
Активный участник
Активный участник
pet-and M
Активный участник
Активный участник
Возраст: 45
Репутация: 139
Сообщения: 3300
Зарегистрирован: 11.11.2012
С нами: 11 лет 4 месяца
Профессия: инженер
Откуда: Санкт-Петербург

Непрочитанное сообщение #84 pet-and » 08.07.2016, 11:32

Даааа, лажа. По всей видимости надо стучать в ТП, чтобы когда-нибудь пофиксили багу.

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #85 XAMMEP » 08.07.2016, 11:33

pet-and писал(а):Даааа, лажа. По всей видимости надо стучать в ТП, чтобы когда-нибудь пофиксили багу.
Уже постучал...

DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #86 DruG » 08.07.2016, 15:55

чот реально какой-то бред %)
если ТП ничего толкового не сделает, то можно попробовать изобрести очередной велосипед))
резюком заглушить один свободный шлейф, создать два окна времени для сценариев, по расписанию в 22:00 этот свободный шлейф ставится на охрану, в 5:00 по второму расписанию шлейф снимается. Сценарий оповещения проверяет состояние шлейфа и если на охране - оповещение ON, снят с охраны - оповещение OFF. Такой способ просто обязан работать ;)

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #87 XAMMEP » 08.07.2016, 16:03

Вот их ответ
Здравствуйте!

Попробуйте просто (ТекущееВремя() >= "22:00") или (ТекущееВремя() <= "05:00").


Мой: По вашему примеру срабатывает: ON- с 22 до 9.59, OFF- с 10 до 22
С двумя ЕСЛИ пробовал, так они друг друга начинают гасить... Может проще реле времени воткнуть? :du_ma_et:

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #88 XAMMEP » 11.07.2016, 14:35

Во что ТП скинула:

Здравствуйте!

Для отработки сценария по Вашей просьбе необходимо временной формат перевести в целочисленный.
Вот такой текст надо использовать внутри сценария для сравнения дат, предварительно введя переменные t, t1, t2:


Код: Выделить всё

t = ПолучитьЧасы(ТекущееВремяДатаЧисло())*3600+ ПолучитьМинуты(ТекущееВремяДатаЧисло ())*60+ ПолучитьСекунды(ТекущееВремяДатаЧисло());
t2 = СобратьВремя(5,0,0,0);
t2 = ПолучитьЧасы(t2)*3600+ ПолучитьМинуты(t2)*60+ ПолучитьСекунды(t2);
t1 =СобратьВремя(22,0,0,0);
t1 = ПолучитьЧасы(t1)*3600+ ПолучитьМинуты(t1)*60+ ПолучитьСекунды(t1);
Если (t<=t2) ИЛИ (t>=t1) Тогда


РабМесто4.ЗаписатьВЖурналСобытий("Оповещение охраны ON");
иначе РабМесто4.ЗаписатьВЖурналСобытий("Оповещение охраны OFF");

Во как оказывается...
Пойду тестить )))

Добавлено спустя 1 час 21 минуту:
Работает!!!!! :ya_hoo_oo:

nick108
nick108
Репутация: 0
Сообщения: 67
Зарегистрирован: 04.09.2015
С нами: 8 лет 6 месяцев
Профессия: iT

Непрочитанное сообщение #89 nick108 » 11.07.2016, 17:03

Код: Выделить всё

t = ПолучитьЧасы(ТекущееВремяДатаЧисло())*3600+ ПолучитьМинуты(ТекущееВремяДатаЧисло ())*60+ ПолучитьСекунды(ТекущееВремяДатаЧисло());
t2 = СобратьВремя(5,0,0,0);
t2 = ПолучитьЧасы(t2)*3600+ ПолучитьМинуты(t2)*60+ ПолучитьСекунды(t2);
t1 =СобратьВремя(22,0,0,0);
t1 = ПолучитьЧасы(t1)*3600+ ПолучитьМинуты(t1)*60+ ПолучитьСекунды(t1);
Если (t<=t2) ИЛИ (t>=t1) Тогда
РабочееМесто1.ПоказатьСообщение("ночь");
Конецесли;
Если (t<=t1) ИЛИ (t>=t2) Тогда
РабочееМесто1.ПоказатьСообщение("день");
Конецесли;

Отрабатывает когда как, днем у него ночь, ночами и день и ночь разом... Еще поковыряю для унифицировать в одном сценарии оба действия по разному времени...

pet-and M
Активный участник
Активный участник
pet-and M
Активный участник
Активный участник
Возраст: 45
Репутация: 139
Сообщения: 3300
Зарегистрирован: 11.11.2012
С нами: 11 лет 4 месяца
Профессия: инженер
Откуда: Санкт-Петербург

Непрочитанное сообщение #90 pet-and » 11.07.2016, 18:41

Даааа, чего-то не подумал об этой функции, честно говоря, совершенно не представлял, нафига она нужна. А вот жешь, где собака может покопаться.

Nikita17rus
Nikita17rus
Репутация: 0
Сообщения: 1
Зарегистрирован: 14.10.2016
С нами: 7 лет 5 месяцев
Профессия: Монтажник

Оперативная задача орион

Непрочитанное сообщение #91 Nikita17rus » 05.12.2016, 06:39

Помогите перестали браться кабинеты под охрану, не знаю в чем может быть беда
Mixail 51 » 05.12.2016, 20:14 Замечание
Нарушение правил, не нужно в нескольких темах писать одно и тоже сообщение.

XAMMEP
Автор темы
Аватара
XAMMEP
Автор темы
Репутация: 12
Сообщения: 226
Зарегистрирован: 17.10.2014
С нами: 9 лет 5 месяцев
Профессия: Специалист ИТСО
Откуда: Чебоксары

Непрочитанное сообщение #92 XAMMEP » 05.12.2016, 08:50

Nikita17rus писал(а):Помогите перестали браться кабинеты под охрану, не знаю в чем может быть беда
А по подробнее можно... А то вариантов уж больно много :ny_tik:

nick108
nick108
Репутация: 0
Сообщения: 67
Зарегистрирован: 04.09.2015
С нами: 8 лет 6 месяцев
Профессия: iT

Непрочитанное сообщение #93 nick108 » 19.02.2019, 09:14

XAMMEP, а так же остальные участники и профи, к вам очередной вопрос!
Есть сценарии, установлены на взятие раздела или снятие. Исходя из временных рамок проверки внутри сценария происходят определенные действия. НО! Требуется добавить критерий будни это или выходные!
На нашел такого в мануале, как можно обойти?!
Заранее премного благодарен!

ПС: И верхние скрикты исходя из временных рамок если меньше или равно, то 23:59:35 - сценарий не отработает, т.к. секунд 35, мертвый период! Следующее условие уже от 00:00 т.к.

google M
Активный участник
Активный участник
Аватара
google M
Активный участник
Активный участник
Возраст: 39
Репутация: 93
Сообщения: 2099
Зарегистрирован: 11.06.2015
С нами: 8 лет 9 месяцев
Профессия: Инженер
Откуда: Sml - Msk
ICQ

Непрочитанное сообщение #94 google » 19.02.2019, 09:29

nick108, например вот так
https://lifehacker.ru/kakoj-den-nedeli/

Сам не проверял, но, по идеи, должно работать. Останется вставить эти вычисления в скрипт - несколько строчек кода.

DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #95 DruG » 19.02.2019, 09:57

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

nick108
nick108
Репутация: 0
Сообщения: 67
Зарегистрирован: 04.09.2015
С нами: 8 лет 6 месяцев
Профессия: iT

Непрочитанное сообщение #96 nick108 » 19.02.2019, 10:43

DruG, по жизни получится так: в ПН поставлю раздел планировщиком, ибо он умеет пн-пт, а в СБ соот-но снимаю, исходя из этого будет решение с основным разделом и действие! Просто и без формул, пошел делать, спасибо!

DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1723
Зарегистрирован: 03.03.2016
С нами: 8 лет
Профессия: безобразнорабочий

Непрочитанное сообщение #97 DruG » 10.10.2020, 10:52

nick108 писал(а):

Код: Выделить всё

t = ПолучитьЧасы(ТекущееВремяДатаЧисло())*3600+ ПолучитьМинуты(ТекущееВремяДатаЧисло ())*60+ ПолучитьСекунды(ТекущееВремяДатаЧисло());
t2 = СобратьВремя(5,0,0,0);
t2 = ПолучитьЧасы(t2)*3600+ ПолучитьМинуты(t2)*60+ ПолучитьСекунды(t2);
t1 =СобратьВремя(22,0,0,0);
t1 = ПолучитьЧасы(t1)*3600+ ПолучитьМинуты(t1)*60+ ПолучитьСекунды(t1);
Если (t<=t2) ИЛИ (t>=t1) Тогда
РабочееМесто1.ПоказатьСообщение("ночь");
Конецесли;
Если (t<=t1) ИЛИ (t>=t2) Тогда
РабочееМесто1.ПоказатьСообщение("день");
Конецесли
;
не некропостинга ради, а исключительно для будущих поколений :hi_hi_hi:
два последних условия Если правильно работать не смогут:
во-первых - граничное время входит в оба условия, т.е. в 5:00:00 или 22:00:00 оба условия прям чётко выполняются.
во-вторых - применение ИЛИ опять таки делает любое время входящим в оба условия, т.е. первое Если 4:00:00 <= 5:00:00 - да, второе Если 4:00:00 <= 22:00:00 - да.


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «АРМ Орион Про версии до 1.20»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 19 гостей

forum-bolid.ru : Отказ от ответственности