Вопрос или проблема
У меня есть pi cam на pi zero, который должен работать все время, пока он включен. Этот модуль камеры pi используется при стратосферном запуске, и во время нашего последнего запуска мы смогли получить видео обратно, но они перезаписывались каждый раз, когда pi включался. Pi создает папку с тем же именем каждый раз при включении, что затем удаляет предыдущие данные. Я пытаюсь сделать, чтобы он создавал папку с другим именем при запуске без моего ручного изменения.
это код, который у нас есть в данный момент:
rpicam-vid -n -v 0 -t 0 --segment 1000 --codec mjpeg -o /home/acc/flight_videos/test%05d.mjpeg
Я бы, возможно, создал директорию с текущей датой и сохранил бы файлы там.
например
dest=/home/acc/flight_videos/$(date +%Y-%m-%d)
mkdir -p $dest || exit
rpicam-vid -n -v 0 -t 0 --segment 1000 --codec mjpeg -o $dest/test%05d.mjpeg
Эти директории будут названы, например, 2025-03-14
Если вы перезагружаете систему более одного раза в день, можно расширить это, включая время
например
dest=/home/acc/flight_videos/$(date +%Y-%m-%d-%H:%M:%S)
Теперь директория будет чем-то вроде 2025-03-14-13:20:46
Если дата/время недоступны или ненадежны, вы можете использовать более случайные значения
например
dest=$(mktemp -d /home/acc/flight_videos/out.XXXXXXXXXX)
rpicam-vid -n -v 0 -t 0 --segment 1000 --codec mjpeg -o $dest/test%05d.mjpeg
Ответ или решение
Теория: Автоматизация создания уникальных каталогов при запуске Raspberry Pi Camera
Когда вы используете камеру Raspberry Pi в критически важных задачах, как, например, стратосферные запуски, важно гарантировать, что все записанные данные будут надежно сохранены и не перезаписаны при повторном запуске системы. На данный момент вы столкнулись с проблемой, когда система создает папку с одним и тем же именем каждый раз при включении, что приводит к потере ранее записанных данных. Оптимальное решение — настроить ваш Raspberry Pi так, чтобы он создавал уникальный каталог при каждом новом запуске, используя параметры даты и времени или случайные имена.
Пример: Использование параметров даты и времени для уникальности
Чтобы решить проблему, вы можете использовать текущую дату и время для создания уникального имени каталога. Это позволит вам однозначно идентифицировать папку каждого запуска и избежать случайного перезаписи файлов. Ваша текущая строка команды выглядит следующим образом:
rpicam-vid -n -v 0 -t 0 --segment 1000 --codec mjpeg -o /home/acc/flight_videos/test%05d.mjpeg
Вы можете изменить её таким образом, чтобы директория создавалась на основе текущей даты и времени:
dest=/home/acc/flight_videos/$(date +%Y-%m-%d-%H:%M:%S)
mkdir -p $dest || exit
rpicam-vid -n -v 0 -t 0 --segment 1000 --codec mjpeg -o $dest/test%05d.mjpeg
В этом примере папка, в которую будет записываться видео, создается с названием, основанным на дате и времени запуска системы, например, 2025-03-14-13:20:46
. Это обеспечивает уникальность директории для каждого нового запуска в течение дня.
Применение: Работа с ненадежной датой или временем
Если ваши полеты происходят в условиях, где доступ к точному времени ограничен или отсутствует, вы можете использовать генерацию случайных имен с помощью команды mktemp
. Этот подход создает временную папку с уникальным именем:
dest=$(mktemp -d /home/acc/flight_videos/out.XXXXXXXXXX)
rpicam-vid -n -v 0 -t 0 --segment 1000 --codec mjpeg -o $dest/test%05d.mjpeg
Функция mktemp
гарантирует, что каталог будет иметь уникальное название, состоящее из десяти случайных символов, что минимизирует риск перезаписи.
Дополнительные меры для обеспечения надежности
-
Обработка ошибок: Убедитесь, что скрипт может обрабатывать ошибки создания каталога. Используйте проверку выхода команды создания директории и добавьте логирование для контроля процессов.
-
Сохранение логов: Помимо видеофайлов, будет полезным также сохранять логи работы системы и камеры. Это поможет при диагностике проблем и анализе качества записей.
-
Автоматизация запуска: Рассмотрите возможность интеграции вашего скрипта в процессы автозапуска Raspberry Pi, чтобы гарантировать его выполнение при каждом включении устройства.
-
Резервное копирование: Организуйте автоматическое резервное копирование данных на удаленный сервер или облако после возвращения устройства из полёта для дополнительной безопасности данных.
Таким образом, использование динамического наименования директорий на основе даты, времени или случайных значений обеспечивает высокий уровень надежности при записи данных с Raspberry Pi Camera в требовательных условиях. Установление таких мер предотвратит потерю данных и повысит эффективность вашей системы при выполнении сложных задач.