За основу взят проект http://linux.cpms.ru/?p=7774. В нем видеофайлы пишутся на удаленный сервер. Если сервер по каким-либо причинам недоступен, то, получается, файлы не запишутся. Скрипт постоянно проверяет доступность сервера. Я реализовал проект с небольшим изменением - видеофайлы пишутся на SD карту Raspberry Pi. В первом проекте они пишутся в каталог FTP сервера, файлы можно скачивать по локальной сети. Во втором проекте видеофайлы пишутся в расшаренный каталог SAMBA сервера, их можно просматривать с компьютеров локальной сети. Оба проекта имеют один недостаток - небольшой объем памяти SD карты. В статье описывается третий вариант - подключение к видеорегистратору на Raspberry Pi внешнего USB жесткого диска. Это снимет проблему нехватки памяти при большом объеме записываемых данных.
Самое главное - обеспечить жесткий диск достаточным питанием. У меня USB диск на 500 Gb питается через USB хаб с внешним блоком питания 5В 2А. Raspberry Pi 3 также питается от блока питания 5В 2А. Скорость обмена данными с жестким диском достаточно высока, поэтому подключите хаб и жесткий диск короткими кабелями длиной 30-50 см с ферритовыми кольцами (утолщение около одного из разъемов). Это снижает уровень помех и уменьшает потери сигнала. При выполнении этих двух условий жесткий диск должен надежно определяться и нормально работать. Можно использовать обычный кабель и ферритовое кольцо большого диаметра, обмотав сердечник одним-двумя витками кабеля. Я использовал кольцо диаметром 22 мм сечением 7х4 мм. На нем было намотано в три провода примерно 10 витков эмалированного провода диаметром 1 мм. Удалил обмотку и сделал один виток кабеля вокруг сердечника, закрепив узким скотчем.
Подключите жесткий диск к Raspberry Pi и проверьте, определился ли он системой. У меня на данный момент установлена система Raspbian версии 4.4.38-v7+. Дайте команду
sudo fdisk -l
В выводе команды отобразилось устройство /dev/sda1 объемом 465 Gb (жесткий диск 500 Гбайт). В выводе команды df -h показано, куда смонтировался жесткий диск (/media/pi/9688A60688A5E4C9).
Подключите Pi камеру к Raspberry Pi. Подключите датчик движения (PIR sensor) согласно рисунку
Скачать скрипты
Отредактируйте скачанные скрипты в соответствии с вашими реалиями - замените пути к жесткому диску и идентификатор диска на ваши. Всё это удобно делать с помощью Midnight Commander - файлового менеджера для Linux (аналог Total Commander). Установить его можно командой sudo apt-get install mc.
Midnight Commander имеет встроенный текстовый редактор mcedit. Вызов редактора - mcedit <имя файла>.
В скрипте wideo-service.py указана длительность записи видео 20000 мс (20 секунд). Можете изменить на свое усмотрение. На жестком диске создайте каталог Videos для записи видеофайлов.
Скрипт inspect.sh удаляет старые видеофайлы, сохраняются только файлы текущего дня и двух предыдущих дней. Проверка на удаление производится каждый час.
Как видно на фото в начале статьи, на Raspberry Pi отключены монитор, клавиатура и мышь. Связь с роутером по Wi-Fi. Управляется компьютер удаленно по ssh. Как настроить ssh, описано в статье Как подключиться к Raspberry Pi из Windows по SSH.
Я подключаюсь к Raspberry Pi с компьютера Linux Mint. В Linux работать по ssh удобнее, можно использовать команду scp для копирования файлов с/на Raspberry Pi 3.
Перейдите в каталог, в котором сохранили файлы скриптов. Скопируйте скрипты в каталог /usr/local/sbin командой
sudo cp inspect.sh wideo-service.py /usr/local/sbin
Для того, чтобы скрипты мог запускать пользователь pi, измените владельца и права доступа командами
sudo chown -R pi:pi /usr/local/sbin
sudo chmod -R 755 /usr/local/sbin
Скрипты должны запускаться при загрузке системы, поэтому команды запуска надо прописать в файл rc.local. Добавьте их перед строкой exit 0.
sudo nano /etc/rc.local
Отредактируйте crontab, чтобы inspect.sh запускался каждый час и удалял старые видеофайлы, если таковые будут.
crontab -e
и добавьте строку
0 * * * * /usr/local/sbin/inspect.sh
и сохраните файл.
Проверьте датчик движения. Выполните команды
cd /usr/local/sbin
./wideo-service.py
Зайдите в зону действия датчика. Вы увидите сообщение Motion detected! (Движение обнаружено!)
Перезагрузите систему. Если всё сделано правильно, то при срабатывании датчика в каталог Videos на жестком диске будут записываться файлы в формате .h264.
Теперь установите SAMBA сервер. Это позволит просматривать видеофайлы удаленно с компьютеров локальной сети.
sudo apt-get install –y samba samba-common-bin
Отредактируйте smb.conf командой
sudo nano /etc/samba/smb.conf
В строке workgroup пропишите имя вашей группы в сети:
workgroup = WORKGROUP
У меня имя группы WORKGROUP, поэтому оставил по умолчанию.
В раздел [homes] вставьте следующее:
security = user
В строке read only замените yes на no:
read only = no
В конец файла добавьте строки:
[USB_HDD]
comment = Shared media files
path = /media/pi/9688A60688A5E4C9/Videos
read only = no
valid users = pi
admin users = pi
Сохраните изменения.
Создайте SAMBA пользователя pi
sudo smbpasswd -a pi
Придумайте и два раза введите пароль.
Перезагрузите SAMBA командой
sudo /etc/init.d/samba restart
Пробуем подключиться с Windows-компьютера к расшаренному ресурсу на Raspberry Pi. На рабочем столе Windows щелкаем правой кнопкой мыши по значку Сеть и в меню выберем Подключить сетевой диск...
В новом окне выберите букву диска и в строке Папка: впечатайте \\raspberrypi\usb_hdd и нажмите Готово. Можно по-другому: щелкните по кнопке Обзор и выберите расшаренный ресурс USB_HDD.
В следующем окне на запрос введите логин и SAMBA пароль пользователя pi.
Если сеть работает, то в открывшемся окне увидите содержимое каталога Videos жесткого диска на Raspberry Pi.
Просмотреть файлы можно медиаплеером VLC. В окне открытия файлов выберите Все файлы,чтобы увидеть файлы в формате h264. По умолчанию они не показываются.
Если что-то не работает, то проверьте владельцев и права доступа к файлам.
Чтобы жесткий диск автоматически монтировался при загрузке системы, пропишите его в файле /etc/fstab. Параметры монтирования можно посмотреть командой mount:
Я использовал параметры по умолчанию (defaults) и указал файловую систему жесткого диска (ntfs).
Если при работе с компьютером, Pi камерой, Wi-Fi возникают проблемы, то попробуйте увеличить ток на портах USB. По умолчению максимальный ток потребления на всех USB портах составляет 600mA. Вы можете увеличить ток на всех четырех портах до 1.2 А, добавив параметр max_usb_current = 1 в файл /boot/config.txt. Естественно, блок питания компьютера должен обеспечивать возросшее потребление тока.
После корректировки файла не забудьте перезагрузить Raspberry Pi.
P.S. Замечание по работе сети c Windows-компьютерами. Если вы используете Windows 7 или новее и загружаете систему без логина и пароля, то подключиться к этому компьютеру по сети не получится. Только когда загрузите Windows 7 под пользователем с логином и паролем, подключение станет возможным. Такая вот защита. В Windows XP можно подключаться без логина и пароля.
Использованные ресурсы
http://linux.cpms.ru/?p=7774
zgo.narod.ru/publ/pi_kamera_pir_sensor_i_ftp_server/1-1-0-54
http://zgo.narod.ru/publ/videoregistrator_pi_kamera_pir_sensor_i_fajlovyj_server/1-1-0-56
Rick Golden, Raspberry Pi Networking Cookbook Second Edition, Packt Publishing, 2016, - p. 97-143
http://ur7hbq.blogspot.ru/2015/06/usb.html
|