Видеонаблюдение через интернет в веб-браузере

Внешний сборщик/обработчик событий (event-collector).

Демон avregd, начиная с версии 5.4.4, одновременно с записью событий в базу данных (таблица EVENTS) может «уведомлять» о событиях внешнее приложение.

Поддерживаются следующие группы событий:

  • запуск/остановка/сбой аудио/видео захвата с устройства;
  • подключение/отключение сетевых клиентов;
  • запись файлов на диск;
  • изменение качества захватываемого изображения (засветка/затемнение, при вкл. контроле яркости);
  • начало/окончание серии движения (при вкл. детекторе движения).

Полный перечень событий смотрите в нашем примере скрипта: « /usr/share/doc/avregd/examples/scripts/event-collector.gz » на языке shell.

Установка.

  1. создайте скрипт на любом языке программирования, реализующий ваши потребности и, желательно, скопируйте его в каталог «/etc/avreg/scripts/»;
  2. установите атрибуты файла: root.root 0755;
  3. определите абсолютный путь до файла значением параметра «event-collector» конфигурационного файла «avreg.conf» в секции «avregd {}»;
  4. установите для всех камер или для конкретных камер значение параметра «events2pipe» как «Вкл.»

Примечание: далее по тексту, под скриптом должен пониматься именно «event-collector» скрипт.

Чтение сообщений.

Скрипт запускается демоном avregd c помощью системного вывова popen(3). Сообщения о событиях передаются от демона к скрипту внутри связанного канала ввода-вывода (pipe). Эти сообщения скрипт должен читать построчно c устройства стандартного ввода (STDIN, дескриптор 0). В разных языках программирования для этого используюся разные конструкции, в интерпретируемых программах shell для чтения строки с stdin используется встроенная команда read.

Строка сообщения представляет собой набор полей, разделённых символами TAB (\t). Значения и порядок полей, в общем случае, для каждого события разные. Для уточнения этого вопроса вам придётся ознакомиться с исходным кодом нашего скрипта-примера на языке shell в каталоге «/usr/share/doc/avregd/examples/scripts/».

Отладка.

Для отладки скрипта вы можете пользоваться выводом отладочных сообщений в лог-файлы. Сообщения, выведенные любыми командами внутри скрипта (например, echo, printf, …) на стандартный вывод (STDOUT, дескриптор 1), будут записываться в текстовый лог файл «/var/log/avreg/<имя_скрипта>.log», а ошибки (STDERR, дескриптор 2) в «/var/log/avreg/<имя_скрипта>.log».

Для просмотра лог-файлов в реальном времени удобно пользоваться командой tail:

sudo tail -f /var/log/avreg/<имя_скрипта>.{log,err}

Старые лог-файлы автоматически ротируются штатным logrotate-ом (см. «/etc/logrotate.d/avreg»).

Скрипт может завершиться по одной из трёх причин:

  1. завершение работы демона avregd, в этом случае он поcылает специальное сообщение;
  2. если какая-то команда внутри скрипта возвращает не-нулевой код завершения (ошибка), т.к. в нашем примере одной из первых команд следует set -e;
  3. cкрипт был убит командой kill, например,
    sudo kill `cat /var/run/avreg/evtcoll.pid`
    

В последних двух случаях, демон avregd будет пытаться вновь запустить скрипт и отрыть канал (pipe), только произойдёт это не сразу, а после после выполнения двух условий:

  1. прошёл respawn-интервал времени (см. описание параметра «event-collector»);
  2. возникло новое событие для “отправки” в скрипт.

Важные замечания.

Время возникновения события.

Для всех типов событий передаётся поле со значением времени возникновения события, как правило первое. Если точное время возникновения события важно, то пользуйтесь именно этим переданным значением, а не текущим временем (now) момента обработки данного события.

Ожидание завершения.

При остановке демона avregd, он будет ждать завершения скрипта. Сколько секунд он будет ждать или не будет ждать вовсе (0 сек.) указывается в значении параметра «event-collector».

Права выполнения.

Скрипт запускается демоном avregd и, стало быть, получает его права (см. параметры «user»/«group» в avreg.conf глобально или в секции avregd {}) . Если для действий вашего скрипта этих прав не хватает, то вы можете установить флаги setuid/setgid, однако, правильнее и безопаснее использовать группы и членство в группах.

Ссылки.

Некоторые, возможно, полезные ссылки на статьи и пакеты.

  • «Отправка e-mail писем с вложениями из консоли» http://debback.blogspot.com/2008/03/blog-post.html
  • esmtp - User configurable relay-only MTA
  • masqmail - A mailer for hosts without permanent internet connection
  • msmtp-mta - light SMTP client with support for server profiles
  • nullmailer - simple relay-only mail transport agent http://xeim.blogspot.com/2008/09/nullmailer.html
  • ssmtp - extremely simple MTA to get mail off the system to a mail hub
  • exim4-daemon-light - облегчённая версия Exim MTA (v4)
  • smsclient - A program for sending short messages (SM / SMS)
  • smstools - серверные инструменты работы с SMS для GSM модемов

Остальное подскажет http://www.google.ru/

manual/applications/avregd-event-collector.txt · Последние изменения: 2011-02-25