Программирование AXIS NetEye


 

Axis разработал расширенный сервис под названием CRON для обеспечения выполнения сервером камеры последовательностей периодических команд. Этот сервис позволяет пользователю программировать осуществляемые AXIS NetEye события и выполняемые функций в зависимости от состояния триггеров/времени (triggered functions). Можно получить доступ к редактору для генерации файла CRON скрипта из домашней страницы камеры. В то же время можно использовать стандартный текстовый редактор этих целей и загружать полученный файл по FTP. 

Каждая процедура содержит следующие элементы: 

  • Comment(s)-Комментарии 
  • A trigger condition-Состояние триггеров 
  • Command(s)-Команды
  • Символ окончания процедуры %

Комментарии

Хорошим стилем программирования считается наличие перед началом каждой процедуры комментариев с ее кратким описанием. Комментарии не являются обязательными, но они должны следовать за символом <#>, как это показано ниже: 

 

# <comment>

Пример 

# This CRON entry will...

Состояние триггеров

Выполнение содержащиеся в процедуре команды зависит от состояния триггеров. Состояние триггеров задается шестью раздельными полями, заканчивающимися обязательно двоеточием ":". 

Поля времени и даты  
Первые пять полей определяют время и дату события, т.е. минуту, час, день, месяц и день недели. Шестое поле определяет событие по значениям Input и Boot, связанными с соответствующими событиями. 

Синтаксис каждого поля определяется следующими правилами: 

  • Каждое поле времени или даты может содержать несколько цифровых переменных события, которые разделяются запятыми или дефисом. 
  • Каждое поле ограничиватся пробелом 
  • Знак звездочка <*> означет все значения соответствующих переменным времени и даты. Например, * * * * * означает каждую минуту, каждый час, каждый день, каждый месяц и каждый день недели. 
  • Значения численных переменных, разделенных дефисом <-> означает соответствующий диапазон значений. Например, 2-6 означает от 2 до 6. 

Пример:  
Срабатывать каждый месяц, между 4ым и 8ми числами в 10.03,12.03 и 14.03, 
используя 24-часовое время дня 

3 10,12,14 4-8 * * :

Поле Input и Boot 
Шестое поле содержит массив символов. Это поле не обязательно и определяет срабатывание по значениям Input и Boot. 

Оно позволяет запрограммировать NetEye по включению, загрузке и по заранее определенным состояниям Digital Input I (Цифровой вход 1) и/или Digital Input 2 (Цифровой вход 2) используя триггерные переменные boot, B, I1 и I2 соответственно. 

Конъюнкция перечисленных выше триггерных переменных с использованием логической фенкции AND (&) позволяет создавать сложные триггерные механизмы. 

Примеры: 

 

/B (Control button переход из состояния low в high)
\B&1I1 (Control button переход из high в low и Input 1 в high)
0I1&1I2 (Input 1 low и Input 2 high)

Ниже перечислены допустимые input и boot переменные и их возможные конъюнкции: 

 

Input и Boot 
переменные
Описание 
boot Bootup
\B Запустить после логического перехода high-low кнопки Control
/B Запустить после логического перехода low-high кнопки Control 
1B Запустить после состояния high кнопки Control (нажата) 
0B Запустить после состояния low кнопки Control (отпущена) 
Все из перечиссленных выше условий запуска, т.е. "/"," "\," "0" и "1" таже могут входить в конъюнкцию с условиями по переменным входных портов Ports 1 и Ports 2 . Пример:
\I1 Активизировать после логического перехода high-low логического состояния взодного порта Port 1
/I2 Активизировать после логического перехода low-high логического состояния входного порта Port 2
1I1 Активизировать когда входной Port 1 принимает значение high 
0I2 Активизировать когда входной Port 2 принимает значение low 

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

 

Поля Time и Date

Поле Input и Boot (не обязательны) 

Minute Hour Day Month Day of the week Conditional tag
* * * * * *
0-59 0-23 1-31 1-12 0-6 
0 = Sunday
boot 

I1 
I2

Команды

Внутри процедур используется несколько команд. Все команды должны оканчиваться на точку с запятой <;>. 

Список команд: 

  • mail - Послать e-mail используя протокол Simple Mail Transfer Protocol (SMTP) 
  • ftp - Передать изображение на удаленных хост используя FTP
  • snapshot - Обновить последнее <щелкнутое> изображение
  • online - Набрать модем для РРР- подключения.
  • offline - Прекратить текущее РРР- подключение.
  • reset - Осуществить перезагрузку.
  • sleep - Сделать паузу в выполнении CRON- скрипта.

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

Пример CRON-скрипта

Этот пример демонстрирует программирование нескольких процедур в рамках одного CRON-скрипта: 

 

# Это пример расширенного CRON-скрипта: 

# Раз в день я хочу, чтобы моя мать получала e-mail l 
# содержащий изображение lastshot.jpg. 
0 0 * * * * : 
mail -s "Hi mom! Look what my little camera has taken for you." -a lastshot.jpg -t mother@some.site; 
 

# Это вторая процедура, которая записывает изображение fullsize 
# используя протокол ftp на ftp-сервер an.ftp.site на   
#/home/snapshots когда input 1 становится high.  

* * * * * /I1 : 
ftp -host an.ftp.site -user aUser -pass aPass -src fullsize.jpg -dest home/snapshots; 
 

# Эта третья процедура, которая набирает ISP и запоминает   
# изображение на ftp-сервере, каждый 
# час. Затем NetEye связь прекращает. 
0 * * * * : 
online -dial aNumber -user aUser -pass aPass; 
ftp -host an.ftp.site -user aUser -pass aPass -src fullsize.jpg -dest home/snapshots; 
offline; 

Загрузка скрипта 

Ниже описывается последовательность загрузки CRON-скрипта, т.е. cron.txt в NetEye по FTP: 

  1. Начать FTP-сессию и залоггироваться как root, используя пароль root. 
  2. Установить FTP в binary mode, используя камендуbin.
  3. Загрузить скрипт используя команду
  4. put cron.txt cronscript

FTP выдаст сообщение "File transfer complete "или аналогичное при завершении передачи. CRON-скрипт становится активным в течении минуты после загрузки в NetEye. 

Замечание: 

  • Только один CRON-скрипт может находится в NetEye. Активные процедуры от всех ранее загруженных скриптов автоматически стираются из памяти после загрузки нового скрипта.
  • Если скрипт содержит ошибки, то он не загрузится в NetEye и находивнийся ранее скрипт не будет стерт.

Описания команд

ftp

Команда ftp использует стандартный File Transfer Protocol (FTP) для передачи изображений с NetEye на удаленный хост. 

Синтаксис 

 

ftp [-host HOST] [-user USERNAME] [-pass PASSWORD] [-src SOURCEFILE] [-dest DESTINATIONFILE] [-loop LOOPTIME] [-time TOTALTIME];

Опции 

 

-host  Задает имя хоста или Internet-адрес удаленного хоста. address of the remote host. При задании имени хоста скорость отработки будет несколько ниже, так как необходимо будет обращение DNS. Компилятор даст сообщение об ошибке если хост не будет определен.
-user  Имя пользователя используется при логгировании на удаленный хост. Если имя пользователя не указано, то компилятор дает сообщение об ошибке.
-pass Пароль используется при логгировании на удаленный хост.
-src Определяет имя файла-источника. Если параметр опущен, то файл будет посылаться fullsize.jpg. Если будет указано нестандартное имя файла, никаких действий при выполнении команды не произойдет.
-dest Задает имя и полный путь к конечному файлу. Если этот параметр остуствует, имя конечно файла будет таким же, как и файла-источника. Максимальная длина имени конечного файла не может превышать 255 символов. Можно добавлять столько конечных файлов, сколь нужно, разделяя их пробелами. 

Можно добавлять временные штампы в виде времени, даты и индексов файлов в имя конечного файла. К примеру, это очень удобно при передачи множества файлов. 

Следующая таблица содержит список допустимых переменных штампов времени. Каждому штампу предшествует знак доллара <$>. 

  $s  

$m  

$h  

$d  

$n  

$y  

$Y  

$rS-E 

Текущая секунда, в диапозоне 00-59. 

Текущая минута, в диапозоне 00-59. 

Текущий час, в диапозоне 00-23. 

Текущий день месяца, в диапозоне 01-31. 

Текущий месяц, в диапозоне 01-12. 

Текущий год без столетия, в диапозоне 00-99. 

Текущий год и столетие. 

Содержит индексные номера начинающиеся с номера S по номера Е включительно. Если номер Е будет опущен, то он будет интерпретирован как очень большой номер. 
Замечание: The rS-E substitution может использоваться с первым конечным файлом. 

-loop Определение временного интервала в течении которого команда должна выполняться. Формат: s<секунды> m<минуты> h<часы>
-time Определяет полное время, в течении которого команда выполняется (циклится). Используется совместно с атрибутами loop. Формат: s<секунды> m<минуты> h<часы>.

Замечаниия: 

  • Команда ftp поддерживает соединение открытым в процессе передачи каждого файла.
  • Последовательность задания опций не важна.

Пример 1 

#Эта команда логгирует как "elvis" с  
# паролем "presley" на хаете с Internet-  
# адресом 123.123.123.123, загружает изображение hugesize  
# с именем "king.jpg" и размещает его 
# в директории "/home/elvis" на удаленном 
# хосте.  

* * * * * :  

ftp -host 123.123.123.123 -user elvis -pass presley -src hugesize.jpg -dest /home/elvis/king.jpg;  

Пример 2

 

# TЭта команда каждый час в течении двадцати минут 
# через каждые пять секунд загружает изображение fullsize и сохраняет 
# его с штампом времени в имени файла 

0 * * * * :  

ftp -src fullsize.jpg -host an.interesting.site -dest tmp/full$h$m$s.jpg -user billy -pass startrek -loop s5 -time m20;  

% 

Пример 3 

 

# Эта команда посылает 1001 последовательное fullsize- 
# изображение в "funny, host, name". Первое и последнее 
# изображения будут иметь имя "fullsize1OOO.jpg" и 
# "fullsize2000.jpg" соответственно   

* * * * * :  

ftp -host funny.host.name -user camera1 -pass secret -src fullsize.jpg -dest /home/camera1/tmp/fullsize$r1000-2000.jpg;  

% 

mail

Эта команда использует Simple Mail Transfer Protocol (SMTP) для передачи изображений и файлов от NetEye по адресу e-mail. 

Замечание: 
При использовании команды mail необходимо указать адрес Internet mail- сервера и адрес возврата на странице TCP/IP. 

Syntax 

 

mail [-s SUBJECT] [-a ATTACHMENTS] [-t RECIPIENTS];

Опции 

 

-s Если ТЕМА содержит одно простое слово, то кавычки не требуются. Если ТЕМА содержит много слов, то они должны быть заключены в кавычки.
-a Attachments в виде изображений или файлов.
-t Адрес е-mail получателя/ей.

Замечание: 
Последовательность опций не важна. 

Пример 1 

 

# Эта команда посылает e-mail с 
# subject "Hello" темой "Hello" и attached файл  
# fullsize.jpg в someone@company.com  

* * * * * :  

mail -s Hello -a fullsize.jpg -t someone@company.com;  

% 

Пример 2 

 

# Эта команда посылает e-mail с пятью  
# attachments.  

* * * * * :  

mail -s "Some images from the summer house." -a fullsize.jpg halfsize.jpg hugesize.ppm cronscript config -t me@at.home;  

% 

Пример 3 

 

Эта команда посылает e-mail с 
# темой "This "fullsize.jpg" was sent from my 
# camera server" в два адреса. 

* * * * * :  

mail -s "This \"fullsize.jpg\" was sent from my camera server" -a fullsize.jpg -t someone@axis.com anotherone@axis.com;  

%

offline

Эта команда заказчивает текущее РРР-подключение. Используется совместно с командой online. 

Синтаксис 

offline;

online

Эта команда набора номера модемом и РРР-подключения. Используется совместно с командой offline. 

Синтаксис 

online [-dial NUMBER] [-user USERNAME -pass PASSWORD] [-timeout TIME] [-script "word_1 word_2 ... "];

Опции

-dial Номер телефона, который будет послан на модем по команде ATDT<phone number>. Номер не должен содержать пробелов.
-user Имя пользователя используемое для идентификации. Пробелы в имени пользователя не допускаются. Не является обязательной.
-pass Пароль. Требуется, если указано имя пользователя
-timeout Прерывает online-сессию после через заданное время перезагружая NetEye. Формат: h<hours>m<minutes>s<seconds>.
-script Опциональная строка скрипта, которая должна прийти по линии связи. Это должно быть последней опцией в команде. 

Если посылаемое слово пусто, т.е. если они задано как две кавычки (''), то ничего не будет посылаться пока ожидаемое слово не будет получено. 

Если слово сключает пробелы, то оно должно быть в простых кавычках. 

Для login-последовательностей можно использовать слова $(USER) и $(PASS). Они будут замещены аргументами указанными в опциях -user и -pass соответственно. 

Если строка не включает ESC-последовательность, символ перевода каретки добавляется автоматически в конце строки. Верные ESC-последовательности: \r(перевод каретки), \n(новая строка) и \t(табуляция). 

В конце скрипта NetEye переходит в состяние готовности к работе

Пример 1 

 

# Эта команда задает набор модемом номера 
# aNurnber, логгирование с именем пользователя aUser и 
# паролем aPass. Первоначально NetEye ожидает получения 
# строки 'ogin:' и посылает имя пользователя. 
# после получения строки 'ass:' посылает 
# пароль. 

* * * * * : 

online -dial aNumber -user aUser -pass aPass -script "''ogin: $(USER) ass: $(PASS)" ;  

Пример 2 

 

# Эта команда задает набор модемом номера и ожидает 
# строки '>'. Затем NetEye посылает 
# строку 'ррр defaults'. Если РРР-сессия не будет 
# прервана в течении 5 минут и 30 секунд, 
# то NetEye будут перезагружен. 

* * * * * /B:  

online -dial 5551234 -user bob -pass dylan -timeout m5s30 -script '' '>' 'ppp defaults' ;  

reset

Эта команда сбрасывает программу или аппартаные средства устройства к первоначальнму состоянию. 

Синтаксис 

 

reset [-soft] [-hard];

Options 

 

-soft Реинициализация протоколов устройства.
-hard Перезагрузка всего устройства.

Пример 

 

# Эта команда делает сброс устройства один раз в день. 

0 0 * * * :  

reset -hard;  

% 

sleep

Эта команда добавляет паузу в выполнение CRON-скрипта. 

Синтаксис 

sleep <seconds>

Опция 

Задает количество секунд задержки перед выполнение следующей команды в CRON-скрипте. 

Пример 

 

# Эта команда приводит к 30 секундной паузе. 

* * * * * :  

sleep 30;  

%

snapshot

Эта команда обновляет изображение lastshot.jpg

Синтаксис 

snapshot [-l LOOPTIME] [-t TOTALTIME] [IMAGE];

Опции 

-l Время между обновлением двух последовательных изображений.
-t Длительность выполнения команды. Формат: s<seconds> m<minutes> h<hours>
  Задание типа изображения:fullsize.jpg, halfsize.jpg, hugesize.jpg, или zoom.jpg.

Пример 1 

# Эта команда обновляет изображение lastshot.jpg 
# на fullsize. 
* * * * * :  

snapshot fullsize.jpg;  

% 

Пример 2 

# Изображение lastshot в течении одной минуты будет 
# обновляться на halfsize.jpg с двухсекундными 
# интервалами. 

* * * * * :  

snapshot -l s2 -t m1 halfsize.jpg;  

% 

www.axis.com Если у Вас возникают вопросы Вы можете обратиться к менеджеру по AXIS. Более подробную информацию Вы можете получить на www.axis.se.

Возврат на первую страницу
© TerraNet
webmaster@terranet.ru
Tel: +7 499 1909986, +7 495 7691306 Fax: +7 499 1909986
125367, Москва, Полесский проезд дом 16 офис 309