Axis разработал расширенный сервис
под названием CRON для обеспечения выполнения
сервером камеры последовательностей
периодических команд. Этот сервис позволяет
пользователю программировать осуществляемые AXIS
NetEye события и выполняемые функций в зависимости
от состояния триггеров/времени (triggered functions).
Можно получить доступ к редактору для генерации
файла CRON скрипта из домашней страницы камеры. В
то же время можно использовать стандартный
текстовый редактор этих целей и загружать
полученный файл по FTP.
Каждая процедура содержит
следующие элементы:
- Comment(s)-Комментарии
- A trigger condition-Состояние
триггеров
- Command(s)-Команды
- Символ окончания процедуры %
Комментарии
Хорошим стилем программирования
считается наличие перед началом каждой
процедуры комментариев с ее кратким описанием.
Комментарии не являются обязательными, но они
должны следовать за символом <#>, как это показано
ниже:
Пример
# This CRON entry will... |
Состояние
триггеров
Выполнение содержащиеся в
процедуре команды зависит от состояния
триггеров. Состояние триггеров задается шестью
раздельными полями, заканчивающимися
обязательно двоеточием ":".
Поля времени и даты
Первые пять полей определяют время и дату
события, т.е. минуту, час, день, месяц и день
недели. Шестое поле определяет событие по
значениям Input и Boot, связанными с соответствующими
событиями.
Синтаксис каждого поля
определяется следующими правилами:
- Каждое поле времени или даты
может содержать несколько цифровых переменных
события, которые разделяются запятыми или
дефисом.
- Каждое поле ограничиватся
пробелом
- Знак звездочка <*> означет все
значения соответствующих переменным времени и
даты. Например, * * * * * означает каждую минуту,
каждый час, каждый день, каждый месяц и каждый
день недели.
- Значения численных переменных,
разделенных дефисом <-> означает соответствующий
диапазон значений. Например, 2-6 означает от 2 до
6.
Пример:
Срабатывать каждый месяц, между 4ым и 8ми числами
в 10.03,12.03 и 14.03,
используя 24-часовое время дня
Поле 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
B
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:
- Начать FTP-сессию и
залоггироваться как root, используя пароль root.
- Установить FTP в binary mode, используя
камендуbin.
- Загрузить скрипт используя
команду
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.
Синтаксис
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
Эта команда сбрасывает программу
или аппартаные средства устройства к
первоначальнму состоянию.
Синтаксис
Options
-soft |
Реинициализация
протоколов устройства. |
-hard |
Перезагрузка всего
устройства. |
Пример
# Эта команда делает
сброс устройства один раз в день. 0 0 * * * :
reset -hard;
% |
sleep
Эта команда добавляет паузу в
выполнение CRON-скрипта.
Синтаксис
Опция
Задает количество секунд
задержки перед выполнение следующей команды в
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;
% |
|