Приветствую! В данном обзоре хочу рассказать о Raspberry Pi 3 и его применении в качестве домашнего видео наблюдения в тамбуре (видеоглазок). На рынке существует множество решений от китайских производителей, однако их качество и функционал меня не устраивал. Есть решения, которые мне понравились, например
это или
это, но цены от 200 до 240 евро — это очень дорого! Поэтому принял решение сделать своё устройство. В обзоре концепт, который будет дорабатываться.
Итак, реализацию видео наблюдения решил делать на Raspberry по следующим причинам:
Во-первых, за небольшую цену получаем мини-компьютер с большими функциональными возможностями (как программными, так и аппаратными) в отличие от стационарных ip камер (видеоглазков);
Во-вторых, есть возможность подключить видеокамеру посредством интерфейса CSI (Camera Serial Interface), который минимально задействует процессор. На сегодняшний день существует два варианта таких камер (с разрешением 5 и 8Мп);
В-третьих, много источников информации в случае появления проблем и вопросов;
Все необходимое заказал в магазине Gearbest.
1.
Raspberry Pi Model 3
2.
Raspberry Pi Camera Module
3.
Micro SD 32GB Samsung Class 10
4. На всякий случай набор
радиаторов, много было страшилок о перегреве третьей малины.
Подробно описывать Raspberry Pi 3 я не буду, это можно сделать, прочитав
этот обзор. Приведу лишь основные характеристики:
Процессор: 64-битный 4-ядерный ARM Cortex-A53 с тактовой частотой 1,2 ГГц на однокристальном чипе Broadcom BCM2837;
оперативная память: 1ГБ LPDDR2 SDRAM;
цифровой видеовыход: HDMI;
композитный выход: 3,5 мм (4 pin);
USB порты: USB 2.0×4;
сеть: WiFi 802.11n, 10/100 Мб RJ45 Ethernet;
Bluetooth: Bluetooth 4.1, Bluetooth Low Energy;
разъем дисплея: Display Serial Interface (DSI);
разъем видеокамеры: MIPI Camera Serial Interface (CSI-2);
карта памяти: MicroSD;
порты ввода-вывода: 40;
габариты: 85x56x17 мм.
Видеокамеру решил использовать первого поколения, для тамбурного наблюдения этого более чем достаточно.
Характеристики:
-Матрица 5МП Omnivision 5647 с фиксированным фокусом;
-Максимальное разрешение фотоснимка 2592х1944 пикселей;
-Разрешение видеосъемки: 1080p (30 кадров в секунду), 720p (60 кадров в секунду), 640x480p (60/90 кадров в секунду);
Упаковка, плата, комментарии
Модуль камеры подключается к распберри ленточным 15ти жильным кабелем.
Долго думал, что выбрать в качестве программного обеспечения для моих задач. Есть множество программ пакетов типа GStreamer, Motion, mjpg-streamer и прочие. Но в каждой из них есть существенные недостатки. Понимаю, что знатоки Linux могут собрать все нужные пакеты воедино, написать GUI и оптимизировать работу. Однако моих знаний в Linux будет маловато. Значит, для таких, как я, нужно решение, работающее «из коробки». И такая программа была найдена!!! Называется
MotionEye OS. Это даже не отдельная программа, а линуксовый дистрибутив со своим графическим интерфейсом.
Возможности MotionEye OS:
— Работа с несколькими камерами
— Синхронизация времени по интернету
— Поддержка Ethernet и Wi-Fi
— Запись лог журналов событий
— Настройка режимов работы камеры (яркость, контрастность, насыщенность, авто баланс яркости, скорость кадров в секунду, вращение и разрешение камеры). Есть возможность задать собственные нестандартные настройки.
— Сохранение скриншотов и видео по сценариям. С возможностью сохранения на sd карту, сетевую шару или облако (поддерживается Google Drive и DropBox).
— По детектору движения отправка Get/Post запросов, выполнения собственных скриптов, отправка уведомления на e-mail
— Наложение любого текста на изображение
— Одновременная трансляция видео в интернет с возможностью ограничения доступа и собственными настройками разрешения и fps камеры.
— Тонкая настройка детектора движения
— Работа по расписанию.
— Данный дистрибутив абсолютно бесплатный
Так выглядит основное окно программы
Основные окна настроек MotionEye
Пример изображения с камеры, разрешением 1280х1024
Итак, MotionEye OS может быть установлена на: Banana PI, Cubietruck, Odroid C1 (and C1+), Odroid XU4, Raspberry PI (A, B, A+, B+, Compute Module and Zero models), Raspberry PI 2, Raspberry PI 3.
Существует два способа установки.
Способ первый — установка «голого» образа.
Скачать дистрибутив с
github. Образ устанавливается на Micro sd карту посредством
Win32DiskImager. Первый запуск дистрибутива должен выполняться с подключенным Ethernet кабелем!!! Логин admin без пароля. Админка будет доступна в браузере по ip, полученным малиной.
Данный способ быстрый, но будет установлена только MotionEye OS. А это не есть хорошо, т.к. сильно урезаем функционал Raspberry.
Способ второй — установка на Raspbian.
1. Установить Raspbian (как это сделать, думаю, объяснять не надо).
2. Проверить и установить обновления
sudo apt-get update
sudo apt-get upgrade
3. Установить кодек ffmpeg
sudo wget https://github.com/ccrisan/motioneye/wiki/precompiled/ffmpeg_2.8.3.git325b593-1_armhf.deb
sudo dpkg -i ffmpeg_2.8.3.git325b593-1_armhf.deb
4. Если в системе есть старые кодеки, их надо удалить и поставить новые
sudo apt-get remove libavcodec-extra-56 libavformat56 libavresample2 libavutil54
sudo apt-get install libavutil54 libavformat56 libswscale3
5. Установить motion
sudo apt-get install motion
sudo wget https://github.com/ccrisan/motioneye/wiki/precompiled/motion-mrdave-raspbian -O /usr/local/bin/motion
sudo chmod +x /usr/local/bin/motion
6. Установить зависимые пакеты
sudo apt-get install python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev
7. Установить motioneye
sudo pip install motioneye
8. Сконфигурировать директории
sudo mkdir -p /etc/motioneye
sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf
sudo mkdir -p /var/lib/motioneye
9. Запускаем motionEye и добавляем его в автозагрузку
sudo cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
sudo systemctl daemon-reload
sudo systemctl enable motioneye
sudo systemctl start motioneye
10. Для обновления и получения новой версии motionEye
sudo pip install motioneye --upgrade
sudo systemctl restart motioneye
11. Для поддержки работы модуля камеры нужно добавить запись bcm2835_v4l2 в /etc/modules
sudo nano /etc/module
На этом установка закончена. Доступ к админке можно получить в браузере, указав ip малины и порт 8765. Теперь у нас есть полноценный raspbian и работающий motioneye.
Далее добавим полезную функцию, такую как Push уведомление на телефон в случае обнаружения движения. Это может быть полезно, если кто-то топчется перед вашей дверью, а вас нет дома.
Первое, что надо сделать, — это перейти на сайт
pushover.net. Там скачать приложение на Android или iOS. Пройти регистрацию. Затем зарегистрировать приложение «Register an Application». Затем заполнить поля «Name», «Description», во вкладке «Type» выбрать «Application». При желании можно добавить иконку. После подтверждения будет добавлено приложение с уникальным API Token/Key. На главное странице указан ваш User Key.
Следующим этапом нам надо написать скрипт на Python.
#!/usr/bin/python
import httplib, urllib
conn = httplib.HTTPSConnection("api.pushover.net:443")
conn.request("POST", "/1/messages.json",
urllib.urlencode({
"token": "am25zkm2p3msdgtmohaho9fraiieb", # Insert app token here
"user": "umsxy2qh9ub14rbkc59711fzca5nfx", # Insert user token here
"html": "1", # 1 for HTML, 0 to disable
"title": "Tambur web camera", # Title of the message
"message": "<b>Motion detect !!</b>", # Content of the message
"url": "http://192.168.1.33:8081", # Link to be included in message
"url_title": "View live stream", # Text for the link
"sound": "siren", # Define the sound played
}), { "Content-type": "application/x-www-form-urlencoded" })
conn.getresponse()
Не пытайтесь мне ничего отправлять, ключи я изменил ))
Далее создадим файл pushover.py для этого
touch ./pushover.py
Открыть и добавить приведенный выше текст скрипта. Сохраняем. Закрываем файл.
sudo nano pushover.py
Назначим файлу права
sudo chmod 777 pushover.py
Теперь наш скрипт готов к запуску. Осталось его добавить в меню «Motion Notifications» в поле «Run a command» /home/pi/pushover.py
Немного тестов.
Для тестировании использовал Ethernet подключение. На картинках виден максимальный fps в обычном режиме и при обнаружении движения.
Загрузка процессора составляет 20-30%. Температура в работе 45 — 48 градусов, процессор дополнительного охлаждения не требует.
Заключение.
Безусловно, есть небольшие задержки при отображении картинки. Оптимальным разрешением считаю 1024 х 768 и ниже. В целом результатами работы камеры я остался доволен. В планах добавить возможность записи звука с микрофона при обнаружении движения.
Обзор получился с уклоном в программную часть, но я долго собирал информацию по данному вопросу и захотел об этом рассказать. Прошу прощения за возможные ошибки, я с линуксоподобными системами пока на ВЫ )) Дополнения и замечания очень приветствую! Также готов ответить на вопросы.
p.s. Сейчас цена в данном магазине на Raspberry pi 3 составляет $35.99
Типа я передумал и стер?
А по поводу малины я тоже однажды взял, валяется теперь и в отличии от х86 плат она постоянно просит каких то допилингов
Сейчас у меня стоит openmediavault, радует возможность использовать любые инструменты из Linux.
П. С. Жду версию с поддержкой 4к и hevc 10-12bit, вот это будет хитом)
Что интересно, на одной из камер, которая вполне подходит для наружного применения, на этом складе внутри под потолком развилась плесень.
надо просто с фантазией ко всему подходить.
А так — интересно и познавательно.Обзор понравился.
man ssh, если что.
Все что вам нужно: freedns.afraid.com секция DynDNS, домен или поддомен (можно найти на том же freedns или зарегить свой бесплатный на dot.tk) и пробросить порт на роутере где собственно и живет NAT. Далее все ходит через ваш домен/поддомен.
Так то корректная работа NAT большого количества адресов порождает не хилую такую нагрузку.
Из всех адекватных провайдеров что я встречал везде раздавали белый IP. «Деревня Пупкино LAN» естественно к таким не относится.
ssh, конечно, рулит
ДРЕВНИЙ комп «запустил» ракету в космос…
А почему бы не подключить 4 USB-камеры…
А это видеонаблюдение извращение.
;-)
Когда денег много, а здравого смысла избытка нет, можно еще и не такое замутить.
Человек реализовал для себя конструктор в готовый проект, его это устраивает, хотел бы он купить из коробки, то наверняка сделал бы это. Нужно развиваться и радоваться каждой своей маленькой победе!!!
Прежде чем кому-то писать гадости, спроси себя, а я так могу или я могу сделать лучше???
Хорошее решение для себя!!! У меня, к сожалению и на такое написание кода мозгов не хватит!!!
Теперь придётся дожидаться 3 и продавать 2, которую я не так давно купил… Эх!
А малинку использовать для более интересных задач. ;)
по камере, её функционал сильно отличается от рядовой юсб для скайп звонков и тп? можно было бы сэкономить как минимум долларов 10-15, имхо.
У вас там:
…
«token»: «am25zkm2p3msdgtmohaho9fraiieb», # Insert app token here
«user»: «umsxy2qh9ub14rbkc59711fzca5nfx», # Insert user token here
…
Я на Pushover-е зарегистрировался, установил приложения на Андроид и Десктоп. Но мне прислали key только для «user». А что вписывать в поле «token» ??
Доработал сохранением видео и фото файлов на яндекс-диск:
Т.к. у нас все данные будут храниться в облаке, настроим работу с удаленной файловой системой по WebDAV:
sudo apt-get install davfs2
sudo mkdir /mnt/dav
sudo mount -t davfs webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Для того, чтобы не вводить каждый раз имя пользователя и пароль, нужно добавить их в файл
/etc/davfs2/secrets
/mnt/dav user password
Добавим в /etc/rc.local команды для монтирования WebDAV и запуска скрипта для трансляции в сеть:
mount -t davfs webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
В настройках работы камеры: 192.168.1.100:8765/ в разделе — Root Directory: прописал путь сохранения данных — /mnt/dav/MotionEye/Camera1
проверка работы и связи:
df -h /mnt/dav
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
webdav.yandex.ru 10G 116M 9,9G 2% /mnt/dav
Но так же не смог настроить работу скрипта ./pushover.py
Вставил код в поле — «token»:
Вставил свой логин в поле — «user»
Прописал свой ip — 192.168.1.100:8081
но увы…
С сайта pushover.net/ сообщение приходят на мой iOS
Еще просьба с записью звука совместно с видео! Очень хочу добавить, но пока не получается… Спасибо :)
Может пригодиться кому…
Сделал отсылку сообщений по датчику движения себе на мобильный через прогу WhatsApp, которая стоит на моём мобильном.
Вот информация по настройке: whatsmate.github.io/2016-02-16-send-whatsapp-message-shell-script/ — (пожертвовал 5$)
В скрипте нужно поменять только строку №8 на свой номер мобильного, а с мобильного отослать на номер пришедший на почту после пожертвования сообщение любое.
Всё работает.
В меню «Motion Notifications» в поле «Run a command» /home/pi/send-whatsapp.sh
Перенастроил сохранение по данной ссылке: habrahabr.ru/sandbox/70446/?mobile=no?mobile=no
Теперь после перезагрузки все работает.
Выполнил все по инструкции написаной выше.(Систему обновил 2016_10_18)Возникла проблема.
Захожу по IP:8765, вижу приглашение в вести USER и PASS. А вот где их взять я не знаю. Перепробовал все.
Все настройки по умолчанию, ничего не менял.
Что и где изменить, дабы получить доступ к видео.
ЗЫ: Пытаюсь получить доступ по локальной сети.
PASSWORD: ни чего не нужно — пусто должно быть
LOGIN — жми
вчера случайно в каком-то иностранном видео нашел.
Теперь другую проблему решить не могу: MotionEye не видит изображение с камеры.
Прописал камеру «sudo modprobe bcm2835-v4l2»?
устройство /dev/video0 в системе появилось, картинку по команде «raspistill-d», камера работает.
но программа «MotionEye» изображения с нее не видит.
Подскажите куда копать.
было: sudo nano /etc/module
стало: sudo nano /etc/modules
:)
Вопрос: хочу писать недельный (на дачу по выходным) архив на usb-диск (порядка 500Гб).Вопрос: как увидеть usb-диск в MotioneyeOS? И чтобы после перезагрузки Raspberry usb-диск восстанавливался.
P.S.Кстати чем не вариант экономпроекта дачного ВН (с постепенным наращиванием), отсылать видео, например охраннику садоводства.