Добрый день.
Понадобилось мне сделать систему видеонаблюдения на базе Open Source системы - ZoneMinder. Вот и краткая заметка об этом.
IP-адрес сервера: 192.168.1.180
Установим ZoneMinder из репозитория:
# sudo apt-get install zoneminder
Создадим символьную ссылку на конфиг Apache2 для ZoneMinder'a:
# sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
Перезагрузим Apache2:
# sudo /etc/init.d/apache2 force-reload
Отредактируем переменные ядра:
# sudo nano /etc/sysctl.conf
Для увеличения кол-ва и объема Shared Memory добавляем:
kernel.shmall = 167772160
kernel.shmmax =167772160
И перезагружаемся, если же хотим увидеть эффкт сразу то:
# sudo echo 167772160 > /proc/sys/kernel/shmall
# sudo echo 167772160 > /proc/sys/kernel/shmmax
# sudo sysctl -p
Логи находятся тут: /tmp и тут /var/log/syslog.
Беспроводные необходимо подключить к wi-fi сети предприятия, пусть будет kazmawifi.
Подключив камеры по кабелю к сети, я увидел, что D-Link камеры получили адреса: 192.168.1.110 и 192.168.1.111, Axis камеры получили адреса: 192.168.1.120 и 192.168.1.121.
Обнаружить камеры AXIS в сети позволяет их утилита: AXIS IP Utility v2
Так как у меня не было доступа к роутеру, то D-link камеры я искал с помощью утилиты nmap:
# sudo nmap 192.168.1.*
D-Link камеры можно вычислить по такому выводу:
Nmap scan report for 192.168.1.110
Host is up (0.0052s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
443/tcp open https
MAC Address: F0:7D:68:02:29:08 (D-Link)
Подключим D-Link'и к kazmawifi.
Переходим по адресу: http://192.168.1.110/
Выбираем вкладку SETUP -> Wireless Setup:
Тут активируем wi-fi установив значение WIRELESS SETTINGS в Enable.
Находим нужный нам вайфай нажав на кнопку Site survey.
Не забываем ввести пароль, в поле Pre-Shared Key, и жмем Save Settings.
Теперь нам необходимо создать пользователя из под которого будем забирать изображения с камер. Переходим во вкладку MAINTENANCE:
И добавляем нового пользователя введя его логин, пароль и нажав кнопку Add в разделе ADD USER ACCOUNT.
Я добавил пользователя user, на камерах D-Link DCS-930.
Переходим на вкладку Setup -> Users и жмем кнопку Add:
И добовляем пользоваетял user.
В открывшемся окне добавления камеры нас интересуют первые две вкладки: General и Source.
Заполняем вкладку General для D-Link DCS-930:
Enabled - On - включаем камеру.
Maximum FPS - 10 - частота изменения картинки.
Alarm Maximum FPS - 10 - частота изменения картинки при Alert/Alarm.
Остальное оставляем как есть, нас это устраивает.
Теперь перейдем к заполнению вкладки Source:
Для D-Link DCS-930:
Remote Protocol - HTTP - протокол общения между сервером и камерой.
Remote Method - Simple
Remote Host Name - user:password@192.168.1.110 - Логин:Пароль@IP-адрес.
Remote Host Port - 80 - порт.
Remote Host Path - /image/jpeg.cgi - путь откуда будем забирать изображение.
Remote Images Colours - 24 bit colour - цвет.
Capture Width (pixels) - 320 - высота.
Capture Height (pixels) - 240 - ширина.
Orientation - Normal - ориентация.
Жмем Save.
Для Axis 206 вкладка General заполняется аналогичным образом, только имя измините.
А вот заполнение вкладки Source для Axis 206:
Remote Protocol - HTTP
Remote Method - Simple
Remote Host Name - user:password@192.168.1.120
Remote Host Part - 80
Remote Host Path - /axis-cgi/mjpg/video.cgi?resolution=640x480 - путь откуда забираем картинку
Remote Images Colours - 24 bit colour
Capture Width (pixels) - 640
Capture Height (pixels) - 480
Orientation - Normal
Камеры могут использоваться в одном из режимов (функций):
Вот что у нас в итоге получается:
Поискав по этой ошибки точного его решения найти не смог. Но смог завести картинку с камер.
Редактируем:
# sudo nano /etc/apache2/conf.d/zoneminder.conf
и добавляем в конец такие строки:
ScriptAlias /cgi-bin/zms "/usr/share/zoneminder/cgi-bin/zms"
ScriptAlias /cgi-bin/nph-zms "/usr/share/zoneminder/cgi-bin/nph-zms"
Перезапустим апач:
sudo /etc/init.d/apache2 restart
или
sudo service apache2 restart
Можно и не так брутально, а просто заставить апач перечитать конфиги:
sudo /etc/init.d/apache2 reload
или
sudo service apache2 reload
Спасибо gentoo.ru за это решение.
# sudo mkdir /home/zm - Создадим каталог /home/zm
# cd /usr/share/zoneminder - Перейдем в каталог с ZoneMinder
# sudo ln -s /home/zm /usr/share/zoneminder/eventsnew - Создадим символьную ссылку eventsnew на каталог /home/zm
Заходим в панель управления ( http://192.168.1.180/zm ) и переходим на страницу Options и открываем вкладку Paths, необходимо изменить значение DIR_EVENTS на eventsnew.
Заходим http://192.168.1.180/zm
Нажимаем на общее количество Events'ов:
Далее жмем Show Filter Window:
В Use Filter выбираем PurgeWhenFull (меньше надо исправлять, чем стандартный фильтр) и заполняем как на скриншоте:
И жмем копку Save, вводим название фильтра и ставим галочку Run filter in background:
Опять жмем кнопку Save.
В Firefox на Windows и Linux все отображается корректно.
Здесь нас интересует в первую очередь такие параметры как:
Image Buffer Size (frames) - количество изображений, которое может хранится в буфере.
Pre Event Image Count - количество изображений, которое необходимо запоминать ДО события (Alarm). Значение должно быть не более Image Buffer Size (frames) / 2.
Post Event Image Count - количество изображений, которое необходимо запоминать ПОСЛЕ события (Alarm). Значение может быть любое,но слишком большие значения нам не нужны, так как будет записываться слишком много изображений, а так же некоторые камеры отказывались работать при сильно большом значении.
Например камеры D-Link DCS-930 не хотят работать при значении больше 40, а камеры Axis 206 при значении больше 25. Но этих значений мне вполне хватает.
После выставления таких параметров мы можем радоваться действиям продолжительностью 30-60 секунд, хотя раньше они писались по 5-15 секунд максимум.
Понадобилось мне сделать систему видеонаблюдения на базе Open Source системы - ZoneMinder. Вот и краткая заметка об этом.
IP-адрес сервера: 192.168.1.180
1. Установка ZoneMinder
Установим ZoneMinder из репозитория:
# sudo apt-get install zoneminder
Создадим символьную ссылку на конфиг Apache2 для ZoneMinder'a:
# sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
Перезагрузим Apache2:
# sudo /etc/init.d/apache2 force-reload
Отредактируем переменные ядра:
# sudo nano /etc/sysctl.conf
Для увеличения кол-ва и объема Shared Memory добавляем:
kernel.shmall = 167772160
kernel.shmmax =167772160
И перезагружаемся, если же хотим увидеть эффкт сразу то:
# sudo echo 167772160 > /proc/sys/kernel/shmall
# sudo echo 167772160 > /proc/sys/kernel/shmmax
# sudo sysctl -p
Логи находятся тут: /tmp и тут /var/log/syslog.
2. Установка камер
2.1 Подключение камер к сети
У меня есть всего 4 камеры: 2 D-Link DCS-930 (беспроводные) и 2 Axis 206 (проводные).Беспроводные необходимо подключить к wi-fi сети предприятия, пусть будет kazmawifi.
Подключив камеры по кабелю к сети, я увидел, что D-Link камеры получили адреса: 192.168.1.110 и 192.168.1.111, Axis камеры получили адреса: 192.168.1.120 и 192.168.1.121.
Обнаружить камеры AXIS в сети позволяет их утилита: AXIS IP Utility v2
Так как у меня не было доступа к роутеру, то D-link камеры я искал с помощью утилиты nmap:
# sudo nmap 192.168.1.*
D-Link камеры можно вычислить по такому выводу:
Nmap scan report for 192.168.1.110
Host is up (0.0052s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
443/tcp open https
MAC Address: F0:7D:68:02:29:08 (D-Link)
2.2 Настройка D-Link DCS-930
Подключим D-Link'и к kazmawifi.
Переходим по адресу: http://192.168.1.110/
Выбираем вкладку SETUP -> Wireless Setup:
Тут активируем wi-fi установив значение WIRELESS SETTINGS в Enable.
Находим нужный нам вайфай нажав на кнопку Site survey.
Не забываем ввести пароль, в поле Pre-Shared Key, и жмем Save Settings.
Теперь нам необходимо создать пользователя из под которого будем забирать изображения с камер. Переходим во вкладку MAINTENANCE:
И добавляем нового пользователя введя его логин, пароль и нажав кнопку Add в разделе ADD USER ACCOUNT.
Я добавил пользователя user, на камерах D-Link DCS-930.
2.3 Настройка Axis 206.
Переходим по адресу: http://192.168.1.120/Переходим на вкладку Setup -> Users и жмем кнопку Add:
И добовляем пользоваетял user.
3. Добавление камер в Zoneminder.
Переходим по адресу: http://192.168.1.180/zm и нажимаем кнопку Add New Monitor.В открывшемся окне добавления камеры нас интересуют первые две вкладки: General и Source.
Заполняем вкладку General для D-Link DCS-930:
Name: DCS-930-1 - Имя камеры
Source Type - Remote - удаленная камера .
Function - Modect - записываем только, когда срабатывает Alert/Alarm. Enabled - On - включаем камеру.
Maximum FPS - 10 - частота изменения картинки.
Alarm Maximum FPS - 10 - частота изменения картинки при Alert/Alarm.
Остальное оставляем как есть, нас это устраивает.
Теперь перейдем к заполнению вкладки Source:
Для D-Link DCS-930:
Remote Protocol - HTTP - протокол общения между сервером и камерой.
Remote Method - Simple
Remote Host Name - user:password@192.168.1.110 - Логин:Пароль@IP-адрес.
Remote Host Port - 80 - порт.
Remote Host Path - /image/jpeg.cgi - путь откуда будем забирать изображение.
Remote Images Colours - 24 bit colour - цвет.
Capture Width (pixels) - 320 - высота.
Capture Height (pixels) - 240 - ширина.
Orientation - Normal - ориентация.
Жмем Save.
Для Axis 206 вкладка General заполняется аналогичным образом, только имя измините.
А вот заполнение вкладки Source для Axis 206:
Remote Protocol - HTTP
Remote Method - Simple
Remote Host Name - user:password@192.168.1.120
Remote Host Part - 80
Remote Host Path - /axis-cgi/mjpg/video.cgi?resolution=640x480 - путь откуда забираем картинку
Remote Images Colours - 24 bit colour
Capture Width (pixels) - 640
Capture Height (pixels) - 480
Orientation - Normal
Камеры могут использоваться в одном из режимов (функций):
- Monitor – только просмотр изображений с камеры, без какого-либо анализа.
- Modect (от Motion Detection) — данный режим производит анализ кадров и при возникновении движения ведет запись.
- Record – постоянная запись с камер.
- Mocord (гибрид Modect и Record) — ведется постоянная запись с камер, в случае возникновения движения — с подсветкой областей детекции.
- Nodect – специализированный режим, использующийся вместе с внешними триггерами.
Вот что у нас в итоге получается:
4. Проблемы и их решения с которыми я столкнулся
4.1. Если при просмотре изображения с камеры нет изображения, а в логе апача: /var/log/apache2/error.log видим:
[Wed May 15 09:43:56 2013] [error] [client 192.168.1.161] array (\n 0 => \n array (\n 'file' => '/usr/share/zoneminder/ajax/stream.php',\n 'line' => 55,\n 'function' => 'ajaxError',\n 'args' => \n array (\n 0 => 'socket_sendto( /tmp/zms-741127s.sock ) failed: No such file or directory',\n ),\n), \n 1 => \n array (\n 'file' => '/usr/share/zoneminder/index.php',\n 'line' => 124,\n 'args' => \n array (\n 0 => '/usr/share/zoneminder/ajax/stream.php',\n ), \n 'function' => 'require_once',\n),\n), referer: http://192.168.1.180/zm/index.php?view=watch&mid=2Поискав по этой ошибки точного его решения найти не смог. Но смог завести картинку с камер.
Редактируем:
# sudo nano /etc/apache2/conf.d/zoneminder.conf
и добавляем в конец такие строки:
ScriptAlias /cgi-bin/zms "/usr/share/zoneminder/cgi-bin/zms"
ScriptAlias /cgi-bin/nph-zms "/usr/share/zoneminder/cgi-bin/nph-zms"
Перезапустим апач:
sudo /etc/init.d/apache2 restart
или
sudo service apache2 restart
Можно и не так брутально, а просто заставить апач перечитать конфиги:
sudo /etc/init.d/apache2 reload
или
sudo service apache2 reload
Спасибо gentoo.ru за это решение.
4.2. Нужно изменить расположение изображений с камер.
Изменим место расположения фотографий с камер, которые снимаются по event'ам:# sudo mkdir /home/zm - Создадим каталог /home/zm
# cd /usr/share/zoneminder - Перейдем в каталог с ZoneMinder
# sudo ln -s /home/zm /usr/share/zoneminder/eventsnew - Создадим символьную ссылку eventsnew на каталог /home/zm
Заходим в панель управления ( http://192.168.1.180/zm ) и переходим на страницу Options и открываем вкладку Paths, необходимо изменить значение DIR_EVENTS на eventsnew.
4.3. Необходимо хранить изображения не старше 2 недель.
Настроим ротацию изображения (что бы видео старше 2 недель удалялись):Заходим http://192.168.1.180/zm
Нажимаем на общее количество Events'ов:
В Use Filter выбираем PurgeWhenFull (меньше надо исправлять, чем стандартный фильтр) и заполняем как на скриншоте:
И жмем копку Save, вводим название фильтра и ставим галочку Run filter in background:
Опять жмем кнопку Save.
4.4. Не отображаются Event'ы в Chrome (Windows) и Chromium (Linux).
В Windows при просмотре Event'ов появляется ошибка: ClassNotFoundException с текстом: com.charliemouse.cambozola.Viewer:В Firefox на Windows и Linux все отображается корректно.
4.5 Короткие event'ы.
Если event'ы записываются часто, но слишком короткие - нам их неудобно просматривать. И вот решение этой проблемы. В окне редактирования камеры нас интересует вкладка Buffers.Здесь нас интересует в первую очередь такие параметры как:
Image Buffer Size (frames) - количество изображений, которое может хранится в буфере.
Pre Event Image Count - количество изображений, которое необходимо запоминать ДО события (Alarm). Значение должно быть не более Image Buffer Size (frames) / 2.
Post Event Image Count - количество изображений, которое необходимо запоминать ПОСЛЕ события (Alarm). Значение может быть любое,но слишком большие значения нам не нужны, так как будет записываться слишком много изображений, а так же некоторые камеры отказывались работать при сильно большом значении.
Например камеры D-Link DCS-930 не хотят работать при значении больше 40, а камеры Axis 206 при значении больше 25. Но этих значений мне вполне хватает.
После выставления таких параметров мы можем радоваться действиям продолжительностью 30-60 секунд, хотя раньше они писались по 5-15 секунд максимум.
Альтернатива всяким Trassir-ам и Макроскопам?
ОтветитьУдалитьпункт 4.2. таким образом не работает на Ubuntu 14.04. В вики написано решение https://wiki.zoneminder.com/Using_a_dedicated_Hard_Drive. Но и оно мне не помогло (я правда 2 винта монтировал в одну папку через mhddfs, может поэтому)
ОтветитьУдалитьВ конфиге написано "ZM_DIR_EVENTS
The directory you specify here cannot be outside the web root. This is a common mistake. Most users should never change this value. If you intend to record events to a second disk or network share, then you should mount the drive or share directly to the ZoneMinder events folder or follow the instructions in the ZoneMinder Wiki titled Using a dedicated Hard Drive"
Этот комментарий был удален автором.
ОтветитьУдалитьХороший сайт знакомств всемирной сети для подходящих людей для создания брака. Большая база анкет пользователей со всего мира. Абсолютно бесплатная регистрация. Комфортный поиск по анкетам знакомств. Регистрируйтесь и встретьте новых друзей прямо сейчас.
ОтветитьУдалить