Общая Астрономическая Конференция

Общая Астрономическая Конференция (http://starlab.ru/index.php)
-   Своими руками (http://starlab.ru/forumdisplay.php?f=22)
-   -   Роутер D-Link DIR320 / Asus WL500gpV2 (http://starlab.ru/showthread.php?t=21974)

monstr 11.10.2011 11:06

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Вложений: 1
Уже работают обе вебки. Пока что забирают изображения раз в N минут, где N = количество камер. Количество камер при этом не ограничено, хватило бы питания на хабе.

Крон ежеминутно запускает скрипт проверки связи

PHP код:

# crontab -l
* * * * * /opt/etc/ping-reboot.sh 

(/opt - флешка)

В котором проверяется (см. выше) наличие нужных мне сервисов (в данный момент веб-сервер), проверяется связь до гугла и запускается мой скрипт камеры, вот часть ping-reboot.sh


PHP код:

# webcam get frame
if [ -"/opt/etc/webcam.1" ]; then
    
/opt/etc/webcam.start.sh video1
    rm 
/opt/etc/webcam.1
else
    /
opt/etc/webcam.start.sh video0
    touch 
/opt/etc/webcam.1
fi 

Стартовый скрипт камеры, /opt/etc/webcam.start.sh воспринимает как параметр имя устройства камеры относительно /dev , например, video0, то есть /dev/video0 будет использовано

PHP код:

#/bin/sh

mkdir /tmp/webcam
mjpg_streamer 
-"input_uvc.so -f 1 -d /dev/$1 -y -q 80 -r CGA" -"output_file.so -f /tmp/webcam/ -d 1000 -c /opt/etc/webcam.finish-$1.sh" 

Скрипт запускает грабинг кадров раз в секунду с указанного uvc устройство с записью в только что созданный /tmp/webcam после каждого кадра запускается /opt/etc/webcam.finish-$1.sh ($1 подменяется на первый параметр), к примеру /opt/etc/webcam.finish-video0.sh

/opt/etc/webcam.finish-video0.sh:
PHP код:

#/bin/sh

/opt/etc/webcam.finish.sh 0 

такая прослойка сделана из-за невозможности передать параметр через mjpg_streamer в стоп-скрипт.

/opt/etc/webcam.finish.sh (стоп-скрипт) воспринимает параметр - номер камеры:
PHP код:

#/bin/sh

if [ `ls /tmp/webcam | wc | awk '{print $1}'` -ge 5 ]; then
        killall mjpg_streamer
        cd 
/tmp/webcam
        cp 
`ls | sort | tail -n1` /opt/share/www/webcam/$1/
        
cp `ls | sort | tail -n1` /opt/share/www/webcam/$1/current.jpg
        rm 
-Rf /tmp/webcam
fi 

Если кадров 5 или больше, убивает mjpg_streamer, копирует последний кадр в архив и в current.jpg для просмотра на морде.
Удаляет временный каталог.

Чуть позже добавлю возможность просмотра любой камеры "по старинке" с 1...сколько хочешь fps через output_http. Основной скрипт архива будет блокироваться на время просмотра потока.

Архив в вебе ещё не реализован.

Malice 11.10.2011 11:15

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Цитата:

Сообщение от monstr (Сообщение 429046)
Это решает 99% глюков.

+1

monstr 11.10.2011 12:55

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Реле заработало из веба.
Все исходники доступны здесь: ftp://home.milantiev.com/pub/router

Система легко настраивается под нужды Зазазчика выделенным конфигом, внешний вид через отдельные html-шаблоны, понятные "первокласнику" создания веб-сайтов. Допускает использования множественных шаблонов внешнего вида. К примеру, Кирилл сказал, что для него лучше бы смотрелся вариант с вкладками, в последствие будет папка шаблонов "slides".

monstr 16.10.2011 15:07

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Вложений: 1
Сделал архив фоток. Ссылка рядом с названием камеры.

Выбирается дата, потом час. Ждём, пока загрузятся все фотки за этот час (достаточно шустро грузятся, они мелкие), потом можно листать. Чуток неудобно, что нельзя кнопками листать, я взял готовое решение альбома. Можно какое-нить другое прикрутить потом. Название файла (время) - наведя на цифру мышку, покажется всплывающей подсказкой.

Файлы сохраняются в формате
/opt/share/www/webcam/НОМЕР/ДАТА/ВРЕМЯ.jpg , где:
- НОМЕР: 0 или 1 (две вебки, получается можно 10 поставить, чтобы не вышло за 1 разряд);
- ДАТА: 2011-10-14, например;
- ВРЕМЯ: 15:44, например.

Исходники там же, но посмотреть пока в открытом доступе негде. Как у себя в обсерваторию перенесу, сделаю публичный доступ к этой части.

Дядя Вова 16.10.2011 15:25

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
А я как бы поставил сервер VPN на роутере http://31.42.39.8/site/news.
Но не могу придумать как теперь сделать через него доступ к удаленному WEB-серверу, т.е. сделать так:
Дома: реальный IP, DIR-320, VNP-сервер
На даче: 3G-DIR-320, Web-сервер.
Подскажите, какие слова гуглить надо? Как обратиться к удаленному роутеру? Там какой-то клиент VPN должен быть?

monstr 16.10.2011 15:53

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Цитата:

Сообщение от Дядя Вова (Сообщение 429621)
А я как бы поставил сервер VPN на роутере http://31.42.39.8/site/news.
Но не могу придумать как теперь сделать через него доступ к удаленному WEB-серверу, т.е. сделать так:
Дома: реальный IP, DIR-320, VNP-сервер
На даче: 3G-DIR-320, Web-сервер.
Подскажите, какие слова гуглить надо? Как обратиться к удаленному роутеру? Там какой-то клиент VPN должен быть?

На даче vpn клиент. Дома vpn сервер. Дачный роутер заходит в твою vpn-сеть, в итоге на домашнем роутере у тебя есть:
- внешний IP;
- внутренняя домашняя сеть/сети;
- vpn сеть, в которой, в том числе есть дачный роутер.

Если с домашнего роутера работает ping <дачный_ip>, если работает telnet <дачный_ip> <порт_веба> , то осталось только:
- открыть в файрволе на внешнем интерфейсе какой-либо <свободный_порт>;
- сделать проброс с <внешнего_ip> <свободного_порта> на <дачный_ip> <порт_веба> и наоборот.
Есть, к примеру, мелкая тулза, redir называется. Не знаю, собрана ли она под mips.

Можно проброс и штатными средствами сделать, но тогда на дачном роутере шлюз по умолчанию надо ставить на домашний VPN, что неудобно.

После чего можно браузером из мира обращаться к <внешний_ip>:<тот самый порт>

Дядя Вова 16.10.2011 16:15

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Цитата:

Сообщение от monstr (Сообщение 429624)
На даче vpn клиент.[...]

Я его в лицо не знаю! Ну, а на что он похож? :)

Цитата:

Можно проброс и штатными средствами сделать, но тогда на дачном роутере шлюз по умолчанию надо ставить на домашний VPN, что неудобно.
Да, вот такая мысль была. И что прямо это реальный ip шлюзом указать? А почему неудобно?

monstr 16.10.2011 17:50

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Цитата:

Сообщение от Дядя Вова (Сообщение 429625)
Я его в лицо не знаю! Ну, а на что он похож? :)

А шут его знает :), пусть вон Виктор подсказывает, он в юниксах умный.
Вероятно, тот же пакет openvpn. Или иной, в названии которого openvpn присутствует... и ещё может слово "client" есть. Лучше загуглить.

Цитата:

Сообщение от Дядя Вова (Сообщение 429625)
Да, вот такая мысль была. И что прямо это реальный ip шлюзом указать? А почему неудобно?

Добавляется зависимость. А их лучше избегать, так как они понижают общую надёжность системы.
Плюс весь трафик с дачи пойдёт через твой дом, что может быть... неудобно :).

monstr 18.10.2011 01:02

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Вложений: 2
Доделал realtime показ выбранной вебки, как в интерфейсе, так и в системе сохранения архива фоток с вебок.

Ссылка "realtime" рядом со ссылкой на архив открывает новую страницу с окном камеры.

Запускается, пока что, не сразу, а по грани минуты.
То есть, надо нажать на ссылку realtime нужной камеры и порой давить f5, пока в окне не появится трансляция с камеры (ждать не дольше 59 секунд).

Открытие основной страницы переключает камеры обратно в режим ведения архива. То есть, посмотрел realtime с нужной тебе камеры, потом нажал ссылку back, например, или обновил основную страницу, трансляция прекратилась, архив пошёл создаваться дальше.

Не особо удобно, бум пробовать и смотреть каково в деле. В принципе, мне внутренняя вебка в реальном времени нужна два раза за ночь: визуальный контроль открытия и визуальный контроль закрытия крыши. То есть, не особо оперативная задача и могу подождать 1...59 секунд до запуска потока. В общем, надо попробовать в деле, понять сильно ли мешает.

Веб-интерфейс, при открытии страницы камеры, создаёт файл /tmp/webcam.active.НОМЕР
Скрипт получения очередного кадра с камеры в архив проверяет на наличие этого файла и запускает mjpg_streamer с выбранной камеры в режиме http вещания.

/opt/etc/webcam.start.sh:
PHP код:

#/bin/sh

if [ -"/tmp/webcam.live.0" ]; then
        mjpg_streamer 
--"input_uvc.so -f 2 -d /dev/video0 -q 50 -y -r CGA" -"output_http.so -p 9990"
else
        if [ -
"/tmp/webcam.live.1" ]; then
                mjpg_streamer 
--"input_uvc.so -f 2 -d /dev/video1 -q 50 -y -r CGA" -"output_http.so -p 9990"
        
else
                
mkdir /tmp/webcam
                killall mjpg_streamer
                mjpg_streamer 
-"input_uvc.so -f 2 -d /dev/$1 -y -q 80 -r CGA" -"output_file.so -f /tmp/webcam/ -d 500 -c /opt/etc/webcam.finish-$1.sh"
        
fi
fi 

Обновил исходники у себя на фтп, ссылка та же.

monstr 18.10.2011 12:38

Re: Роутер D-Link DIR320 / Asus WL500gpV2
 
Очередной раз хочу бросить роутер и перенести всё на какой-нить бу-бук, типа этого: http://www.avito.ru/items/moskva_nou...monit_32325157
Теперь мало памяти, приходится экономить...

память: 47%, процесс: php
память: 36%, процесс: /opt/sbin/thttpd -C /opt/etc/thttpd.co
память: 22%, процесс: mjpg_streamer -b -i input_uvc.so -f 1
память: 19%, процесс: mc -cd

Дядь Вов, можешь запустить top, там нажать шифт+M (сортировка по памяти) и глянуть, сколько ест lighthttpd? Хотя пхп всё равно будет много есть...

UPD: поставил перла, он меньше ест
26% perl


Часовой пояс GMT +4, время: 10:01.

Powered by vBulletin® Version 3.8.4 Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.