

Самые читаемые новости
- Как обмануть геркон
- Столица Приволжья понизит градус уличной преступности
- Как Спецлаб берет государственные тендеры?
- Первая презентация системы СРАЗУПОМОЩЬ
- Чем отличается дешевый телефонный домофон от GSM-домофона Спецлаб?
- Продажная безопасность
- Баран с флешкой
- От тюремной камеры спасла камера видеонаблюдения
- Технологичный беспредел на дорогах
- Видеокурс для воров.
От простого до сложного.
Универсальный язык программирования поведения охранных систем, конечно, удобен тем, что пользователю требуется лишь сделать выбор из заданных меню. Но все желания в жизни все равно не вместишь даже в самый крупный гипермаркет.

Поэтому в SL++ кроме простого способа постановки задач существует и более продвинутый – создание собственных скриптов. Конечно, он требует от пользователя базовых знаний распространенного языка программирования JAVA. Но таких людей уже много, и они тоже имеют право на долю информации в нашем пресс-центре. Если обычно мы стараемся все объяснять на самом простом уровне, то сегодняшняя статья посвящена тем, кто рвется в бой, чтобы сотворить что-то свое собственное и неповторимое. Итак, если Вы не знакомы со скриптами, то сегодняшнее описание не для Вас, ждем Вас завтра.
Разберем небольшой пример, как по датчику открытия двери сейфа включить запись видео, затем выключить ее после закрытия сейфа, извлечь этот интервал времени из архива и экспортировать его в avi-файл с заданным кодеком.
Составляем три события: начало записи, остановка и экспорт.

Старт активизируется при сработке датчика.

При этом мы параллельно записи запускаем скрипт:
var flag = client.GetVariable("FlagExport");
if ( isNaN(flag) || flag == 0 ){
var dNow = new Date();
var dBegin = new Date( dNow.valueOf() - (5 * 1000) );
client.SetVariable("CaptureBegin", dBegin.valueOf() );
client.SetVariable("CaptureEnd", 0 );
var nMonth = dBegin.getMonth()+1;
var sExportFileName = dBegin.getFullYear() + "-" + nMonth.toString() + "-" + dBegin.getUTCDate() + " " +
dBegin.getHours() + "_" + dBegin.getMinutes() + "_" + dBegin.getSeconds();
client.SetVariable("ExportFileName", sExportFileName );
client.SetVariable("FlagExport", 1 );
}
Чтобы понимать, где мы находимся, в первую очередь контролируем ПЕРЕМЕННУЮ, для данной операции она должна быть равна 0. При этом скрипт определяет, сколько сейчас времени, и вписывает флаг с данным временем во временную переменную клиента GOALcity как точку начала экспорта. Кроме того, ПЕРЕМЕННОЙ присваивается единица, чтобы наша дальнейшая логика понимала о существовании такого события.
Теперь датчик вернулся в свое первоначальное положение (дверь сейфа закрылась). Мы стандартными средствами задаем окончание видеозаписи, если оно требуется.

И запускаем другой скрипт:
var flag = client.GetVariable("FlagExport");
if (flag == 1){
var dEnd = new Date();
client.SetVariable("CaptureEnd", dEnd.valueOf() );
client.SetVariable("FlagExport", 2 );
}
Он понимает, что ПЕРЕМЕННАЯ равна 1. Это значит, что при наличии сигнала от датчика пришло время установить временной флаг об окончании записи в архив. После чего ПЕРЕМЕННАЯ увеличивается до значения 2.
Наличие последнего факта отслеживает событие «Экспорт». Как только появляется «двойка», срабатывают следующие действия:
- Экспорт видеоролика из архива от момента начального флага до последующего. В свойствах заданы параметры кодека и формат кадра. Имя файла строится из цифр времени.
Экспортировать архив:
Имя файла: $var( ExportFileName )
- ПЕРЕМЕННАЯ сбрасывается в начальное значение 0, что говорит об окончании работы и дает возможность начать работу снова при проверке условия сработки датчика открытия сейфа.

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


