Приветствую всех, кто каким-то чудом нашел этот блог. Формат данного блога свободный и в нем я стараюсь делиться различными полезностями, размышлениями о различных событиях, своим творчеством.

Установка системы видеонаблюдения motionEye на платы Orange Pi и не только

motionEye установка и настройка

“MADRID DIVERSO” by Daquella manera is licensed under CC BY 2.0, modified by SEVA77

В этой статье хочу поделиться опытом установки системы видеонаблюдения motionEye не только на одноплатный мини-ПК Orange Pi, но и на любые другие подобные платы да и вообще на любой ПК в принципе. Полезно будет тем, кто хочет сделать весьма дешевое домашнее видеонаблюдение.

Статья может показаться огромной, однако должен вас заверить, что не все разделы вам могут пригодиться (например раздел с альтернативной настройкой motionEye). Соответственно для выбора нужного вам раздела можете воспользоваться навигацией по статье ниже.

Навигация по статье

Предыстория

Необходимость в данной системе у меня появилось после жалоб моей бабушки о том, что пока ее нет дома, соседи каким-то образом пробираются в ее дом и крадут всякое. На моей памяти это продолжается на протяжении нескольких лет, но в этот раз речь зашла об установке видеокамер.

Связавшись с родственниками я предложил от себя заказать на алике пару ip камер с wifi под управлением системы видеонаблюдения на моем старом, тогда еще недавно восстановленном ноутбуке. Только вот в надежности этого ноутбука были небольшие сомнения…

В то время мне были очень интересны различные проекты на различных одноплатниках Raspberry Pi и ему подобных и уже тогда, помню, заказал для себя с алика три различные платы: Raspberry Pi Zero, Orange Pi PC и Orange Pi Zero LTS. В приоритете было беспроводное соединение камер с платой, чтоб была возможность спрятать эту плату от кого-либо в принципе, а так как встроенный wifi был только у последней платы и мое окончательное предложение от себя - попробовать сделать видеонаблюдение на этой плате, оставив остальные варианты (ноутбук или даже просто карта памяти в камере) запасными.

Правда в последующем, по своей неопытности, я все же после тестирования этой системы на плате сделал эту же систему видеонаблюдения в ноутбуке. Две камеры (USB камера + ip (wifi) камера) полностью нагрузили процессор платы Orange Pi Zero LTS и видео записывалось с частотой 1 кадр/сек. Однако позже выяснилось, что в системе по умолчанию была включена настройка, которая кодировала и без того сжатый видеопоток в указанный формат, что очень сильно грузило процессор. IP камеры передают уже сформированный видеопоток, который уже можно записать напрямую без дополнительной обработки со стороны самой системы видеонаблюдения и таким образом, нагрузка на формирование видео полностью на самой камере, а не на мини-ПК (плате) или ПК.

И именно в связи с тем, что я по ошибке так успел разочароваться в своей Orange Pi Zero, заменив его моим старым ноутбуком, я выпускаю универсальную инструкцию установки системы видеонаблюдения не только для платы мини-ПК, но и для любого ПК, ноутбука. Для записи с нескольких камер плату рекомендую приобретать мощнее моей Orange Pi Zero LTS.

Я обязательно напишу все нюансы различных вариантов настроек самой системы motionEye после добавления в систему камер в следующей статье, а пока что пройдемся по установке и базовой настройке конфигураций этой системы.

Список возможных комплектующих и необходимого ПО

Прежде всего это сама плата либо ПК, ноутбук. Разнообразий плат Raspberry pi хватает, но их аналоги Orange Pi с такой же производительностью обойдутся вам в 2 раза дешевле. Как по мне лучше купить Orange Pi Zero Plus либо Orange Pi Zero 2. Если все же решили как я, покупайте именно Orange Pi Zero LTS (по сравнению с Orange Pi Zero просто улучшен wifi). По моим оценкам ее должно хватить на две wifi камеры. На алике мне она обошлась примерно в $19.6.

платы orange pi

"Welcome in Orange Pi in Shenzhen" by Stratageme.com is licensed under CC BY-NC-SA 2.0

Если не хотите плату, а ноутбук, то подойдет почти любой дешевый или старый ноутбук и можно настроить все то же самое в нем. Единственное, что в качестве ОС ставьте полноценный Debian, а не Armbian, как в нашем случае. Ubuntu тоже сгодится, как и множество некоторых других популярных Linux дистрибутивов. Процесс настройки для Armbian, Debian и, возможно, Ubuntu идентичен. В остальных случаях смотрите способ установки и настройки для вашего дистрибутива.

Блок питания для этой платы. Рекомендую брать на 2-3 А. Хватит 2-х ампер, если к плате будет подключен только жесткий диск, 2,5-3 А - если кроме жесткого диска хотите подключить какую-нибудь веб-камеру по USB или wifi адаптер, если в плате нет встроенного wifi. Где-то около $2-2,5.

блок питания

"#4818 Power supply for RS-232/485 converter (5V/1W)" by LambdaCZ is licensed under CC BY-NC-ND 2.0

Вообще, наличие wifi не обязательно, если вам не принципиально, как плата будет соединена с камерами. Любая из перечисленных плат имеет Ethernet порт, который проводом можно подключить к модему, как и сами камеры. Меня этот вариант не устраивал, т.к. очень не хотелось, чтобы вор, обнаружив камеры, по проводам нашел спрятанную плату и уничтожил улики. Поэтому основной упор я делаю на соединение камер с платой по wifi как через модем, так и на прямую.

ОБЯЗАТЕЛЬНО радиатор для процессора платы. На том же алике есть самоклеящиеся специально для Raspberry pi. Стоят где-то в районе доллара.

радиаторы для Raspberry Pi

Хорошая карта памяти для этой платы на 8-16 Гб, можно и больше, возможно и 4 Гб нормально будет, но не меньше. Карта памяти должна быть НЕ НИЖЕ 10-го КЛАССА! Класс карты памяти говорит о ее быстродействии, что в данном случае весьма важно для нас. Обойдется где-то в $2.5-4.

Скорее всего вам еще может понадобиться и USB адаптер для карт памяти. По стоимости примерно также, может даже дешевле.

usb адаптер для карт памяти

"Micro SD Card Reader" by LambdaCZ is licensed under CC BY-SA 2.0

Жесткий диск, куда будем записывать видео. 500Гб, 1000Гб (1Тб), 2Тб, тут уже на ваше усмотрение. По ценам ничего не скажу, по расчетам на длительность записи можете попробовать ориентироваться на данные с моих купольных wifi камер, когда запись 1 часа потока одной такой камеры разрешением 1280x720 занимает чуть ли не ровно 1 Гб.

Ах, да. И для платы берите именно ноутбучные диски. Если я правильно понял, для тех больших неноутбучных дисков, которые с форм-фактором 3.5, нужен особый переходник SATA - USB с дополнительным питанием 12 В. Если для вас это не проблема, то просто запомните, что для таких дисков нужен переходник с дополнительным питанием.

Переходник SATA - USB для подключения жесткого диска к плате. Стоит на алике в районе $2-3.

sata to usb переходник

Конвертер USB to UART (или uart to usb, кому как удобно) для подключения и настройки самой платы. Не обязателен, если у вас есть в доме модем с интернетом и вы можете на первое время (или на постоянку) через кабель подключить плату к модему. Стоит где-то доллар. Интернет в любом случае нужен и позже объясню, как подключать плату к точке доступа, если есть такая необходимость.

uart to usb адаплер

Камеры видеонаблюдения. Или одну камеру, в зависимости от ваших потребностей. Система умеет работать как с usb (т.е. веб) камерами, так и с ip камерами с доступом либо через ethernet, либо по wifi. AHD - мимо. Увидите надпись “аналоговая AHD” - пропускайте. Я же купил 2 ip камеры c wifi и + нашлась одна старенькая веб камера.

Ip камеры покупал достаточно дешевые, около $19-21, вот такие:

ip камера с алиэкспресс

Upd 06.07.2021:
Отмечу еще раз явно, что наша система видеонаблюдения поддерживает всякого рода USB(веб) камеры! Если вы хотите сделать видеонаблюдение, используя одну лишь веб камеру, либо несколько, либо не только ее, то да, такая возможность есть!

Необходимое ПО. Прежде всего это программа Putty для доступа к терминалу ОС самой платы. Для записи ОС на карту памяти подойдет любая из ЭТИХ программ, из них лучше всех себя показал Win32DiskImager. В дальнейшем для доступа к самой системе видеонаблюдения хватит любого браузера, можно будет заходить даже с телефона. А вот для доступа к файловой системе платы, когда нужно перебросить видеозаписи с платы на комп, телефон, может понадобиться программа, поддерживающая протокол SFTP. На компе с этим справляется FileZilla, на телефоне - Ghost Commander, который можно скачать отсюда:
https://f-droid.org/packages/com.ghostsq.commander/
но установить также нужно и дополнение (плагин) к нему:
https://f-droid.org/packages/com.ghostsq.commander.sftp/

В моем случае дополнительно понадобилось поднять на плате ftp сервер. Доступ к ftp, по сравнению с sftp, уже поддерживают даже некоторые стандартные программы в ОС Windows, например проводник в винде или даже тот же браузер (уже нет). Т.е. нет необходимости скачивать дополнительно тот же FileZilla. Еще лучше, когда есть Total Commander.

О том, как настроить ftp на плате или ноутбуке я обязательно напишу ближе к концу статьи.

Начало установки и настройка системы

Для тех, кто хочет сделать видеонаблюдение в ноутбуке или ПК я оставляю видео, которое является инструкцией по установке на него дистрибутива Debian:

Это видео когда-то очень давно мне помогло разобраться в нюансах установки Debian 9 и будет вполне актуально при установке Debian 10. После установки открывайте терминал и переходите сразу в раздел “Установка системы видеонаблюдения motionEye”.

Тем же, кто приобретал платы мини-ПК прежде всего следует ознакомиться со структурой самой платы. В моем случае она такая:

orange pi zero info

Здесь нам важно то, что на ней есть 1 (на самом деле 3) usb вывода, порт Ethernet, а также 3 отдельных штырька: RX, TX и GND (Debug serial port) специально для нашего необязательного USB to UART конвертера. Об этом чуть позже. Для начала нужно разобраться с разъемом для карты памяти, расположенном сзади платы.

Я имею ввиду записать образ на карту памяти и вставить ее в плату. Все необходимое для записи вместе с инструкцией есть ЗДЕСЬ. Мои рекомендации - Win32DiskImager или Rufus через dd.

В нашем случае для этой платы необходима ОС Armbian Buster. Скачать ее можно с официального сайта: https://www.armbian.com/download/. На странице будет список плат, которые поддерживают этот дистрибутив. Находите из этого списка ту плату, что приобрели вы и скачивайте образ.

Следующий текст, выделенный курсивом, читать необязательно.

У тех, кто уже в курсе всей этой каши, могут возникнуть вопросы по поводу того, почему я хочу использовать Armbian вместо motionEyeOS, где уже все есть. Не все. Настроить точку доступа или банальное подключение к другой точке доступа вместе с настройкой статического ip мне не удавалось. Следуя всем инструкциям ОС в своей первоначальной настройке подхватывала не все конфиги и я так и не смог это все поднять вручную. После многочисленных попыток наладить работу этого дистрибутива я в итоге от него отказался и перешел на Armbian.

Подключение компа к плате

… или “Учимся работать с одноплатными мини-ПК”.

После скачивания образа и успешной его записи на карту памяти вставляем эту карту памяти в плату. Перед тем, как вы включите плату, нужно позаботиться о том, чтобы ваш личный комп или ноутбук имел возможность взаимодействовать с этой платой, управлять ей. Есть 2 основных способа подключить комп к плате:

1. Через конвертер USB to UART. Только для тех, у кого есть специальные 3 отладочных штырька на плате (RX, TX и GND). Сам же конвертер представляет собой переходник, который, если кратко, имитирует COM порт, но в отличии от реального COM порта, уровень его сигналов около 5В. Очень популярная штука у ардуинщиков, DIY-щиков, да и вообще схемотехников цифровиков в целом.

Для некоторых переходников, основанных, например, на микросхемах PL2303, FT232R и др. понадобится дополнительно установить драйверы. Тут могу пожелать лишь удачи в поиске, ибо останавливаться на тех моментах, когда драйверы различают оригинальные микросхемы от неоригинальных и нужно как-то решать эту проблему, не особо хочется, ибо тянет на отдельную статью. Я использую конвертеры на основе PL2303, поэтому только по ним знаю ссылку на драйверы, которые не проверяют оригинальность микросхемы.

В нашем случае выводы этого переходника подключаются к 3-м отдельным штырькам на плате. Земля GND переходника подключается к штырьку GND, а вот RX переходника подключается к штырьку TX, а TX переходника - к штырьку RX. После того как вы подключили переходник к плате и к компу, нужно залезть в диспетчер устройств, чтобы узнать номер COM порта, что присвоила система. В нашем случае COM порту присвоен номер 9 (т.е. COM9).

com port в диспетчере устройств

Те, кто работает в линукс дистрибутиве, могут узнать наименование COM порта следующей командой:

ls /dev/ttyUSB*

Вам в ответ выдаст, например, /dev/ttyUSB0. Этот ответ (или один из них) в дальнейшем по инструкции нужно ввести вместо моего “COM9”.

Открываем программу Putty (скачать с оф. сайта). В открывшемся окне в “Connection type”(1) выбираем “Serial”(2), в строке “Serial line”(3) вводим “COM9”, в строке “Speed”(4) выставляем скорость 115200 и нажимаем “Open”(8). Чтобы не набирать все эти данные при повторном заходе в программу в строке “Saved Sessions”(5) называем нашу сессию, например, “orange com”, нажимаем “Save”(6) и теперь в списке сохраненных сессий можно кликнуть дважды по нашему “orange com”(7). Это все должно в итоге выглядеть так:

Putty serial

Если COM порт введен правильно, откроется черное, пока еще пустое окно. Когда вы включите плату, в окне появится много отладочного текста, связанного с первым запуском дистрибутива. Через какое-то время в окне запросят ввести новый пароль для администратора, но об этом позже (просто пролистайте второй пункт).

2. Через подключение платы к модему с помощью кабеля (по SSH). Тут уже гораздо проще. Через кабель подключайте плату к модему и включайте плату. После этого заходите в настройки модема и среди подключенных устройств находите свою плату по названию самой платы или номеру разъема, в который вы вставили кабель. В разных модемах настройки выглядят по-разному и обычно в списке подключенных устройств отображается еще и ip адрес этого устройства. Если такого нет, пробуйте искать в других списках.

Нам нужен именно ip адрес нашей платы. Плата может сразу не отобразится среди устройств, т.к. при первом включении она настраивает себя, нужно подождать 1-2 минуты. После этого можно подключаться к плате через программу Putty.

Допустим модем выдал нашей плате ip адрес 192.168.100.4. В открывшемся окне копируем этот адрес в строку “Host name (or IP addres)”(1) и нажимаем “Open”(5). Чтобы не набирать все эти данные при повторном заходе в программу в строке “Saved Sessions”(2) называем нашу сессию, например, “orange ssh”, нажимаем “Save”(3) и теперь в списке сохраненных сессий можно кликнуть дважды по нашему “orange ssh”(4). Это все должно в итоге выглядеть так:

Putty SSH

После этого откроется черное окно с запросом ввести логин. Об этом в следующем подразделе.

Начальная настройка дистрибутива Armbian

И вот вы дождались в черном окошке, а точнее в терминале запроса на ввод логина, пароля. По умолчанию в Armbian они следующие:

Логин: root
Пароль: 1234

В случае, если у вас соединение с платой через конвертер USB to UART, система логин и пароль запрашивать не будет, а сразу предложит изменить пароль администратора на свой.

новый пароль администратора Armbian

После того как ввели новый пароль администратора, система предлагает создать нового пользователя. Создаем его, введя предпочтительный нам логин, пароль и ваше имя, после чего перезапускаем систему, введя команду reboot. Если вы связаны с платой через ssh, соединение прервется и через какое-то время (примерно минуту) можно будет подключиться заново.

Далее вводим уже свой логин и пароль и следующее, что нужно сделать, установить часовой пояс. Так как я из Беларуси, для меня это будет Europe/Minsk. У вас может быть, например, Europe/Moscow. Соответственно вводим следующую команду:

sudo timedatectl set-timezone Europe/Minsk

Важно! В терминале Putty по умолчанию для того, чтоб скопировать текст достаточно его просто выделить. Вставить текст в терминал можно нажатием правой кнопки мыши. Все остальное как в обычном терминале Linux.

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

sudo date -s '2021-03-20 12:34:56'

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

Тем, у кого есть интернет в модеме, можете также подключиться к модему по wifi, чтоб можно было подключиться к плате без кабеля, что может быть весьма удобным при дальнейшем подключении жесткого диска, USB камеры (если нужно) к плате, но это все уже на ваше усмотрение. Единственное, что ip платы может поменяться и если в модеме можно узнать этот ip адрес, то с телефоном может быть посложнее…

Подключиться к точке доступа вашего модема или телефона в Armbian можно следующей командой:

nmtui-connect

Должно выскочить следующее окно:

Armbian nmtui connect

Выбирайте вашу точку доступа, подключайтесь к ней, после чего нужно обновить все программы в дистрибутиве, что уже имеются, до новых версий следующими командами:

sudo apt update && sudo apt full-upgrade -y

На всякий случай установите языковые пакеты

sudo apt install language-pack-ru language-pack-ru-base

и перезагрузитесь

sudo reboot

Система готова для дальнейшей установки и настройки системы видеонаблюдения.

Установка системы видеонаблюдения motionEye

И вот вы установили и настроили ОС Armbian на свою плату или Debian на ноутбук или ПК. Для установки motionEye на другие дистрибутивы также есть инструкции по ЭТОЙ ССЫЛКЕ.

Upd 09.04.2023:
Ниже приведена инструкция для Debian 10 (Armbian Buster), что, как оказалось, не подходит для Debian 11 (Armbian Bullseye). Для Debian 11 (Armbian Bullseye) повторяйте команды из инструкции ПО ЭТОЙ ССЫЛКЕ и переходите в СЛЕДУЮЩИЙ РАЗДЕЛ.

Все достаточно просто. Сначала устанавливаются некоторые базовые пакеты, которые необходимы для нормальной работы motionEye:

sudo apt-get install ffmpeg libmariadb3 libpq5 libmicrohttpd12

Затем устанавливаем основу motionEye - motion и некоторые питоновские штуки для установки и работы именно motionEye:

sudo apt-get install python-pip python-dev python-setuptools curl libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev ffmpeg motion v4l-utils

Установим motion посвежее. Прежде чем выполнять следующую команду:

sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.3.2/buster_motion_4.3.2-1_armhf.deb

обратите внимание на последнюю часть ссылки:
/release-4.3.2/buster_motion_4.3.2-1_armhf.deb

Наши платы или ПК могут отличаться по архитектуре (красным цветом) и названию выпуска дистрибутива (зеленым цветом). Да и версия в ссылке (синим цветом) на момент чтения данной статьи может считаться устаревшей.

По этому прежде всего узнаем последнюю версию по этой ссылке:
https://github.com/Motion-Project/motion/releases

Чтобы узнать название выпуска дистрибутива, выполните команду:

lsb_release -a

Чтобы узнать архитектуру вашей платы, выполните команду:

dpkg -print-architecture

У моего старого ноутбука, например, это amd64, а у платы orange pi zero - armhf.

Исходя из полученных данных изменяем ссылку в команде в указанных цветом местах и запускаем эту команду. Данная команда скачает нам файл buster_motion_4.3.2-1_armhf.deb .

Устанавливаем скачанный файл (не забыв поменять его название на свое) командой

sudo dpkg -i buster_motion_4.3.2-1_armhf.deb

И наконец устанавливаем сам motionEye командой:

sudo pip install motioneye

В консоли вы будете видеть, как скачиваются и устанавливаются три компонента, последний из которых python-pillow. Если вы видите, что этот пакет не скачался или не установился, установите его вручную командой

sudo apt-get install python-pillow

и повторите команду установки motionEye. Ну а дальше просто скопировать->вставить->выполнить по очереди следующие команды:

Создать папку /etc/motioneye

sudo mkdir -p /etc/motioneye

Скопировать туда уже готовую конфигурацию

sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf

Создать базовую папку для медиа /var/lib/motioneye

sudo mkdir -p /var/lib/motioneye

Скопировать готовые параметры для демона

sudo cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service

Перезагрузить демон

systemctl daemon-reload

Добавить motionEye в systemctl

systemctl enable motioneye

запустить motionEye

systemctl start motioneye

Готово! Теперь интерфейс системы видеонаблюдения доступен по адресу http://ip_адрес_платы:8765/. Да, в браузер нужно ввести именно ip адрес платы, например http://192.168.100.4:8765.

Если вы это все настраивали на своем ПК или ноутбуке в Debian, то в этом же устройстве в браузере вместо ip вы можете просто прописать ‘localhost’ как-то так: http://localhost:8765.

Теперь можно зайти в эту систему с браузера любого устройства, только при этом это устройство обязательно должно быть подключено к той же точке доступа (к тому же модему), что и наша плата/ПК с системой. Если все сделано правильно, появится вот такое окошко:

интерфейс motionEye

Доступ к системе видеонаблюдения с браузера может некоторых из вас смутить, мол “Почему графический интерфейс доступен только в браузере? Неужели без браузера никак?”. Да, никак! Дело в том, что эта система видеонаблюдения сделана специально для одноплатников типа Raspberry Pi. Нагружать такие платы дополнительно графическим интерфейсом, в котором система прорисовывает окошки, кнопочки достаточно сильно затратно для ресурсов процессора. В этом случае куда лучше иметь доступ с другого устройства, браузер которого просто получает html страницу, обрабатывает и формирует ее. Задача платы в этом случае просто передать текст html страницы интерфейса и таком случае нагрузка на прорисовку интерфейса лежит полностью на этом устройстве, а не на плате.

Именно по этому на одноплатник мы устанавливаем дистрибутив без графического интерфейса, управляя ей только с помощью консольных команд. Исключение - когда устанавливайте систему на ПК или, например, бюджетный ноутбук с 2-4 ядрами и, например, 2,2 Гц. Вот там можно себе позволить графический интерфейс и веб интерфейс системы видеонаблюдения можно открыть в нем же … открыв браузер. Боятся доступа с браузера не стоит: веб интерфейс очень даже полноценный и удобный.

Если этих всех настроек вам достаточно, можете сразу приступать к следующей статье про основные настройки motionEye (пока еще не готова).

Так как я пока еще не подготовил отдельную статью по настройкам самой motionEye, касательно этих настроек должен предупредить вас о том, что видеопоток с камеры по умолчанию перекодируется в определенный формат, сильно нагружая тем самым процессор в то время, как этот видеопоток можно записать напрямую. Чтоб видеопоток записывался напрямую, в разделе “Movies” обязательно включите опцию “Movie Passthrough”!

Тем, кто настраивает именно плату мини-ПК, может быть необходимо подключить к плате и настроить жесткий диск, о чем речь в следующем разделе.

Подключение к плате жесткого диска и его настройка.

Итак. У вас на плате есть карта памяти, объема которой для непрерывной записи видео с 1 камеры может хватить на 1-2 дня. Естественно этого не достаточно даже если система будет настроена на включение записи видео только когда есть какое-то движение. В таком случае есть 2 варианта:

  1. У вас настроен сетевой диск, который не подключен к плате.

  2. У вас есть жесткий диск, который необходимо подключить к плате через переходник SATA - USB.

В первом варианте в настройках motionEye вы просто указывайте адрес и все необходимые данные сетевого диска. Но у вас, как и у меня, скорее всего, второй вариант, когда жесткий диск должен быть, так сказать, частью самой платы.

Здесь стоит отметить, что решающую роль в скорости записи видео на диск играет тип USB. В USB 2.0 скорость по стандарту заявлена от 25 до 480 Мбит/с, однако, как показала практика, жесткий диск работая через USB по разным причинам (возможно из-за задержек между запросом на передачу данных и началом передачи) не всегда может развивать такую скорость и по моим ощущениям его может хватить на 2-3 или даже 4 ip камеры 720p с непрерывным потоком видео 1 Гб/час (у меня на практике 1 час потока 720p занимает 1 Гб), а далее скорее всего будут миллисекундные задержки. В этом случае повезло тем, у кого на плате есть USB 3.0, у которого скорость достигает 5 Гбит/с, однако в этом случае, когда камер много, ограничения по скорости могут быть уже со стороны wifi соединения…

Переходники SATA - USB для USB 2.0 и для USB 3.0 разные. Будьте внимательны при выборе.

Перед тем, как подключить жесткий диск к плате, его желательно перед этим подключить к вашему ПК и отформатировать в NTFS либо в какую-нибудь линуксоидную, типа Ext4, если есть такая возможность. По крайней мере так будет легче не только для вас, но и для меня, ведь мне не придется растягивать эту статью еще больше, объясняя, как его отформатировать через fdisk. Одна чья-то статья про перенос Armbian на внешний HDD с инструкцией по формированию этого HDD через fdisk чего стоит

Если диск форматирован в NTFS, то дополнительно устанавливаем на плату ntfs-3g командой:

sudo apt-get install ntfs-3g

Подключаем диск к плате через переходник и первое, что мы делаем, это выводим список подключенных “жестких дисков” командой

sudo fdisk -l

В списке ориентируйтесь по указанному объему жесткого диска. Скорее всего он обозначен здесь как /dev/sda и у его уже есть раздел /dev/sda1.

В линуксе диск можно монтировать в любую удобную нам папку. Для нас будет удобно, если доступ к диску будет находиться в нашем домашнем каталоге и мы сможем зайти в нее сразу через FTP. Например, мой пользователь в системе - seva77, соответственно путь к моему домашнему каталогу - /home/seva77.

Находясь в своей домашней папке (т.е. выполнив команду cd) создаем в ней папку, которая будет являться точкой монтирования нашего диска (например disk1tb) командой:

mkdir disk1tb

Затем мы можем разово монтировать наш жесткий диск в эту папку командой (для NTFS):

mount -t ntfs-3g /dev/sda1 /home/seva77/disk1tb

Если файловая система не NTFS, то вместо ntfs-3g пишем название файловой системы этого диска, например ext4.

Но это разовое монтирование, которое при перезапуске исчезнет. Для того, чтоб диск при перезапуске монтировался автоматически в нужный нам раздел, открываем в текстовом редакторе файл fstab

sudo nano /etc/fstab

и в случае, если файловая система - NTFS, добавляем следующую строчку (предварительно поменяв seva77 на своего пользователя):

/dev/sda1    /home/seva77/disk1tb    ntfs-3g    umask=0,user,locale=ru_RU.UTF-8    0    0

где umask=0 – права доступа для всех
user – дает возможность всем пользователям монтировать файловою систему
local=ru_RU.UTF-8 – определяет локаль, в которой необходимо отображать названия файлов

Для другой ФС (например Ext4) вставляем такую строчку:

/dev/sda1   /home/seva77/disk1tb  ext4    rw,relatime 0   0

Готово! Теперь диск для хранения видеозаписей подключен и доступен по пути /home/seva77/disk1tb.

Альтернативная установка motionEye через Home Assistant (для armbian)

Инструкция только для Armbian. Уверен, что есть те, кто умеет устанавливать Home Assistant и в другие дистрибутивы. Я не умею.

Этот способ может подойти тем, кто хочет установить motionEye легко, без особых усилий, введя всего парочку команд, но учтите, что система будет потреблять ресурсы процессора еще больше, чем при первом способе установки.

В основном данный способ рекомендован тем, кто хочет сделать из платы нечто большее, чем просто система видеонаблюдения. Ведь Home Assistant - это прежде всего система домашней автоматизации, в которую помимо всего необходимого для организации умного дома можно одним нажатием как дополнительный модуль установить motionEye. В общем рекомендую присмотреться к возможностям данной системы.

Я говорил, что будет легко? Дак вот. Разработчики дистрибутива Armbian в системные настройки внедрили возможность устанавливать необходимые в некоторых специфических случаях пакеты одним лишь кликом клавиши Enter. Их там около 20 шт., среди которых есть та самая система Home Assistant.

Прежде всего нам нужно зайти в системные настройки Armbian:

sudo armbian-config

Выскочит такое вот меню:

armbian-config

Не пугайтесь, если вместо рамки меню у вас будут символы - это нормально.

Далее заходите в Software -> Softy и в списке пакетов, доступных для установки, выбираем пакет Hassio нажатием на пробел (Hassio - это старое название Home Assistant).

Установить Home Assistant

Далее нажимаем на <Install> (Enter). Ждем.

Далее система спросит, хотим ли мы перезаписать конфигурационные файлы. Подтверждаем, что хотим (введя ‘y’) и все.

перезаписать конфигурационные файлы

Система Home Assistant установлена, можно открывать браузер на другом устройстве и вводить адрес формата http://ip_адрес_платы:8123/ (в моем случае это было бы http://192.168.100.4:8123, на скринах уже другой).

На странице должно появиться следующее:

автонастройка Home Assistant

Ждем примерно 20 минут, пока система настроит саму себя. Должна выскочить форма с полями ввода для нового пользователя.

регистрация в Home Assistant

Создаем нашу учетную запись, введя имя пользователя, пароль и т.д. В итоге мы должны прийти вот к такому окну:

начальная страница Home Assistant

В этом окне далее переходите во вкладку Supervisor на боковой панели, сверху нажимайте Add-on store и через поиск находите motionEye.

Home Assistant поиск в Supervisor

Нажимайте на него, нажимайте на Install и ждете, пока установится.

Готово! Теперь у вас есть система видеонаблюдения motionEye, в которую можно зайти через Home Assistant. Для быстрого доступа к motionEye не забудьте добавить ее на боковую панель Home Assistant нажав на “Show in sidebar” (“Запускать при загрузке”).

Home Assistant Show in sidebar in Supervisor

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

Если по ресурсам выдержит конечно. Останавливаться на теме умного дома я, конечно же, не буду.

Дополнительные настройки (по желанию)

Настройка на плате точки доступа для камер

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

Само решение делать из платы точку доступа я все же не считаю надежным в плане стабильности соединения для видеопотоков с камер, тем не менее если прям нет другого выхода, то можно пробовать и такое решение. Тем более, когда помимо обычной платы Orange Pi Zero LTS, которой, по моим оценкам, может хватить на потоки с 1-2 камеры, есть его усовершенствованная версия Orange Pi Zero 2 с гигабитовым wifi, для которой и 5 камер будет не проблема. Наверное…

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

злой я виню других в своей криворукости

В общем, как вы поняли, прежде чем настроить точку доступа через armbian-config, нужно обязательно установить пакет dnsmasq через команду

sudo apt-get install dnsmasq

Ну или убедиться таким образом, что пакет уже есть в системе. Далее заходим в armbian-config

sudo armbian-config

Выскочит окно системных настроек. Ничего страшного, если вместо рамки по краям будут символы: это нормально.

armbian-config

Далее заходим в Network, затем в Hotspot и ждем, пока система автоматически протестирует наш wifi модуль на плате и подберет для него необходимые настройки. По окончанию настройки точки доступа вы вернетесь в настройки сети (раздел Network).

Готово! В настройках сети теперь показывается SSID - название точки доступа и частота передачи данных (например 2.4Ghz, 5Ghz).

По умолчанию у нас название точки доступа - ARMBIAN, пароль - 12345678. Поменять это можно (и нужно), нажав опять на Hotspot, затем на < Edit > и меняйте данные в полях SSID и Password.

Установка и настройка FTP

Зачем нужен FTP, когда есть SFTP? Если, например, на ПК или ноутбук вы не настраивали доступ по SSH (который автоматом включает в себя SFTP) из-за ненадобности, то для платы мини-ПК, у которой он есть по умолчанию, использование SFTP бывает очень затратно в плане потребления ресурсов процессора на шифрование, что не так заметно на том же ноутбуке или ПК. Проблема SFTP также в том, что из-за шифрования он хоть и безопасный, однако скорость передачи данных, по сравнению с FTP, ниже примерно в 1,5 - 2 раза.

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

Первым делом установим vsftpd командой

sudo apt-get install vsftpd -y

затем нам нужно отредактировать конфигурационный файл

sudo nano /etc/vsftpd.conf

Прежде всего для безопасности нужно запретить анонимный доступ в FTP. Для этого ищем строчку с anonymous_enable и меняем его значение с YES на NO. В общем должно получиться так:

anonymous_enable=YES

изменено на

anonymous_enable=NO

Далее с остальных указанных мной строчек нужно просто убрать символ ‘#’ в начале строки, если он есть.

Прежде всего нужно дать доступ всем локальным пользователям вашего дистрибутива. Это значит, что вы можете использовать логин и пароль вашего пользователя в системе для доступа к домашнему каталогу /home/seva77 (где вместо seva77 имя вашего пользователя) или любому другому каталогу, владельцем которого является этот пользователь. За это отвечает строка:

#local_enable=YES

Если вы хотите разрешить загрузку по FTP для пользователя в его домашнем каталоге, за это отвечает строка:

#write_enable=YES

Если вы хотите видеть скрытые папки и файлы (в Linux они начинаются с точки), добавьте эту строку внизу:

force_dot_files=YES

Затем нажимайте Ctrl+X, Y и Enter, чтобы сохранить эту конфигурацию.

Если хотите, чтобы к FTP можно было подключиться через администратора (пользователь root), что крайне не рекомендуется, то нужно изменить список исключений. Для этого редактируем файл “ftpusers”:

sudo nano /etc/ftpusers

Нам нужно просто поставить символ ‘#’ перед словом ‘root’ вот так:

#root

После всех изменений перезапускаем FTP сервер:

sudo service vsftpd restart

Готово! Теперь вы можете получить доступ к FTP-серверу через FileZilla или Total Commander. Повторюсь, что пользователь и пароль такие же, какие вы установили для входа в операционную систему.

По умолчанию порт 21, но если вы планируете сделать доступ через интернет, то также в целях безопасности не забудьте этот порт переназначить. Если доступ через интернет вы сделайте по моей инструкции ниже, то по идее порт переназначать необязательно.

Делаем простой доступ к видеонаблюдению через интернет

Upd 09.04.2023:
Описанный ниже способ является полностью халявным, но не надежным, так как его могут блочить некоторые провайдеры. Сейчас же могу сказать, что самый профитный вариант - приобрести самый дешевый VPS(VDS) сервер, сделать из него собственный VPN сервер и подключить к VPN свою плату. Инструкция по самой простой установке и подключению VPN ЗДЕСЬ. Мой список сайтов-агрегаторов VPS/VDS ЗДЕСЬ.

Скажу сразу, я не мастер настраивать какие-либо сервера. Однако возможность наблюдать за тем, что у тебя творится в доме, на даче, в деревне, не приезжая туда каждые 2-3 недели для проверки видеозаписей, все же не так уж и плоха.

Пишу этот раздел статьи уже в тот момент, когда свою систему видеонаблюдения я уже установил бабушке в деревню и теперь с уверенностью и уже небольшой злостью могу сказать, что для моего способа, помимо наличия самого интернета на даче или в деревне, нужно, чтобы еще и с провайдером повезло. Ведь может случиться как у меня, когда при тестировании туннелирования этой системы во внешний интернет все замечательно, но вот подключайте вы эту систему в модем с интернетом от другого провайдера, а система не может подключиться к серверам и создать туннель, ведь вам попался с**ный Белтелеком, у которого, как говорит один мой знакомый, NAT за NATом и NATом погоняет и попробуй еще пробиться через целую систему таких NATов.

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

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

Ситуация такова, что со стороны самого устройства наша система видеонаблюдения доступна по адресу http://localhost:8765/. Доступна эта система только локально, с локальным (серым) ip за NAT провайдера. В этом случае нам весьма повезло, что есть те, кто додумался создать для людей программу, которая просто перенаправит ваш localhost на определенный сервер. Там ему присвоят определенный адрес, который будет доступен в интернете.

Одними из первых, кто до такого додумался, является Ngrok. Их услугами и воспользуемся.

Все достаточно легко. Заходим на их сайт ngrok.com, регистрируемся и после регистрации мы получим свой токен авторизации и предложение скачать их программу.

Скачиваем и распаковываем программу в домашнюю директорию (напоминаю, что у меня это home/seva77, у вас вместо ‘seva77’ ваш пользователь), а затем нам нужно выполнить команду для авторизации, указанную на сайте во втором шаге.

./ngrok authtoken ???????????????????????????????????????

где вместо вопросительных знаков у вас будет свой токен авторизации. После этого создается конфигурационный файл ngrok.yml, находящийся в папке $HOME/.ngrok2/ (можете так и ввести этот путь в проводник).

Мы можем сразу дать команду для запуска трансляции во внешний интернет нашей системы видеонаблюдения, который доступен по порту 8765:

./ngrok http 8765

В этом случае программа запустит туннель и наш интерфейс motionEye будет доступен по двум одинаковым адресам, но с разными протоколами: безопасный (https) и не очень (http). Эти адреса будут выведены в консоль, однако запоминать их не обязательно, ведь они также будут доступны на сайте ngrok в разделе Endpoints -> Status.

ngrok

Мы можем одновременно запускать несколько таких адресов (не более 4 по бесплатному тарифному плану), которые мы укажем в конфигурационном файле ngrok.yml. У вас в этом файле пока будет указан ваш authtoken. В качестве примера я приведу содержимое своего конфигурационного файла:

authtoken: ???????????????????????????????????????
region: eu
log: /home/seva77/disk1tb/ngrok.log

tunnels:
  motionEye:
    addr: 8765
    proto: http
    host_header: motionEye
  my_logs:
    addr: 80
    proto: http
    host_header: MyLogs
    bind_tls: true
  ssh-access:
    addr: 22
    proto: tcp

Для более быстрого и стабильного соединения я указал европейский регион eu, что ближе ко мне (по умолчанию регион us). Строку log можете исключать: это просто ведение логов ngrok соединений, которые иногда бывают полезны. Все наши соединения указаны в tunnels, среди которых, помимо нашего motionEye я указал еще и доступ к ssh нашего устройства (ssh-access).

Я также указывал доступ к обычному localhost (my_logs), доступному по порту 80, на котором у меня записываются точные дата и время, когда на той или иной камере были движения. Этот порт у меня оказался рабочим тогда, когда я на ноутбук при установке дистрибутива Debian выбрал кроме установки SSH сервера установку веб сервера. У вас же такого нет, поэтому my_logs удаляйте.

Однако обратите внимание, что для my_logs установлена опция bind_tls: true. Она позволяет для этого localhost адреса создать только одну ссылку с протоколом https. Значение bind_tls: false приведет к созданию одной ссылки с протоколом http. А по умолчанию значение этой опции выставлено в bind_tls: both (две ссылки).

И запускается это все командой

./ngrok start --all

Если, например, в ноутбуке можно просто запустить эту команду в терминале и даже не беспокоится о таких мелочах, как сделать ngrok фоновым процессом, то для тех, кто управляет платой только по SSH обрыв соединения с платой, выход из пользователя оборвет и сам процесс туннелирования. В этом случае этот процесс куда лучше повесить на наш любимый systemctl. Благо по запросу поисковик нам выдал аж целых два готовых способа повесить на systemctl наш ngrok.

Способ 1: https://github.com/vincenthsu/systemd-ngrok

Способ 2: https://github.com/mbobakov/ngrok-systemd

Ну и в итоге у нас есть доступ к нашей системе видеонаблюдения через интернет. Поздравляю!

Для тех же, кто не доверяет проприетарному Ngrok, есть достаточно большой список альтернатив с открытым исходным кодом, да и просто альтернатив. Большинство из них написаны на Golang и если у вас где-то приобретен сервер, работающий по VNC, то почему бы и не попробовать захостить такую систему? Вот, собственно, и список:

https://github.com/anderspitman/awesome-tunneling

Разработчики tunnelto и Telebit уже хостят свои решения на своих серверах и этим также можно воспользоваться, причем также просто, как и Ngrok_ом, описанным выше.

Конкретно для тех, кто систему видеонаблюдения устанавливает на ноутбук или просто на плату с графическим интерфейсом для удаленного доступа к рабочему столу могу также посоветовать программу RustDesk - это клиентское программное обеспечение для удаленного рабочего стола с открытым исходным кодом, написанное на Rust. Программа является неплохой альтернативой TeamViewer и AnyDesk, однако порой достаточно медленной за счет того, что соединение проходит через сервер разработчика.

По крайней мере из всего того, что я в этом разделе перечислил, заработала и до сих пор работает только эта программа. В принципе пока хватает и ее.

Надеюсь, у вас все получится.

UPD: У меня таки получилось сделать доступ к видеонаблюдению через ngrok.

Дело в том, что в конфигурацию ngrok можно записать прокси сервер. Я знал об этом изначально и откладывал такое решение в долгий ящик, т.к. знакомые говорили, что в такой ситуации может помочь чуть ли не только свой VPN, установленный на заказанном сервере с доступом по VNC.

Личный VPN на халяву можно получить у протонов и без vnc. Другое дело, когда на халяву нужен именно прокси, доступ к которому потом не пропадет через какое-то время. А в прочем можно обходится и такими прокси.

В конфигурационном файле ngrok.yml нужно просто вписать одну строчку с данными вашего прокси. В случае http прокси это будет так:

http_proxy: "http://user:password@proxy.company:3128"

А в случае, если у вас есть хитрый socks5 прокси, который доступен по localhost, например, после установки пакетов TOR:

socks5_proxy: "socks5://localhost:9050"

Последнее я не пробовал: как-то сразу удалось найти долгосрочный http прокси. В общем подробнее о доступных конфигурациях в ngrok.yml смотрите в документации.

Заключение

В заключении могу лишь пожелать удачи в установке и настройке всей этой системы.

В этой статье я не описал лишь сами настройки motionEye, что находятся в его интерфейсе (различные параметры записи, трансляции, обнаружения движения, уведомлений и т.д.). Этим настройкам я посвящу отдельную статью.

В целом я очень сильно старался объяснить все очень доходчиво. Возможно где-то даже перестарался, а возможно местами и наоборот. В любом случае обязательно пишите в комментарии, если что-то не понятно. Постараюсь ответить.

Все написанное заработало на моей плате Orange Pi Zero LTS и до сих пор работает на моем стареньком ноутбуке HP ProBook 4525s. Буду рад, если и на ваше устройство получилось установить и настроить эту систему видеонаблюдения по моим инструкциям.

 13.06.2021