|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Строим систему видеонаблюдения и охраны на основе ZoneMinder
Время создания: 09.07.2015 09:11
Автор: Виталий Банковский
Текстовые метки: Linux, ZoneMinder, настройка, установка, видеонаблюдение
Раздел: Компьютер - Linux - Видео в Linux - ZoneMinder
Запись: xintrea/mytetra_syncro/master/base/1436422284smlhxkf3lj/text.html на raw.github.com
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Статья была опубликована в журнале Системный Администратор 2007 Выпуск №11 (60) Иллюстрации не сохранились Строим систему видеонаблюдения и охраны на основе ZoneMinder Домик в деревне... Картошечка, укропчик... и никаких проблем. Но, увы, люди любят окружать себя материальными благами цивилизации. Дорогие вещи и машины, о которых нужно заботиться и охранять. Ну а раз так, попробуем сделать нашу жизнь немного легче – поставим виртуального сторожа, который никогда не спит. Немного фактов из моей жизни, которые подвинули меня на создание системы видеонаблюдения. Я живу в съемной квартире, поэтому ни запретить хозяину квартиры приходить в мое отсутствие, ни установить охранную сигнализацию у меня нет возможности. К тому же я, как и многие автолюбители, несколько раз находил вмятину размером с чей-то бампер на двери своего автомобиля. Ну а отловить тех «супостатов», которые оставляют на капоте и дверях остатки своего интеллекта с помощью гвоздика, – заветная мечта каждого автовладельца. Поэтому было выбрано единственное возможное решение – установить систему видеонаблюдения, которая бы записывала события, а также сигнализировала о непрошеных гостях. Задачи системы и выбор камер слежения В моем случае потребовалось установить две камеры дома, одну – на парковке, и еще одну я поставил в здание, где расположены наши серверы. Из-за больших расстояний, а также из-за территориально разнесенных объектов наблюдения камеры с USB-интерфейсом были сразу отметены (хотя программное обеспечение, использованное в данном решении, позволяет комбинировать источники). Также после посещения страниц с обзорами камер (источники указаны в конце статьи) стало понятно, что удел камер с USB-интерфейсом – охват близлежащих объектов (т.е. любительские телеконференции) и что цены на камеры с удовлетворительным качеством начинаются от $250 US. Исходя из этого был определен минимальный ценовой диапазон $250-$500 US и куплены камеры трех разных производителей, сравнительные характеристики которых приведены в таблице 1. Таблица 1. Сравнительные характеристики камер
Субъективные выводы. Камера Panasonic WV-NP244 оказалась лидером по качеству. Эта камера обладает сменной оптикой с фиксированными и переменными фокусными расстояниями: 2.8 mm, 4.5 mm, 3.8-8 mm, 5-40 mm, что позволяет выбрать необходимый угол обзора и, как следствие, оптимально охватить охраняемые объекты. Качество изображения, получаемое с Axis 2100 и с D-Link DCS-3220, почти одинаковое, поэтому по соотношению цена/качество лидером является D-Link DCS-3220. Программное обеспечение В силу своей неприхотливости и отсутствия лицензионных проблем было решено построить систему на основе Linux. После недолгих поисков были найдены три бесплатных программных пакета для работы с камерами слежения:
ZoneMinder (далее по тексту – ZM) сразу вышел в фавориты благодаря поддержке всех возможных источников сигнала (устройство захвата видеосигнала, USB-камера, обновляемый локальный файл, видеопоток или файл со встроенного веб-сервера сетевой камеры). Также этот пакет обладает прекрасной документаций и тщательной проработкой всех компонент. Существует версия для FreeBSD. Требования к системе ZoneMinder работает на любом дистрибутиве GNU/Linux, в моем случае я устанавливал на дистрибутив Debian GNU/Linux. Пакет требует веб-сервер с поддержкой PHP, MySQL и библиотеку JPEG. Отдельно стоит упомянуть о требованиях к аппаратному обеспечению. Захват сигналов с камер и анализ изображений в режиме детектора движения требует серьезных ресурсов процессора. Мой домашний компьютер c двумя процессорами Xeon 2.8 ГГц был загружен на 40% при работе 4 камер при средней скорости 4-5 кадров в секунду. Позже я уменьшил частоту до одного кадра в секунду, и загрузка упала до 12%. Установка программного обеспечения Перед установкой необходимо настроить веб-сервер (в моем случае Apache) и подготовить базу MySQL. Пример конфигурации виртуального сервера Apache: <VirtualHost 192.168.10.99> DocumentRoot /home/webcam/www ServerName webcam.example.com ScriptAlias /cgi-bin/ /home/webcam/www/cgi-bin/ <Directory /home/webcam/www> Options ALL +ExecCGI AllowOverride ALL DirectoryIndex index.php </Directory> </VirtualHost> Далее создаем базу MySQL, пользователя и назначаем ему полный доступ к этой базе: mysql -p mysql; mysql> create database zm; mysql> grant all on zm.* to zmuser@localhost identified by 'put_password_here'; mysql> flush privileges; Затем необходимо создать пользователя, под которым будут запущены демоны, собирающие сигнал с камер слежения, и под которым будут запущены веб-приложения. adduser -d /home/webcam webcam Компиляция и настройка ZoneMinder Получаем исходные коды пакета с домашней страницы проекта http://www.zoneminder.com , раскрываем полученый архив, компилируем и устанавливаем: tar -xzvf ZoneMinder-1.xx.xx.tar.gz cd ZoneMinder-1.xx.xx ./configure –with-webdir=/home/webcam \ --with-cgidir=/home/webcam/www/cgi-bin/ \ --with-webuser=webcam –with-webgroup=webcam \ --with-mysql= make make install Создаем символическую ссылку, чтобы при посещении http://webcam.example.com открывалась контрольная панель ZM: ln -s /home/webcam/www/zm.php /home/webcam/www/index.php Далее открываем конфигурационный файл /usr/local/etc/zm.conf и настраиваем параметры доступа к базе данных MySQL: ZM_DB_HOST=localhost ZM_DB_NAME=zm ZM_DB_USER=zmuser ZM_DB_PASS=put_password_here Иницилизируем базу с помощью файла db/zm_create.sql, содержащего команды SQL для создания таблиц и первоначальных записей: mysql -p zm < db/zm_create.sql Если инсталяция прошла успешно и все верно сконфигурировано, то при посещении страницы http://webcam.example.com должна открыться панель управления ZM (см. рис. 1). ? Рисунок 1. Главная панель управления ZM Конфигурирование основных параметров ZM включает огромное количество параметров, но я подробнее остановлюсь на основных настройках, которые необходимо поменять для запуска системы:
На главной панели управления ZM находится ссылка «Options», при нажатии на которую открывается конфигурационная панель. На рис. 2-4 будут приведены конфигуации всех трех пунктов, указанных выше. ? Рисунок 2. Разрешение работы с удаленными камерами ? Рисунок 3. Настройка адреса электронной почты, куда будут отсылаться сообщения о событиях. Здесь же можно поменять шаблоны сообщений ? Рисунок 4. Указание параметров удаленного сервера FTP Добавление камер в ZM Следующим нашим шагом будет добавление источников сигнала. ZM поддерживает 3 типа источника сигнала:
В моем случае использовался только один тип – третий. Для добавления нового источника сигнала необходимо нажать на ссылку «Add New Monitor» и ввести параметры, описанные в таблице 2 и показанные на рис. 5 Таблица 2. Конфигурация источника сигнала
Таблица 3. Режимы работы мониторов
? Рисунок 5. Конфигурация источника сигнала Замечание: на некоторых дистрибутивах Linux установлено ограничение на объем доступной разделяемой памяти ядра (Shared Memory), которую активно использует ZM. В дистрибутиве Debian значение по умолчанию равно 64 Мб. Создатель программы ZM рекомендует увеличить до 128 Мб: echo 134217728 > /proc/sys/kernel/shmmax Далее нужно повторить процесс добавления для всех камер, с которых мы хотим получать изображения. После того как все камеры добавлены, запускаем главную управляющую программу, которая запустит различные демоны, входящие в пакеты ZM, и затем будет контролировать их работу (например, перезапуск в случае «падения»): zmpkg.pl start Также необходимо создать скрипт, который бы запускал zmpkg.pl, и добавить его в процесс инициализации при запуске сервера. Для этого создаем файл /etc/init.d/webcam со следующим содержимым: #! /bin/sh export PATH="$PATH:/usr/sbin:/sbin: /usr/local/bin: /usr/local/sbin" case "$1" in start) echo -n "Starting ZM" /usr/local/bin/zmpkg.pl start echo "." ;; stop) echo -n "Stopping ZM" /usr/local/bin/zmpkg.pl stop echo "." ;; *) echo "Usage: /etc/init.d/zm {start|stop}" exit 1 esac exit 0 И добавляем этот скрипт в процесс инициализации операционной системы: chkconfig webcam on После запуска скрипта и обновления страницы панели управления ZM с помощью ссылки «Refresh» источники сигнала должны поменять цвет с красного (нет сигнала или данных) на зеленый (функционирует правильно), и вся панель управления может выглядеть следующим образом (см. рис. 6). ? Рисунок 6. Главная панель управления ZM Из интересных возможностей панели можно отметить следующие:
Обработка событий Событие в концепции ZM – изменение состояния подсистем и детекторов. Например, обнаружение движения анализатором движения, отключение камеры, окончание дискового пространства и т. д. ZM предоставляет инструменты для фильтрации событий и выполнения определенных операций, если условия фильтра подходят для какого-либо события:
Все эти условия можно комбинировать по условиям «и/или», что дает возможность создавать обработчики событий практически на все случаи жизни. Операции, которые могут выполняться при выполнении условий какого-либо фильтра, могут включать в себя:
Приведу пример создания типичного фильтра. Для этого необходимо нажать на ссылку «Filters» в главной панели ZM, затем перейти по ссылке «Show filter window», после чего откроется окно, как показано на рис. 7. ? Рисунок 7. Создание фильтра Данный фильтр будет срабатывать, если количество кадров в каком-то событии больше, чем один, и имя монитора – «Panasonic». После срабатывания этого фильтра ZoneMinder скопирует кадры, на которых было обнаружено движение, в архив и на внешний сервер FTP, отправит предупреждение по электронной почте, выполнит команду «/usr/bin/alarm-911.pl» и удалит запись об этом событии из списка событий на главной панели управления ZM. Для включения/выключения множественных условий нужно использовать символы «+» и «-» на правой стороне страницы. После этого сохраняем фильтр, не забывая включить его в режим «Run filter in background» (см. рис. 8). ? Рисунок 8. Сохранение фильтра ZM по умолчанию перечитывает фильтры каждые 5 минут и запускает их каждую минуту. Пройдемся перед камерой и подождем 6 минут. Если все фильтры правильно настроены, то в файле /tmp/zmfilter.log можно обнаружить такие строчки: Checking event 2380 Archiving event 2380 Creating upload file '/tmp/Panasonic-2380.tar.gz' Uploading to 192.168.10.99 Sleeping for 60 seconds Reloading filters Sleeping for 60 seconds Sleeping for 60 seconds Sleeping for 60 seconds Рекомендуется создать фильтр, который бы очищал дисковое пространство, если заполнение достигло определенного уровня. Для этого создадим новый фильтр и укажем, что нужно удалить все записи о событиях, если заполнение диска превысило 60%. Разграничение прав учетных записей пользователей ZoneMinder позволяет создать полноценную систему видеонаблюдения масштаба предприятия. Для этого ZM содержит средства по ограничению прав пользователей, как по управлению системой (модификация источников сигнала и фильтров), так и по разграничению доступа к отдельным камерам. По умолчанию ZM – однопользовательская система, и перед началом добавления новых учетных записей необходимо включить опцию «Authenticate user logins to ZoneMinder» на конфигурационной панели, в подразделе «System». После этого надо зарегистрироваться в системе как суперпользователь «admin» с паролем по умолчанию «admin», в результате чего в конфигурационной панели появится еще один подраздел «Users» для управления учетными записями. Я не буду заострять внимание на этом стандартном списке, а сразу перейду к описанию свойств учетных записей. После нажатия на ссылку «Add new user» появится окно (см. рис. 9). ? Рисунок 9. Добавление новой учетной записи Каждая учетная запись состоит из стандартных полей вроде имени, пароля и т. д., а также набора привилегий (см. таблицу 4). Таблица 4. Набор привилегий учетной записи
Кроме этого, можно ограничить скорость просмотра потока, а также список камер, к которым пользователь, зарегистрировавшийся под конкретной учетной записью, будет иметь доступ. Ограничение области слежения Бывают ситуации, при которых необходимо наблюдать, что происходит на охраняемом объекте, но при этом ограничить область, анализируемую с помощью детекторов движения. Например, поле обзора камеры захватывает дорогу и саму автомашину, но система должна реагировать, если обнаружено движение только возле охраняемого объекта (машины). ZoneMinder предоставляет великолепные средства для задания множественных областей в поле зрения камеры, в которых и происходит анализ движения. Для управления областями необходимо нажать ссылку с именем камеры на главной панели управления и перейти по ссылке «Zones», в результате чего откроется новое окно со списком зон. По умолчанию существует только одна зона, равная всему полю зрения камеры (которую необходимо удалить, если указаны более специфичные зоны). После нажатия на ссылку «Add zone» появится удобная панель для задания четырехугольной области (см. рис. 10). ? Рисунок 10. Задание контролируемой зоны Принцип работы таков: С помощью мышки выбирается одна из точек прямоугольной области в поле ввода координат этой точки. Верхние две точки – «1» и «2» слева направо, нижние две – «4» и «3». Да, цифры «4» и «3» местами не перепутаны. После этого мышка наводится на новые предполагаемые точки и нажимается левая кнопка мышки. Таким же образом перемещаются оставшиеся 3 точки. Контролируемая область автоматически помечается зеленым цветом. На этом примере анализаторы движения работают только по левой стороне кадра. Можно задать несколько зон для каждой камеры, комбинация которых и создаст очень точную область, в которой будут обнаруживаться движения. Заключение Данная статья описывает процедуру создания базовой системы слежения. За рамками статьи остались такие интересные возможности, как: взаимодействие с другими компонентами концепта «Электронный дом» по протоколу X10; привязка детекторов движения к определенным областям. Внимание! Перед установкой системы ZoneMinder в общественных местах рекомендуется проверить местные законы на правомочность использования. Во многих странах съемка людей без их разрешения запрещена. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|