LXF115:Hardcore Linux
|
|
|
- Hardcore Linux Проверь себя на крутом проекте для продвинутых пользователей
Содержание |
Web-камеры: Стать Большим Братом
- Ян Бартон поделится восхитительной уверенностью, что за за вашей собственностью есть присмотр. Он следит за вами уже сейчас...
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
До того, как ее присвоили фанатики и упыри из реалитишоу, фраза «Большой Брат» служила удобным обозначением всех тех, кто хотел ограничить наши гражданские свободы. Если информация – это власть, мы должны попытаться пресечь сбор непомерного ее количества избранниками народа, чтобы народ контролировал правительство, а не наоборот. Зачем же тогда Linux Format публикует учебник по web-камерам? Мы ведь все верим в Свободу, с большой буквы?
Ну, мне-то ни к чему угнетение пролетариата, я просто хочу присмотреть за своими коровами. Я живу на ферме, и должен днем и ночью видеть, что происходит: вдруг кто-то пролез во двор и пытается что-то украсть, или животные решили устроить полуночный моцион. Моя статья покажет, как построить сравнительно недорогую систему безопасности, используя web-камеры и программный детектор движения. Если у вас есть широкополосное подключение, вы сможете контролировать ваши камеры из любого места, где есть интернет-доступ, а когда система обнаружит подозрительную активность, вы получите сообщение по электронной почте. Конечно, обретя такую власть, можно пойти и по стопам КГБ, ну да авось вы не пойдете.
Часть 1 Настройка камер
Мы используем систему на основе Debian, однако приведенные инструкции должны работать практически с любым дистрибутивом Linux. Единственная серьезная проблема, с которой вы можете столкнуться – web-камера (обычно с подключением через USB), не поддерживаемая в Linux.
Web-камеры можно подключать через USB, Ethernet или беспроводную сеть (такие обычно называют «сетевыми камерами»). Linux поддерживает web-камеры USB не полностью. Проблема осложняется тем, что изготовители нередко используют под одной и той же маркой разные микросхемы, так что даже если какой-нибудь экземпляр заработает, другой, якобы того же типа, может отказать. Сетевые камеры, как правило, имеют встроенный web-сервер, а иногда и беспроводной передатчик, и могут быть подключены через Wi-Fi. На нашем уроке мы воспользуемся камерой Linksys WVC54GCA: она не особо дорогая, имеется в продаже и настраивается для работы с Linux.
Первый шаг на пути к настройке USB-камеры – определение чипсета, который она использует. Просто подключите ее к компьютеру и запустите lsusb:
ian@scamper:~$ lsusb Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 046d:08af Logitech, Inc. QuickCam Easy/Cool Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 003: ID 04f2:b013 Chicony Electronics Co., Ltd
Отсюда видно, что это Logitech QuickCam, которую можно купить рублей за 800. Беглый поиск в Google показывает, что она поддерживается драйвером gspca. Во многих дистрибутивах, в том числе в Ubuntu Hardy, он встроен в ядро, но версия драйвера, идущая с Hardy, не работает с данной конкретной web-камерой Logitech.
Мы можем проверить поддержку конкретной web-камеры, поискав в Google ID нашего устройства, в данном случае 08af. Небольшое исследование показало, что на поддержку этой web-камеры способна последняя версия драйвера gspca, доступная на http://mxhaard.free.fr/download.html. Итак, для начала загрузим последнюю версию для ядра 2.6 с http://mxhaard.free.fr/spca50x/Download/gspcav1-20071224.tar.gz.
Cкачав драйвер, распакуем его:
tar -xvzf qc-usb-0.6.6.tar.gz
Установка довольно проста. Во-первых, мы должны установить заголовки ядра Linux и пакеты build-essential:
sudo apt-get install build-essential linux-headers-$(uname -r)
Для сборки драйвера gspca запустите от имени root
./gspca_build
Если все пойдет нормально, модуль ядра соберется и загрузится. Далее следует подключить web-камеру и открыть Cheese или любое другое приложение, способное выводить с нее картинку. Если вы узрите свою физиономию на экране, значит, web-камера работает.
Для настройки сетевой камеры будет лучше подключить ее прямо к концентратору, не связываясь с беспроводным соединением. Сперва надо изменить IP-адрес вашего компьютера на ту же подсеть, что и у камеры. Наш компьютер мы настроим на адрес 192.168.1.10. Теперь откройте Firefox и наберите адрес камеры по умолчанию – http://192.168.1.115/. Вы должны увидеть стартовую страницу камеры. Нажмите кнопку Setup и введите имя пользователя и пароль (по умолчанию admin admin).
Настройте IP-адрес и маску так, чтобы камера стала частью вашей подсети. В данном учебнике мы будем подразумевать подсеть 192.168.0.0, поэтому введите 192.168.0.26 в качестве IP-адреса камеры и 255.255.255.0 в качестве маски, а затем укажите свой часовой пояс. Неплохой идеей будет включить контрольный светодиод, дабы, посмотрев на него, вы могли убедиться, что web-камера работает. Не забудьте сменить на своем компьютере IP-адрес обратно на что-то в диапазоне 192.168.0.0 после завершения настройки.
По умолчанию Linksys WVC54GCA выдает видеопоток в формате MPEG4 ASF. Его можно просмотреть из MPlayer или VLC:
mplayer http://cam.era.ip.address/img/video.asf
Но нам необходим поток видео в формате MJPEG. Введите URL-адрес камеры в вашем браузере в следующем формате:
http://your.webcam.ip.address/adm/file.cgi?h_videotype=mjpeg&todo=save
Если требуется вернуть назад формат ASF, используйте следующий формат URL:
http://your.webcam.ip.address/adm/file.cgi?h_videotype=mpeg4&todo=save
Часть 2 Установка ПО для наблюдения
Теперь, имея пару рабочих web-камер, настроим программы для наблюдения за ними. Motion (http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome) успешно балансирует между функциональностью и простотой установки. Стоит изучить Wiki на сайте Motion, так как там масса опций настройки. Motion присутствует в виде пакета Debian/Ubuntu, и для его установки на Debian достаточно набрать
sudo apt-get install motion
У нас Ubuntu, поэтому Motion устанавливается как демон. Когда мы все настроим, это будет шикарно. Однако сперва легче запустить его вручную от имени обычного пользователя и опробовать различные варианты конфигурации. Сперва остановим демона:
sudo /etc/init.d/motion stop
Motion ищет свои файлы конфигурации в нескольких местах, и вы можете указать их расположение в командной строке при запуске. Ubuntu помещает файлы конфигурации в /etc/motion. Скопируем их в директорию ~/.motion, чтобы иметь возможность изменять файлы, перебирая различные опции. Создайте каталог .motion:
mkdir ~/.motion
Скопируйте файлы из директории по умолчанию в .motion, а затем измените владельца файлов, чтобы мы могли их редактировать:
sudo chown -R ian.users /.motion
Основной конфигурационный файл – motion.conf. Чтобы наблюдать более одной камеры, каждый процесс наблюдения должен быть запущен в своем собственном потоке и иметь собственный файл конфигурации (thread1.conf, thread2.conf, и т.д.). Примеры установки по умолчанию имеются в только что созданной директории ~/.motion.
Магические опции
Начнем с одной web-камеры, поместив ее настройки в thread1.conf. Файл motion.conf хорошо откомментирован, со многими возможными опциями. Заметим, что поскольку мы используем потоки, мы должны включить их в motion.conf (чтобы понять, как это делается, см. далее пример файла motion.conf).
# Remember: If you have more than one camera you must have one # thread file for each camera. E.g. 2 cameras requires 3 files: # This motion.conf file AND thread1.conf and thread2.conf. # Only put the options that are unique to each camera in the # thread config files. thread /home/ian/.motion/thread1.conf thread /home/ian/.motion/thread2.conf
Большинство опций в thread1.conf мы оставим по умолчанию. Те, что нам действительно надо изменить, приведены ниже. Настройка videodevice предполагает использование web-камеры USB. Чтобы узнать, какое устройство использует наша web-камера, подключите ее к компьютеру и введите
ian@scamper:~$ ls /dev/video* /dev/video0
Эта строка выведет список всех подключенных видеоустройств. У нас только одна USB-камера, и это /dev/video0.
Теперь проделаем следующие изменения в thread1.conf:
# Video device videodevice /dev/video0 # Image width (pixels). Valid range: Camera dependent, default: 352 width 640 # Image height (pixels). Valid range: Camera dependent, default: 288 height 480 # Make automated snapshot every N seconds (default: 0 = disabled) snapshot_interval 0 # Target base directory for pictures and videos # Recommended to use absolute patch. (Default: current working # directory) # Must be writeable by Motion. target_dir /home/ian/public_html/webcam/usb_cam
Можно задать высоту и ширину изображения согласно настройкам web-камеры по умолчанию. Если хотите, задайте их меньше, чем позволяет web-камера. Чтобы Motion работало как типичное приложение для web-камеры, делая снимки через заранее заданные интервалы, установите snapshot_interval в файле thread.conf в значение, отличное от нуля. А главное, задайте в опции target_dir директорию, куда Motion будет сохранять данные.
И это функционирует?
Теперь проверим, что все работает. Запустите Motion:
motion -c ~/.motion/motion.conf
Опция -c велит Motion использовать файл конфигурации ~/.motion/motion.conf, а не /etc/motion/motion.conf. Использовать ключ -c и всегда указывать местоположение файла конфигурации – хорошая идея, так как Motion ищет свои настройки в нескольких разных местах, и выбирает последнее найденное.
Пару раз попрыгайте перед web-камерой и загляните в директорию, указанную в target_dir. Если все работает, вы должны увидеть несколько AVI-файлов. Установив snapshot_interval отличным от нуля, вы увидите еще и JPEG-файлы. Заметим, что Motion всегда создает файл с именем lastsnap.jpg, это символьная ссылка на последний снимок.
Настроив web-камеру USB, перейдем к настройке Motion для работы с нашей сетевой камерой Linksys. Создайте thread2.conf (или отредактируйте его) и убедитесь, что он включен в motion.conf. Кроме того, убедитесь, что вы использовали вышеприведенный способ для настройки Linksys на вещание в формате MJPEG, а не файлов ASF. Закоментируйте все существующие строки videodevice и вставьте следующий текст:
#videodevice /dev/video1 netcam_url http://your.webcam.ip.address/img/mjpeg.cgi
Задайте целевую директорию, чтобы сетевая камера записывала свои файлы не на то место, что использует USB-камера.
target_dir /home/ian/public_html/webcam/usb_cam
Нажмите Ctrl+C, чтобы остановить запущенный Motion, и перезагрузите его:
motion -c ~/.motion/motion.conf
Теперь вы должны видеть статические картинки и видео с вашей сетевой камеры.
Часть 3 Уточнение результатов
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Параметры обнаружения движения по умолчанию хорошо работают в большинстве случаев, однако вполне возможно, что в контролируемой зоне может быть дорога или, например, деревья. Движение в этих областях сгенерирует событие и приведет к большому количеству ложных тревог. Чтобы избежать их, применим mask_file, определяющий области, где движения можно игнорировать. Маска – это файл PGM (portable graymap), который должен быть одинаковой высоты и ширины с захваченным кадром. Область, где вам не нужны срабатывания датчика движения, должна быть зачернена, а место, где они требуются, должно быть белым.
Файл маски легко создать, взяв захваченный кадр с web-камеры и отредактировав его в GIMP. На рисунке в начале есть деревце на переднем плане, которое вызовет срабатывание при раскачивании их ветром. Я запустил GIMP и отредактировал это изображение для создания файла маски, показанного справа. Можно видеть, что мы исключили из рассмотрения область, содержащую растения, заполнив ее черным цветом. Оставшаяся часть изображения, где мы хотим, чтобы движение обнаруживалось, должна быть заполнена белым. Сохраните изображение как файл PGM в GIMP.
Теперь велим Motion использовать файл маски. В thread.conf соответствующей web-камеры отредактируйте опцию mask_file:
mask_file /home/ian/webcam/my_mask_file.pgm
Можно также указать, сколько последовательных кадров должно содержать движение, чтобы Motion распознал его как реальное. Этот параметр определяется с помощью minimum_motion_frames и по умолчанию равен 1. Чувствительность детектирования также можно скорректировать через параметр threshold в файле конфигурации. Он определяет количество пикселей, которые должны измениться, прежде чем будет засчитано движение. По умолчанию используется значение 1500.
Оповещение по e-mail
Motion умеет запускать внешние команды при обнаружении движения и связанных с ним событий. Имеющиеся события приведены в таблице. Вы можете указать скрипту на события в motion.conf или соответствующем файле thread.conf. Обнаружив движение, Motion создает MPEG-файл событий. Кроме того, он создает JPEG-файл с одним из видеокадров. Момент в процессе движения, когда создается JPEG-файл, настраивается с помощью опции output_normal в файле thread.conf. Установка ее в best сохранит изображение с наибольшим изменением пикселей по ходу события.
События можно использовать для отправки оповещений по электронной почте c прикрепленными JPEG- или MPEG-файлами. Так как MPEG-файлы бывают довольно велики, возможно, лучше всего будет отправить файл JPEG, показывающий изображение с наибольшим изменением пикселей (около 50 КБ), иначе вас завалит спамом из видео вашей кошки, резвящейся перед web-камерой.
Для отправки e-mail-оповещения с прикрепленным JPEG-файлом употребим Mutt. Сперва установим его:
sudo apt-get install mutt
Теперь надо создать сценарий оболочки для отправки JPEG-файла. На Wiki Motion говорится, что в обработчике события можно использовать местозаменитель %f, куда подставится имя файла, однако в версии программы, поставляемой с Ubuntu Hardy, это не сработало. Для отправки JPEG мы будем использовать событие on_event_end.
Заметьте, что jpeg_filename (имя файла для отправки) определено в нашем thread.conf. Формат имени файла, передаваемого в обработчик события on_end_event, должен соответствовать таковому в jpeg_filename. Обратитесь к Wiki Motion для получения детальной информации о местозаменителях, допустимых в именах файлов.
Отредактируем thread.conf, соответствующий нашей камере:
jpeg_filename %v-%Y%m%d%H%M%S-%q on_event_end send_mail ~/scripts/email_alert.sh / “/home/ian/public_html/webcam/linksys/%v-%Y%m%d%H%M%S-%q”
Осталось создать скрипт email_alert.sh в нашем любимом редакторе. Не забудьте сделать его исполняемым:
#!/bin/sh #Destination e-mail address TO=”ian@firewall.banter.local” #Subject of the e-mail SUBJECT=”Motion detected” echo ‘Email body text goes here’ | mutt -a $1 -s $SUBJECT $TO
В скрипте $1 заменяется именем JPEG-файла, передаваемого обработчиком события Motion. LXF
И это еще не все...
Отправка сообщений о вторжении – не единственная возможность: Motion может держать вас в курсе событий с помощью смеси собственного встроенного web-сервера, PHP и FTP. Чтобы узнать, как этого добиться, см. продолжение учебника на http://www.linuxformat.ru/mag/webcam.txt.
Ссылки
- Драйвера web-камер Linux gspca: http://mxhaard.free.fr/download.html
- Детектор движения Motion: http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
Таблица событий
Функция | Опции | Аргументы |
---|---|---|
Запуск события (первое движение) | on_event_start | нет |
Конец события (нет движения в течение нескольких секунд) | on_event_end | нет |
Запись статического изображения | on_picture_save | Имя файла изображения |
Старт записи видео | on_movie_start | Имя видеофайла |
Окончание записи видео | on_movie_end | Имя видеофайла |
Детектирование движения (каждый одиночный кадр с обнаруженными Motion изменениями) | on_motion_detected | нет |