- Домашний роутер на Linux с жёстким диском или сервер на Linux с wget и curl;
- Камера Yi 4k+ с прошивкой 1.4.14 (возможно будет работать на других)
- Настроить доступ к камере по telnet;
- Настроить режим wifi, чтобы камера цеплялась к домашнему роутеру;
- На роутере зафиксировать ip адрес для MAC камеры (в настройках DHCP), чтобы адрес не менялся со временем;
- На камере отключить режим автовыключения по истечению времени;
- Положить в корень карты памяти ftp.sh, чтобы запускать ftp сервер;
- Скачать video_export.sh на роутер или домашний сервер и добавить задачу для запуска в crontab;
* * * * * /usr/bin/flock -n /tmp/video_export.lockfile /home/user/video_export.sh
- При необходимости поправить переменные в начале скрипта:
cameraIp
- адрес камеры в домашней сети;ftpWorkTime
- время работы сервера в секундах (можно оставить без изменений);ftpPath
- директория на камере (можно оставить без изменений если совпадает);baseDir
- полный путь сохранения видео (будут создаваться подкаталоги с датой выгрузки, например2023-06-03
)
Не использую стандартную настройку wifi камеры потому что скорость загрузки в 2 раза ниже в таком режиме. Не использую выгрузку по http, через стандартный web сервер камеры потому что она часто виснет в таком режиме работы (по крайней мере у меня).
- Добавленный в crontab скрипт "ждёт" когда камера появится в локальной сети;
- Включённая камера в домашней зоне wifi подключится к роутеру. Камеру нужно выключить -> включить если вы пришли с улицы, подключение к роутеру происходит только в момент включения;
- Скрипт запускает ftp.sh на камере через telnet, создаёт директорию выгрузки с сегодняшней датой;
- Качает файл, проверяет размер, если файл получен полностью, то удаляет файлы с камеры;
- Если в директории сервера скрипт обнаружит недокаченный файл, он будет удалён (предполагается что скачается при следущем включении камеры дома);
- выключение камеры после выгрузки всех файлов (слёту не получилось найти способ её отключить через telnet);
- настройка ротации файлов, чтобы при заполненнии места на диске (сервера) освобождалось место удалением старых файлов в
baseDir
.