Продолжаю копаться и экспериментировать. Места во внутренней флешке правда не хватает, подцеплю дополнительную, USB - и перенесу часть (на период отладки - все, кроме ядра) программ туда.
Движения распознает, крутится... Отлаживаю "самовозбуждение", когда камера продожает движение от того, что изображение в кадре изменилось в предыдущем движении.
В общем-то на вопрос топикстартера ответить могу, хоть и не полностью: Можно. Без обработки напильником не обойтись, да... Вопрос про "фокусировку" остается открытым - у меня таких объективов нет. Но наводится на движущийся объект довольно успешно. Хоть и с задержкой. но над этим работаю. Потребуется: Камера типа foscam 8908 (или клон, что дешевле намного). Или несколько камер. Платформа для софта: Тестовая моя для отладки это P3 селерон 800 Мгц и 396 Мб памяти, винт IDE на 40 гб. То есть хоть нетбук использовать можно. Разве что винт желательно от 200 Гб - чтобы много событий хранить. Выкладываю текущий:
ZoneMinder для чайника или прелести секса с видеонаблюдением. *оффтоп on* Наверно каждому может пригодиться простая система видеонаблюдения. Следить за подъездом, за машиной... Да хоть за котом! подумал о том чтобы неплохо поставить свою систему, с блекджеком и ш...(возможностью снимать эротику). *оффтоп off* Собрана тестовая машинка: интегрированная мать Asus P5KPL, процессор Cel 2.5 Ггц, память 2ГБ. В качестве системного диска выбрана Compact Flsah на 8 ГБ - через переходник на IDE. Для архива - SATA диск на 320 ГБ.
Шаг 1: Установка системы Выбор пал на Debian, так как более привычен. Флешка в картридер своей машины (вот в этом - главный плюс! В случае чего - в 2 минуты выдергивается, подмонтируется и правится). Делаем три примари раздела:
/dev/sdb1 * 1 6 48163+ 83 Linux /dev/sdb2 7 870 6940080 83 Linux /dev/sdb3 871 974 835380 83 Linux
Первоначально хотел отвести 3 раздел под своп - но одумался. Монтируем второй раздел, debootstrap - и через 5 минут получаем систему. Я ставил squeeze - так как ZM версии 1.24 требует свежих пакетов. Монтируем первый раздел и ставим grub. Далее chroot в установленную систему, apt-get install mc ssh Настраиваем сеть, apt, меню груба, ставим ядро (у меня 2.6.32-5-686). Фух. Флешку - в тестовую машину, запускаем.
apt-get install zoneminder
Он тянет за собой все что нужно, так что пока скачаются мускуль и апач - пьем %любимый_напиток% и/или курим.
Шаг 2: Настройка Тут я буду использовать инфо из инструкции по установке с оффсайта: http://www.zoneminder.com/wiki/index.php/Documentation#Installation_from... Первым делом создаем ссылку для апача на конфиг сайта ZM:
Потом перезапускам апач, мне почему-то потребовалось его перезапустить несколько раз, а может локальный кэш не обновлялся..
/etc/init.d/apache2 restart
Важно! Добавляем апача в группу video. Если не сделать - потратим лишний час на выяснение, почему нет картинки.
adduser www-data video
Заходим на http://Address_of_server/zm/index.php - и наблюдаем интерфейс.
И самое веселое - начинаем пытаться увидеть свои камеры... Для теста я использовал дешевую и распространенную Web-камеру Defender G-Lens 324 (около 350 рублей цена) Выглядит она так:
videoserv:/etc/apt# lsusb Bus 005 Device 002: ID 093a:2620 Pixart Imaging, Inc. Ставим пакет v4l-conf. Делаем v4l-info /dev/video0 Видим самое главное: general info VIDIOC_QUERYCAP driver : "pac7311" card : "USB Camera (093a:2620)" bus_info : "usb-0000:00:1d.3-2" version : 2.7.0 capabilities : 0x5000001 [VIDEO_CAPTURE,READWRITE,STREAMING]
То есть определилась. Пытаемся настроить в ZM: Жмем "Add new monitor" переходим на вкладку "Sources" Заполняем: Device Path /dev/video0 Capture Method Video For Linux version 2 Device Channel 0 Device Format PAL Capture Palette JPEG Capture Width 640 Capture Height 480 Preserve Aspect Ratio Orientation Normal
Ссылки сверху (Probe и Presets) - нам бесполезны, предназначены для опознания нескольких сетевых камер.
Сохраняем, после обновления страницы смотрим на _цвет_ пути источника в колонке Source. Если красный - что-то не так. Не отчаиваемся, клацаем в веб-интерфейсе на имя созданного монитора... И - беспорядочные полосы, помехи или вообще черный экран. Ничего страшного. Для начала - открываем в консоли tail -f /tmp/* и посматриваем туда на предмет дебага. Для теста устройства используем команду
videoserv:/etc/apt# zmu -d /dev/video0 -v -q Video Device: /dev/video0 General Capabilities Driver: pac7311 Card: USB Camera (093a:2620) Bus: usb-0000:00:1d.3-2 Version: 2.7.0 Type: 0x5000001 Supports video capture (X) Does not support video output Does not support frame buffer overlay Does not support VBI capture Does not support VBI output Does not support sliced VBI capture Does not support sliced VBI output Does not support video output overlay Does not have tuner Does not have audio in and/or out Does not have radio Supports read/write i/o (X) Does not support async i/o Supports streaming i/o (X) Standards: Formats: PJPG (PJPG) Crop Capabilities Bounds: 0 x 0 Default: 0 x 0 Current: Cropping is not supported Inputs: 1 Input 0 Name: pac7311 Type: Camera Audioset: 00000000 Standards: 0x0 Power on (X) Signal detected (X) Colour Signal detected Horizontal Lock detected
Если вывод осмысленный - то хорошо Если нет - пробуем V4L версии 1
zmu -d /dev/video0 -v -q -V1
Должно быть что-то похожее:
videoserv:/etc/apt# zmu -d /dev/video0 -v -q -V1 Video Device: /dev/video0 Video Capabilities Name: USB Camera (093a:2620) Type: 1 Can capture Video Channels: 1 Audio Channels: 0 Maximum Width: 640 Maximum Height: 480 Minimum Width: 48 Minimum Height: 32 Window Attributes X Offset: 0 Y Offset: 0 Width: 640 Height: 480 Picture Attributes Palette: 0 - Unknown Colour Depth: 8 Brightness: 32768 Hue: 0 Colour :32639 Contrast: 32639 Whiteness: 0 Channel 0 Attributes Name: pac7311 Channel: 0 Flags: 0 Type: 2 - Camera Format: 0 - PAL
Для некоторых камер (моей - тоже) вывод содержит ошибку
Error, failed to query crop: /dev/video0: Invalid argument
Не страшно! Есть патч [FIX] ZM 1.24.2 "Error, failed to query crop" (это нам не надо, порезал)
Хинт 1. Если в выводе логов видим zmserver zmwatch[3093]: ERR [Can't get shared memory id '7a6d0001', 1: No such file or directory] значит надо править (добавлять) в /etc/sysctl.conf
Хинт 2. Работающий вариант добавления "совместимости": Многие (не все) камеры USB требуют предварительной подгрузки библиотек v4l. Берем и редактируем файд /usr/bin/zmdc.pl
После строки $ENV{SHELL} = '/bin/sh' if exists $ENV{SHELL};
Ну а "приятное" - настройка датчика движения и прочего - уже через веб-интерфейс. Да, место где хранится информация указывается ссылкой в /usr/share/zoneminder/events
Расковырял web интерфейс и подправил некоторые файлы. Реализовал посыл команд через JavaScript прямо в web интерфейс с помощью кнопок клавиатуры. [img] download/file.php?mode=view&id=20570 [/img]
На данный момент столкнулся с проблемой, не могу читать из ttyS0 порта камеры. Хотелось бы читать данные с Atmega подсоединенного к TTY камеры. Написал простенькую программу, которая читает данные с tty порта в камере и по идее должна складывать эти данные в файл на web-сервере.
Столкнулся с проблемой. Данные от AVR не приходят в порт камеры. Вернее приходят но коряво.
#include <fcntl.h> /* open() and O_XXX flags */ int main (int argc, char ** argv) { const char * name = "/home/kiss.txt"; int mode = 0777; int flags = O_WRONLY | O_CREAT | O_EXCL;
int fd = open (name , flags, mode); printf ("File descriptor is: %d", fd); write (fd, "<HTML>",6);
int fd1 = open ("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY ); if (fd1 == -1) { perror ("open_port:Unable to open /dev/ttyS0 - "); } else { char buffer[3]; fcntl (fd1, F_SETFL,0); printf ("File descriptor is: %d", fd1); while (1) { read (fd1,buffer,3); write (fd, buffer,3); }
close (fd1); }
close (fd);
}
Присоединил камеру к Atmega в VMLAB и отправляю команды следующим образом http://192.168.1.3/comm_write.cgi?port= ... =2&data=$F в VMLAB все приходит. Отправляю данные из VMLAB в порт - отправляются, но не доходят до камеры. Вернее доходят но в файл не попадают. И только когда я отсоединяюсь от VMLAB и подключаюсь терминалом на tty камеры все мои команды быстро появляются в терминале и попадают в файл. Как будто они попали в какой-то буфер и подсоединение к терминалу инициирует опорожнение:) этого буфера в терминал. Плюс перенаправление вывода с программы camera в /dev/null не работает, и на Atmega много всякой дряни приходит от камеры, которую надо фильтровать.
Из-за того что застрял на этом стал ковырять в другом направлении - собственная прошивка камеры. Инструменты взял с OpenIPCAM.com Там люди этим же самым занимаются. На данный момент собрали прошивку с JFFS, mathopd (собственный сервер) и Video4Linux обещают opkg. Склоняюсь к такому варианту, так как монолитная camera не есть гут, а вот мини программы Unix Phylosofy мне больше подходят, можно настраивать потом как хочешь. Также пересобираю свое ядро, но от неполных знаний получается не очень. Хочу все лишнее с ядра выкинуть так как в умолчальном ядре много всякого барахла и левых драйверов. На openipcam лежат исходники для моего Wi-Fi модуля в камере VT6656 , но я не смог их скомпилировать под uClinux, а тот драйвер что лежит на сайте не хочет insmod'ится так как собран под более свежее ядро. admin на OpenIPCam обещал в скором времени все выложить в широкий доступ так что можно будет свое собственное ядро и прошивку собирать, так как все эти камеры, смотря какой китаец их делал, немного отличаются железом. В общем будет что-то на подобии OpenWRT:) Жду не дождусь, а пока поднимаю свои linux kernel skills:)
Базировался на http://foscam-util.svn.sourceforge.net/ ... iew=markup но там метод упаковки для свежих прошивок не подходит. Поэтому собираю программой оттуда, затем меняю в заголовке значения еще одной приблудой-калькулятором.
Они обновили тул, теперь все подходит и работает, сам паковал и шил.
С огромным удовольствием поучаствовал бы в коллективном проекте, основанном на Foscam linux based камерах. Так знаний у меня немного да и те - довольно разношерстны:) А на OpenCam информация появляется редко, так что сам ковыряю:)
Вложения
Распознает нажатую кнопку клавиатуры и отсылает команду
Мур, спасибо за ответ. Очень категорично. Но меня в таком ответе смущает вот что. В камере к первому USB подключена WiFi сетевая плата, и работает. Но это не все. Я понимаю, что любой USB 3G модем - это АТ-модем, а wifi плата это network card. Однако мне недавно попался в руки LTE модем (правда с впаянной симкой) и он является именно сетевым адаптером. Как думаешь, есть смысл в этом направлении копать?
3G роутеры у китайцев конечно же есть, я уже скупил почти все, что бывает в миниатюрном исполнении, но все равно они слишком здоровые. Уже смотрю в сторону того, чтобы самому сделать роутер.
подключить можно хоть бегемота, если к нему есть драйвера. в камере всё работает потому что драйвера под всё китайцами были написаны.
так же и с донглом, есть дрова нет проблем. так что теоретически и тут можно разобрать прошивку, впихнуть туда драйвера для модема и собрать обратно. openwrt и подобные можно посмотреть насчёт того как у них это сделано.
Проще всего IP камера, можно не wifi, мелкий роутер, типа TPLINK-MR3020 и модем. На копание в потрохах камеры уйдет невероятное количество сил и времени, это я как краевед вам обещаю.
Вот только хватит ли модему восходящей скорости на человеческое видео?
Набрел на эту ветку форума, с похожим вопросом. Подскажите пожалуйста, реально ли к данной камере прикрутить 3G модем?
Ну так надо попробовать - если ядро (а оно там стандартное) съест модем - то и проблем почти нет. Что надо: 1. Прицепиться к UART камеры - имеем консоль 2. спаять USB разьем. 3. Инструментарий для сборки прошивки (есть, да хоть у меня - по одному щелчку собирает) Хотя проще временно вынести корень на флешку. 4. Закомментить запуск camera в init.sh 5. Залить прошивку. 6. Попробовать модем. 7. собрать (найти) pppd 8. добавить скрипт инициализации и дозвона в init.sh
Добавлено спустя 1 минуту 13 секунд:
Myp писал(а):явно не хватит, а пережимать в убогий размер нечем. но фотки слайд шоу слать можно будет)
Так есть же разрешение 160. Оно там не пережимается - просто усредняются четыре соседних пикселя.