Совсем простое наблюдение можно организовать связкой fswebcam+cron+dropbox - это вполне очевидно и доступно каждому. Поэтому я решил сделать это при помощи связки motion+lighttpd±vloopback.
В чем, собственно, плюсы:
- Возможность состряпать любой удобный веб-интерфейс
- Можно смотреть mjpeg поток прямо в браузере
- motion самостоятельно умеет делать скриншоты и/или видео при обнаружении движения
Теперь о конфигах.
В конфиге Motion были изменены следующие опции:
#запуск motion демоном
daemon on
#мне не нужны автоматические снимки при обнаружении движения
output_normal off
#видеоролики тоже не нужны
ffmpeg_cap_new off
#время и дата перенесены в левую часть картинки
text_right
text_left %Y-%m-%d/n%T
#так текст лучше видно на маленьком экране мобильного телефона
text_double on
Конфиг Lighttpd совсем немного отличается от минимального:
#подключено несколько необходимых модулей
server.modules = ( "mod_auth", "mod_cgi", "mod_expire" )
#определены cgi которые нам нужны
cgi.assign = ( "nph-mjgrab" => "", "nph-mjprox" => "" )
#определено время устаревания для файлов
expire.url = ("index.htm" => "access plus 60 seconds", "index.2.htm" => "access plus 60 seconds" )
#настройки аутентификации
auth.debug = 0
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.lighttpd-passwd"
auth.require = ( "/" => ( "method"=>"digest", "realm"=>"auth req", "require"=>"valid-user" ) )
Для генерации файла htdigest используется одноименная утилита из пакета apache-tools
# /usr/sbin/htdigest -c /etc/lighttpd/.lighttpd-passwd "auth req" username
Упомянутые выше cgi нужно скомпилять из пакета MjpegProxyGrab. При этом нужно руками поправить путь к директории cgi-bin в Makefile
bindir = /srv/http/www/cgi-bin
По необходимости поправить #define'ы в исходниках - указать адрес, порт и лимит камер.
Еще можно поменять размер буфера, особенно если используется картинка больше чем 320х240 - в файле nph-proxygrab.c найти
char chbuffer[40000] = "";
и заменить 40000 на, например, 100000.
make && make install
Осталось только сделать пригодный вывод этого счастья.
Я сделал две html'ки в одной из них есть строка:
<img src="/cgi-bin/nph-mjgrab?1" width=320 height=240>
с помощью которой отображается один текущий кадр с камеры;
В другом
<img src="/cgi-bin/nph-mjprox?1" width=320 height=240>
для вывода mjpeg потока, который можно смотреть в любом нормальном браузере, вроде Firefox'а.
Авторефреш по вкусу.
3 комментария:
интересно, а первопень осилит это?
надо бы ещё к этому добавить dallas 1 wire сеть с термодатчиками дома и на улице, найти хороший аккум для ups, часов так на 7-8 и опять привязать рутер к dyndns.
я, кстати, заставил работать мтсовский хуавей e1550 со своим дир320, у меня теперь есть какой-никакой анлим и призрачная надежа на 3г :)
Точно, надо попробовать, а то мой бокс стоит без дела с тех пор как я бросил идею с самописным подобием MRTG :)
Опции framerate и minimum_frame_time должны помочь снизить нагрузку, если выставить их так чтобы камера опрашивалась реже чем раз в две секунды.
У меня еще есть задумка присобачить к системе подсветку, PIR сенсор и сервоприводы. Эх, мечты мечты)
Все нормально - первопень, а точнее Cyrix M-II, осиливает. В обычном режиме motion хавает 1-1.6% cpu, при просмотре mjpeg потока в браузере 5.5-7%. Это при дефолтном framerate = 2.
PS: для подключения камеры к моей Zida TX98-3D пришлось угадывать распиновку USB методом тыка. Оказалось, что это JP15, выводы 1-5 и 11-15(реально 1-4 и 11-14), где 4 и 14 это GND.
Отправить комментарий