Форум обсуждения оборудования  

Вернуться   Форум обсуждения оборудования "Умный дом" > Форум умного дома > Сделай сам > OpenWRT

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.10.2016, 16:12   #1
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 628
Вес репутации: 687
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
Exclamation Motion - великолепный (тонкости настройки).

Использование motion на роутерах считается экзотикой...
Может дело не "в размере" , а в умении пользоваться тем что есть ?
Так ли это, попробуем разобраться.
Конкретная полезная информация по правильной настройке motion простым языком в сети отсутствует.

Основные технические характеристики роутера - это частота процессора и объем памяти.

Развернуть для просмотра

Здесь мы можем видеть наиболее полную таблицу:
https://wiki.openwrt.org/toh/views/toh_extended_all
Как мы видим, достаточно много девайсов имеют хар-ки CPU400 RAM64 Flash8-16 (аналогия с ПК - CPU RAM HDD)

Motion в репозитарии OpenWRT - идет без возможности записи видео, только скриншоты - но и такой вариант может работать и быть полезным владельцу (CPU400 RAM64 Flash8).

Для того, чтобы писать видео, достаточно иметь нужное железо.
Прошивка с ffmpeg будет весить от 9M, нужен девайс с Flash16.

CPU600 RAM64 Flash16 - было опробовано мной в течении года.

Точно будет работать CPU400 RAM64 Flash16 - можно пробовать и на более слабом.
Уважаемый коллега ShoM на DIR-320 с Logitech C270 "motion-ом балуется"
http://shom.kz/openwrt-motion-detection/
А это CPU240 RAM32 Flash4.

(Миф 1) - первый и самый главный, motion можно запускать только на девайсе с мощным процессором - "... пробовал мол я на своем 4-х ядерном ваш motion ... и то ..."
[свернуть]

=========================

ПРИСТУПАЕМ К ПОДГОТОВКЕ ПРОШИВКИ

=========================

"Железка" готова, подключаем камеру в нашем случае Logitech C300 1280x1024 1,3Mp (единственный ее плюс ).

Веб-камеры Логитек грешат слетом прошивки:
http://remont-aud.net/forum/32-38701-1
И похоже меня это тоже не минуло

Подключаемся к роутеру по ssh

Вводим:

Код:
v4l2-ctl --list-formats
и смотрим:

Развернуть для просмотра


Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)

Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG

Мы то радуемся, у нас камера поддерживает MJPG , нам все уши "прожужжали интернеты" , что только MJPG позволит работать вебке на слабом железе роутера (миф 2)
[свернуть]

=========================

ПРИСТУПАЕМ К НАСТРОЙКЕ MOTION:

=========================

Все стартуем...

Код:
motion
Наши основные настройки:
v4l2_palette 8

rotate 90

width 640

height 480

framerate 2

Смотрим:

Код:
top

Развернуть для просмотра

Нам нужно проследить (записать или заскриншотить) использование памяти и процессора в следующих режимах работы.
Здесь мое железо 800x600:

- motion запущен стрима нет
%VSZ %СPU
54% 38%

- motion запущен стрим с ПК или планшета-телефона по Wi-Fi:
%VSZ %СPU
54% 50%

- motion запущен запись видео ролика при обнаружении движения:
%VSZ %СPU
76% 97%
[свернуть]

Но день сменяет ночь и начинаются танцы на граблях (MJPEG):

Развернуть для просмотра

Или изображение 4- рится

Или motion начинает писать все подряд пока проц "не устанет" перегреется.
Или пока процесс motion-а не самоликвидируется (у нас есть аварийный скрипт).

Начинаем выяснять, пробуем всякое, пробуем гораздо больше чем сильно всякое :
http://cyber-place.ru/showpost.php?p=34514&postcount=50

А ответ на поверхности, что такое MJPEG ?
Правильно:
по кадровый метод видео сжатия
https://ru.wikipedia.org/wiki/MJPEG

А ведь процессор помимо motion-а и обработки изображения с камеры, занят текущей работой роутера.

Такой же вывод сделал ShoM
http://shom.kz/openwrt-motion-detection/
MJPEG с motion-ом на DIR-320 с Logitech HD Webcam C270 - просто не стартует...
[свернуть]


Соответственно делаем:

Наши основные настройки:
v4l2_palette 15

rotate 90

width 640

height 480

framerate 2

Смотрим:

Код:
top

Развернуть для просмотра

Нам нужно проследить (записать или заскриншотить) использование памяти и процессора в следующих режимах работы.
Здесь мое железо 800x600:

- motion запущен стрима нет
%VSZ %СPU
62% 18%

- motion запущен стрим с ПК или планшета-телефона по Wi-Fi:
%VSZ %СPU
62% 38%

- motion запущен запись видео ролика при обнаружении движения:
%VSZ %СPU
78% 92%

Увеличиваем разрешение под свои тех условия

v4l2_palette 15

width 800

height 600

framerate 2
[свернуть]


Самый распространенный YUYV (большой выбор вебкамер), то что нужно для motion.

Все работает как часы, час - за часом, день за днем.

Кто осилил "много букф" молодец

P.S. Полученные видео ролики здесь прикрепить не получится, впрочем и по другим соображениям думаю не стоит ...

Главное добиться постоянной стабильной работы, если начинаются сбои то:

Развернуть для просмотра

1. Отключите запись звука, на слабом железе лучше его вообще не писать.
Впрочем если вы стримите и делаете одно фото - можно и звук писать.
2. Уменьшайте качество видео.
3. Меняйте mpeg4 на swf.
4. Уменьшайте разрешение.
[свернуть]


© Ссылка на автора и форум http://cyber-place.ru обязательна
Всем кто оказывал помощь большое спасибо !!!
Отдельное спасибо sakatgg

Последний раз редактировалось sunny; 15.03.2017 в 00:38. Причина: © Ссылка на автора и форум http://cyber-place.ru обязательна
sunny вне форума   Ответить с цитированием
Старый 19.10.2016, 01:08   #2
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 628
Вес репутации: 687
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию Re: Motion - великолепный (тонкости настройки).

=========================
ПОДГОТОВКА ПРОШИВКИ
=========================

Итак имеем девайс с хар-ками CPU600 RAM64 Flash16 и имеем самостоятельно собранную прошивку OpenWRT со следующими пакетами:

Развернуть для просмотра

Base system ---> <*> block-mount (используем флешку)

Kernel modules ---> Filesystems ---> <*> kmod-fs-ext4 (используем флешку)

Kernel modules ---> USB Support ---> <*> kmod-usb-storage (используем флешку)
Kernel modules ---> USB Support ---> <*> kmod-usb-storage-extras (используем флешку)

Kernel modules ---> Sound Support ---> -*- kmod-sound-core (поддержка звука ядром)
Kernel modules ---> Sound Support ---> <*> kmod-usb-audio (поддержка звука ядром)

Kernel modules ---> Video Support ---> <*> kmod-video-core (поддержка видео ядром)
Kernel modules ---> Video Support ---> <*> kmod-video-uvc (поддержка видео ядром)
Kernel modules ---> Video Support ---> <*> kmod-video-videobuf2 (поддержка видео ядром)

LuCI ---> 1. Collections ---> <*> luci (графическая оболочка, позволяет настраивать OpenWRT используя браузер)
LuCI ---> 2. Modules ---> Translations ---> <*> Russian (ru) (для эстетов можно и французский накатить)
LuCI ---> 3. Applications ---> <*> luci-app-commands (удобно и памяти хватает)
LuCI ---> 3. Applications ---> <*> luci-app-mjpg-streamer (удобнее пользоваться тем что есть )

Multimedia ---> <*> ffmpeg (пакет позволяет motion-у писать видео)
Multimedia ---> <*> mjpg-streamer (а чтобы был )
Multimedia ---> <*> motion-ffmpeg (герой темы)

Network ---> Filesystem ---> <*> davfs2 (для подключения Яндекс Диска)

Utilities ---> Editors ---> <*> nano (текстовый редактор для правки конфигов)
Utilities ---> <*> alsa-utils (пишем звук)
Utilities ---> <*> usbreset (сброс питания usb, необязательно)
Utilities ---> <*> v4l-utils (тонкая настройка камеры, необязательно)
[свернуть]


Для сборки прошивки с motion-ffmpeg достаточно подложить правильный архив motion и конфиг, подробнее здесь:
http://cyber-place.ru/showthread.php?t=2071

Скрипты

Развернуть для просмотра

1sh - сортирует папки YD (далее Яндекс Диск)
Код:
#!/bin/sh
SRC_DIR="/mnt/ваше_название_YD/дежурная_папка"
DST_DIR="/mnt/ваше_название_YD/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H)"

for F in ${SRC_DIR}/*; do
	SUB=$(date -d"$(stat -c%y "${F}")" +%Y%m%d)
	mkdir -p "${DST_DIR}/${SUB}"
	mv "${F}" "${DST_DIR}/${SUB}/"
done
2sh - удаляет старые папки с YD, где 720 - это кол-во часов в 30 днях
24 - день назад, 240 - 10 дней назад
Код:
#!/bin/sh

a=`echo | awk '{ print strftime( "%Y-%m-%d", systime()-60*60*720); }'`

if [ -n "$a" ]

then
	rm -rf /mnt/ваше_название_YD/$a
else
	echo 'NOT DELETE'
fi
2sh - удаляет старые папки с YD, 2-й вариант скрипта.
Начинает удалять старые файлы при наполнении накопителя более 90%.
Код:
#!/bin/sh

a=`ls -t /mnt/ваше_название_YD | tail -n 1`

if [ $(df /mnt/ваше_название_YD | sed 's/.* \([0-9]\+\)%.*/\1/;$!d') -gt 90 ]

then
        rm -rf $a
else
        echo 'NOT DELETE'
fi
3sh - следит подмонтирован ли YD, и если нет подключается к YD
Код:
#!/bin/sh
if grep -q 'https://webdav.yandex.ru /mnt/ваше_название_YD' /proc/mounts; then
else
	echo 'y' | mount.davfs https://webdav.yandex.ru /mnt/ваше_название_YD
fi
4sh - следит работает ли motion, и если нет запускает его.
Код:
#!/bin/sh
if pgrep motion; then
else
        motion
fi
[свернуть]

Прописываются задания на запуск скриптов в cron.

Так как своего носителя достаточного объема у роутера нет, все пишется на облако, в данном случае YD.
Чем облако лучше регистратора с пятью винтами кратко:
- стоит дешевле (интернет)
- не потребляет электроэнергию
- не требует обслуживания и замены вышедших из строя частей
- с точки зрения безопасности - не сгорит, и не будет выведен из строя в случае криминальных посягательств

Для записи на флешку (используя хаб) - ставим дополнительные пакеты (наверху).

По хабу:
http://cyber-place.ru/showpost.php?p=35474&postcount=17
Подготовка флешки:
http://cyber-place.ru/showpost.php?p...&postcount=279
http://cyber-place.ru/showpost.php?p...&postcount=280

=========================

© Ссылка на автора и форум http://cyber-place.ru обязательна
Всем кто оказывал помощь большое спасибо !!!
Отдельное спасибо sakatgg

Последний раз редактировалось sunny; 15.03.2017 в 00:25.
sunny вне форума   Ответить с цитированием
Старый 19.10.2016, 01:12   #3
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 628
Вес репутации: 687
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию Re: Motion - великолепный (тонкости настройки).

=========================
НАСТРОЙКА MOTION:
=========================

Основные разрешения с которых следует начать настройку 320x240 и 640x480.

Открываем конфиг motion-ffmpeg:

Развернуть для просмотра

Код:
nano /etc/motion.conf
У стандартного motion OpenWRT:
Код:
nano /etc/motion/motion.conf
Итак проверяем:
daemon on
process_id_file /var/run/motion/motion.pid
[свернуть]

И видим самое главное:

# V4L2_PIX_FMT_MJPEG : 8 'MJPEG'
# V4L2_PIX_FMT_YUYV : 15 'YUYV'

У нас есть 2 варианта, но нам то напели что MJPEG наше все

Делаем:
v4l2_palette 8

Далее:

Развернуть для просмотра

Я "кручу" изображение на 90 градусов (индивидуально по умолчанию rotate 0)
rotate 90

width 640

height 480

framerate 2
поверьте больше и не будет, лучше выкрутить качество на максимум
ffmpeg_variable_bitrate 2
здесь иной четырехядерник даст не более 5-15

motion работает с ip-камерой:
netcam_url 78.134.89.54:8081/?action=stream
или
netcam_url http://50.199.22.21:84/mjpg/video.mjpg
здесь должно быть отключено:
#videodevice /dev/video0
если доступ по паролю:
netcam_userpass юзер:пароль

auto_brightness on (если помещение плохо освещается)
подстройка уровня яркости камерой или motion-ом
auto_brightness off (снимает нагрузку с роутера)

threshold_tune on
если отключаем off, по выставляем кол-во пикселей при изменении которых motion - детектирует движение
threshold 1500

noise_tune on
если отключаем off, по выставляем значение motion для определения разницы между движением и шумом.
По умолчанию noise_level 32
noise_level 1 - будет писать все подряд
noise_level 150 - будет писать с пропусками

Там же можно настроить срабатывание по зонам и шаблону:
; area_detect value
; mask_file value

lightswitch 40
значение игнорирования бликов (изменения яркости освещения на определенном участке)
солнце вышло из-за тучи и лучи бликуют в окошко меняя уровень освещенности и делая засветку на определенном участке изображения, максимальное значение 100

minimum_motion_frames 1
минимальное кол-во кадров с которого motion детектирует движение

pre_capture 0
кол-во кадров до

post_capture 0
кол-во кадров после

event_gap 60
время реализации сценария после детектирования движения
чтобы отключить звук строго после окончания движения/записи видео ставим ноль (лучше 20) - но и видео получим более отрывистое...
При записи звука лучше делать меньше от 20 до 60
Если пишем только видео - можно оставить дефолтное значение - 60

max_movie_time 60
размер ролика в секундах
остановился в итоге на 30
max_movie_time 30
соответсвенно
event_gap 30
памяти у роутера мало, а народ у нас ходит "косяками"
могут и на площадке "задержаться" на час-два

emulate_motion on (включаем эмуляцию движения для настройки, будет писать ролики по 60(30) секунд подряд)
не забываем выключить после отладки:
emulate_motion off

output_pictures off (если настраиваем видео, нам пока не до этого)
[свернуть]

Настройка видео:

Развернуть для просмотра

ffmpeg_output_movies on

ffmpeg_bps 400000 (начать настройку советую с этого значения, максимально 9999999)
при этом здесь должно быть 0
ffmpeg_variable_bitrate 0

Когда/если все настроено, лучше делать так:
ffmpeg_variable_bitrate 2
Если ваше железо тянет.

# Codec to used by
Здесь у нас 2 варианта:
ffmpeg_video_codec swf
или
ffmpeg_video_codec mpeg4
можете пробовать конечно, но начать лучше с этих двух
Начните лучше так, для слабого железа:
ffmpeg_video_codec swf
[свернуть]

target_dir /mnt/ваше_название_YD/дежурная_папка

Развернуть для просмотра

имхо чем короче имена, тем лучше
Принцип записи и сортировки

- /ваше_название_YD
-- Содержит папки по дням такого вида
2016-10-10/

--- внутри часовые папки такого вида
2016-10-10_00
..
..
2016-10-10_23

---- внутри видео и фото такого вида
16-00:15:39.avi
15-09:18:49.swf
15-16:27:41.jpg


Видео и фото пишутся в дежурную папку, из которой скрипт автоматически перетаскивает файлы каждые 15 минут по часовым папкам в текущую дневную папку.

Соответственно пишем:
snapshot_filename %d-%H:%M:%S
picture_filename %d-%H:%M:%S
movie_filename %d-%H:%M:%S
timelapse_filename %d-%H:%M:%S
[свернуть]

Настраиваем стрим:

Развернуть для просмотра

stream_port 9889
меняйте стандартный 8081
проявите фантазию

Еще одна "хитрая фишка"
такое значение:
stream_quality 50
в разрешении 800х600 снимает с процессора нагрузку на 10%
по сравнению с:
stream_quality 100
самое интересное, что качество картинки на большом разрешении не изменяется, а нагрузка на процессор падает

stream_motion on

stream_maxrate 2

stream_localhost off

stream_auth_method 0 (если паролим то, method 1)

Если стрим без авторизации:
#stream_authentication ваш логин:ваш пароль

Если после ввода пароля:
stream_authentication ваш логин:ваш пароль

Управление motion-ом с браузера:
webcontrol_localhost off

Настоящие индейцы правят конфиги руками
[свернуть]


Экзотика пишем звук:

Развернуть для просмотра

on_movie_start 'arecord /mnt/ваше наименование YD/дежурная папка/%d-%H:%M:%S.wav'

on_movie_end 'sh /usr/bin/akill'

Убить процесс получается только скриптом akill:
Код:
#!/bin/sh
p=`pidof arecord`; kill -9 $p
Здесь моно с минимальными настройками, процесс потребляет немного.
Можно улучшить качество - индивидуально...

Выглядит так:


Включать после отладки.
[свернуть]

=========================

Просматривать стрим motion-a можно как с ПК так и с девайса на Андроид, таким образом:

Развернуть для просмотра

Смотрим какое значение выставили здесь:
stream_port 9889

Смотреть:
http://192.168.1.1:9889/
или
http://192.168.1.1:9889/?action=stream
[свернуть]

=========================

value в настройках означает значение

Развернуть для просмотра

Соответственно если хотим использовать:

; netcam_url value
или
; on_event_start value

то вместо value ставим свое значение:

netcam_url http://50.199.22.21:84/mjpg/video.mjpg
[свернуть]

=========================

Все настройки motion-а можно найти здесь:
http://www.lavrsen.dk/foswiki/bin/vi...figFileOptions

=========================

© Ссылка на автора и форум http://cyber-place.ru обязательна
Всем кто оказывал помощь большое спасибо !!!
Отдельное спасибо sakatgg

Последний раз редактировалось sunny; 15.03.2017 в 00:47.
sunny вне форума   Ответить с цитированием
Старый 28.02.2017, 10:11   #4
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 628
Вес репутации: 687
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию Re: Motion - великолепный (тонкости настройки).

======================================== ==========
Запись роутером с motion+ffmpeg сторонней IP камеры выглядит так
======================================== ==========

Развернуть для просмотра

[свернуть]

Ищем в гугле трансляцию с ip камеры:

Развернуть для просмотра

[свернуть]

Я использовал именно эту камеру, чтобы показать что ссылки могут отличаться и первоначальная ссылка:
http://45.37.182.126/mjpeg/mjpeg4.html
Если скопируем ее в конфиг motion-а - работать не будет.

Идем в свойства изображения:

Развернуть для просмотра


[свернуть]

Смотрим реальный адрес:
http://45.37.182.126/goform/stream?cmd=get&channel=4
И разрешение:
640×480

Адрес можно скопировать так:

Развернуть для просмотра

[свернуть]

И правим motion.conf

Развернуть для просмотра

Код:
nano /etc/motion.conf
Настройки следующие:
Код:
#videodevice /dev/video0
v4l2_palette 8
rotate 0
width 640
height 480
framerate 2
netcam_url http://45.37.182.126/goform/stream?cmd=get&channel=4
ffmpeg_variable_bitrate 2
Пишем куда сохранять:

Код:
target_dir /mnt/sda1
Здесь на флешку, можно на любой webdav облачный сервис.
[свернуть]

Нагрузка на железо в момент записи:

Развернуть для просмотра

[свернуть]

И получаем результат:




© Ссылка на автора и форум http://cyber-place.ru обязательна
Admin спасибо

Последний раз редактировалось sunny; 15.03.2017 в 00:41.
sunny вне форума   Ответить с цитированием
Ответ

Метки
motion, роутер, openwrt, видеонаблюдение


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 07:52. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика