Всем мозгодрузьям, здравствуйте! Сегодня даем новую жизнь неиспользуемым гаджетам и аксессуарам ПК, а именно создаем своими руками комплект видеонаблюдения.
http://www.youtube.com/watch?feature=player_embedded&v=b55FhgmeBnc
Если ваши веб-камера, колонки для ПК, монитор, смартфон начали бесполезно пылиться в кладовой, то пора реанимировать их и сделать систему видеонаблюдения связанной с облаком, то есть с большим спектром «интернетовских» возможностей: IP-поток, хранение фото и видео в облаке, автоматические письма на электронную почту и т.п. И еще звуковое оповещение о движении и автоматическим включением при приближении объекта, то есть мозгоподелка полезная.
Шаг 1: Необходимые детали
• Смартфон (Raspberry Pi)
• Блок питания для смартфона
• Колонки для ПК
• ТВ-монитор с композитным входом и запитывающийся от блока питания
• RCA аудио/видео кабель с 3,5 мм штекерами
• веб-камера совместимая со смартфоном
• три переходника «мама-мама»
• 1-канальное реле 5V реле для микроконтроллера (PIC ARM AVR DSP)
Веб-камера через просверленное отверстие в стене непосредственно подключается к USB-порту смартфона, а для сокращения расходов вся самоделка подключается к локальной сети.
Шаг 2: Алгоритм действия
При срабатывании датчика движения мозгоподелка выполняет следующие действия:
• включается монитор
• подается звуковое оповещение
• отправляется сообщение со снимком на мой публичный IP
• отправляется сообщение с IP-потоком, который может быть воспроизведен с помощью приложения ( для iOS на AcePlayer
Хронология снимков и видео сохраняются в Gmail , а при изменении публичного IP система присылает письмо с обновленным IP.
Шаг 3: Настройки
Для начала создаем два Gmail аккаунта: один для jpeg файлов, второй для mpeg файлов. На смартфоне (RasPI) включаем доступ к графическому интерфейсу:
$ sudo raspi-config
и включаем опцию, задаем монитор как основной графический интерфейс, перезагружаем смартфон.
Настраиваем отправку сообщений - загружаем tar файл:
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
Распаковываем:
$ tar -zxvf sendEmail-v1.56.tar.gz
Копируем исправленный патч:
$ sudo cp -a sendEmail-v1.56/sendEmail /usr/local/bin
Делаем его исполняемым:
$ chmod +x /usr/local/bin/sendEmail
Устанавливаем TLS поддержку для Gmail:
$ sudo apt-get install libnet-ssleay-perl libio-socket-ssl-perl
После установки меняем следующим образом:
$ sudo nano /usr/share/perl5/IO/Socket/SSL.pm
С помощью Ctrl-W находим строку со следующим фрагментом:
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
и заменяем его на:
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i
сохраняем и выходим.
Пробуем отправить письмо с командной строкой:
$ sendEmail -f YOUREMAIL1@gmail.com -t YOUREMAIL2@gmail.com -u "OBJECT" -m "MESSAGE TEXT" -xu YOUREMAIL1@gmail.com -xp YOURPASSWORD -o tls=yes -s smtp.gmail.com:587
Устанавливаем браузер Chromium:
$ sudo apt-get install chromium-browser
Переводим автозапуск браузера в полноэкранный режим:
$ sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
Если у вас нет NOOBS, то:
sudo nano /etc/xdg/lxsession/LXDE/autostart
#@lxpanel --profile LXDE
#@pcmanfm --desktop --profile LXDE
#@xscreensaver -no-splash
# auto run the browser
@xset s off@xset -dpms
@xset s noblank
@chromium --kiosk --enable-kiosk-mode --enabled --touch-events --touch-events-ui --disable-ipv6 --allow-file-access-from-files --disable-java --disable-restore-session-state --disable-sync --disable-translate --disk-cache-size=1 --media-cache-size=1 http://localhost:YOURWEBCAMPORT
Перезагружаемся.
Установка MP3 плеера:
$ sudo apt-get install mpg123
Установка детектора движения:
$ sudo apt-get install motion
Изменяем файл конфигурации:
$ sudo nano /etc/motion/motion.conf
Я изменил следующие параметры:
#start as
daemon
daemon on
# Rotate image
rotate 90 (my webcam is 270° rotated)
# Image width
width 640 (check your webcam resolution)
# Image height
height 480 (check your webcam resolution)
# Maximum number of frames
framerate 2
# Threshold
threshold 15000
# Picture frames must contain motion
minimum_motion_frames 2
# Specifies the number of pre-captured
pre_capture 5
# Codec to used by ffmpeg for the video compression
ffmpeg_video_codec mpeg4
# The mini-http server listens
webcam_port 8080 (selected your preferred port)
# TCP/IP port for the http server to listen on
control_port 8081 (select different port by webcam port)
# Restrict webcam connections to localhost only
webcam_localhost off
# Command to be executed when an event starts.
on_event_start mpg123 -m --gain 70 /home/pi/testsound.mp3 ;
# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
on_picture_save sendEmail -f YOUREMAIL1@gmail.com -t YOUREMAIL1@gmail.com -u "Motion detected!" -m "http://"`curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`":8080" -xu YOUREMAIL1@gmail.com -xp YOURGMAILPSSWD -o tls=yes -s smtp.gmail.com:587 -a %f
# Command to be executed when a movie file (.mpg|.avi) is created.
on_movie_start sendEmail -f YOUREMAIL2@gmail.com -t YOUREMAIL2@gmail.com -u "Motion timelapse" -m "http://"`curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`":8080" -xu YOUREMAIL2@gmail.com -xp YOURGMAILPSSWD -o tls=yes -s smtp.gmail.com:587 -a %f
Финальные настройки – добавляем следующие строки в rc. файл:
$ sudo nano /etc/rc.local
Перед выходом добавляем:
sudo mkdir /var/run/motion
sudo chmod a+rwxt /var/run/motion
sudo motion
sleep 60
Сохраняем и выходим.
Создаем скрипт который проверяет изменение публичного IP:
$ nano ipchangecheck.sh
В скрипт добавляем:
#!/bin/bash
IPFILE=~/ipaddress
CURRENT_IP=$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')
if [ -f $IPFILE ]; then
KNOWN_IP=$(cat $IPFILE)
else
KNOWN_IP=
fi
if [ "$CURRENT_IP" != "$KNOWN_IP" ]; then
echo $CURRENT_IP > $IPFILE
sendEmail -f YOUREMAIL1@gmail.com -t YOUREMAIL1@gmail.com -u "your IP is changed!" -m $CURRENT_IP -xu YOUREMAIL1@gmail.com -xp YOURGMAILPASSWORD -o tls=yes -s smtp.gmail.com
Сохраняем и выходим.
$ chmod 700 ipchangecheck.sh
Если хотите проводить проверку каждые пять минут:
$ sudo nano /etc/crontab
*/5 * * * * pi bash /home/pi/ipchangecheck.sh
Сохраняем и выходим.
Шаг 4: ТВ-монитор
Меняем конфигурацию видеофайла (с помощью NOOBS Configuration )
$ sudo nano /boot/config.txt
# NOOBS Auto-generated Settings: (i'm using PAL composite monitor 270° rotated)
#hdmi_force_hotplug=1
#config_hdmi_boost=4
sdtv_mode=2
sdtv_aspect=2
overscan_left=24
overscan_right=24
overscan_top=16
overscan_bottom=40
disable_overscan=0
display_rotate=1
Сохраняем, выходим и перезагружаем.
Шаг 5: Реле
Для автоматического включения монитора мозгоподелки проверяем доступна ли эта опция на вашем мониторе. То есть подключаем питание, затем отключаем питание, повторно подаем питание и смотрим работает ли он, если да то продолжаем. Затем подсоединяем монитор по представленной схеме.
Распиновка реле:
• Vcc к пин 1 3.3 вольт
• In1 к пин 15 GPIO 22
• Пин GND к GND (земля) 39
Так же на реле подаем 12В.
Кабелем соединяем COM порт и NC порт на реле, затем на терминале:
$ sudo nano /etc/rc.local
Добавляем строки перед «exit 0»:
sudo echo "22" > /sys/class/gpio/export
sudo echo "out" > /sys/class/gpio/gpio22/direction
sudo echo "1" > /sys/class/gpio/gpio22/value
Сохраняем и выходим.
В домашней директории создаем следующий скрипт:
$ nano monitor.sh
И добавляем:
#!/bin/bash
sudo echo "0" > /sys/class/gpio/gpio22/value
sleep 40
sudo echo "1" > /sys/class/gpio/gpio22/value
Сохраняем и выходим.
С помощью этого мозгоскрипта после изменения конфигурации движения, как показано ниже, при срабатывании датчика движения включается монитор на 40 сек., потом он выключается. Вы можете менять значение «sleep» по вашему усмотрению.
Изменение конфигурации движения:
$ sudo nano /etc/motion/motion.conf
И строки:
# Command to be executed when an event starts.
on_event_start mpg123 -m --gain 30 /home/pi/testsound.mp3 ;
Меняет вот так:
on_event_start bash /home/pi/monitor.sh & mpg123 -m --gain 70 /home/pi/testsound.mp3 ;
Изменяем «--gain» до большего значения.
Сохраняемся и выходим.
Шаг 6: Аудио
К смартфону я подключил компьютерные колонки, которые когда я дома оповещают меня если кто-то пришел звуком «счетчик Гейгера», и отпугивают непрошенных гостей «лаем неаполитанского мастифа» когда меня дома нет.
Свои звуковые дорожки сохраните в домашней директории под мозгоименем
testsound.mp3
Шаг 7: Браузер
Видео с вашей камеры-самоделки можно просматривать в браузере просто введя URL-адрес:
http://RASPBERRYPI_IP_ADDRESS:YOURWEBCAMPORT
Для просмотра на планшете нужно сделать те же действия.
В случае если вы хотите просмотреть видеопоток не через вашу локальную сеть, то тогда необходимо открыть порт на вашем модеме. Как точно это делается я сказать не могу, так как это зависит от модификации вашего модема, все индивидуально. Но открыв порт на вашем модеме поток можно просматривать через браузер введя:
http://YOUR_PUBLIC_IP:YOURWEBCAMPORT
Мой модем поддерживает DNS сервис NOIP, и как только я его зарегистрировал, то сразу же получил возможность доступа к моей камере-поделке посредством интернета, просто набрав доменное имя, которое дается при регистрации NOIP:
http://YOURNOIPDOMAIN:YOURWEBCAMPORT
Шаг 8: Домофон на Андроид
Открытие порта модема позволяет просматривать поток с камеры посредством ваших смартфонов. Для этой функции на iOS я могу использовать два приложений, доступных в App Store бесплатно.
Первое это Cu4GE, настройки которого представлены на первом фото, и второе - Monitor Bee, настройки которого на втором фото. А для Андроид есть простое приложение Mjpeviewer. Во всех приложениях нужно всего лишь ввести URL:PORT и просмотр будет доступен.
Шаг 9: И в заключение
Выполняя шаги этого мозгоруководства думаю вы убедились, что все не так уж и сложно.
А теперь успехов в ваших самоделках!
( Специально для МозгоЧинов #Old-PC-Accessories-Raspberry-PI-DoorCam-surveillan