No description
  • Python 75.8%
  • Shell 24.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-29 22:07:29 +02:00
docs/superpowers feat: add dashcam-transfer.py script 2026-05-29 19:37:50 +02:00
.gitignore Initial commit 2026-05-29 18:46:42 +02:00
dashcam-transfer.py feat: copy+verify+delete, --limit flag, fix exfat compat 2026-05-29 19:54:02 +02:00
README.md docs: README met ontwerp, uitwerking en gebruiksaanwijzing 2026-05-29 22:07:29 +02:00
restructure.py Uniformeer naar front/back i.p.v. front/rear (B = back, F = front) 2026-05-29 19:34:12 +02:00

Dashcam Transfer

Automatisch dashcam-opnames (MP4) overzetten van een SD-kaart naar een USB-SSD, met organisatie per datum en camera-positie (front/back).

Werking

Hardware setup

Component Mount Doel
USB-SSD (4TB) /mnt/ultratouch Opslag
SD-kaart (USB reader) /mnt/sdcard Bron

Beide worden automatisch gemount via systemd automount units.

SD-kaart structuur (bron)

De Novatek dashcam slaat opnames op in de volgende structuur:

/mnt/sdcard/Novatek/Movie/
├── 20260529085848_0003363F.MP4    ← front camera
├── 20260529085848_0003364B.MP4    ← back camera
├── 20260529090348_0003365F.MP4
├── 20260529090348_0003366B.MP4
└── ...

Bestandsnaam conventie:

YYYYMMDDHHMMSS_<sequentie><kamera>.MP4
  • YYYYMMDDHHMMSS — datum + tijd van opname
  • <sequentie> — oplopend nummer
  • <kamera>: F = front, B = back
  • Bestandsgrootte: ~381 MB per clip (~5 minuten)

SSD structuur (doel)

Na transfer worden de bestanden georganiseerd in een uniforme structuur:

/mnt/ultratouch/dashcam/
└── YYYYMMDD/              ← datum uit bestandsnaam
    ├── front/              ← bestanden met suffix F
    │   ├── YYYYMMDDHHMMSS_1234567F.MP4
    │   └── ...
    └── back/               ← bestanden met suffix B
        ├── YYYYMMDDHHMMSS_1234567B.MP4
        └── ...

Het script

dashcam-transfer.py — Python 3 script (stdlib only, geen externe dependencies).

Stappenplan

  1. Mount check — controleert of /mnt/sdcard en /mnt/ultratouch gemount zijn
  2. Scan — zoekt .MP4 bestanden in Novatek/Movie/
  3. Ruimte check — berekent totale benodigde ruimte en vergelijkt met vrije ruimte
  4. Ruimte maken — als er te weinig ruimte is, worden de oudste datum-mappen op de SSD verwijderd tot er genoeg ruimte is
  5. Transfer — voor elk bestand:
    • Kopieer naar dashcam/YYYYMMDD/{front,back}/
    • Verifieer bestandsgrootte (bron vs doel)
    • Verwijder bronbestand alleen bij succesvolle verificatie
  6. Logging — elk bestand wordt gelogd met datum, tijd en status

Gebruik

# Alle bestanden overzetten
/usr/local/bin/dashcam-transfer

# Beperkt tot eerste N bestanden (handig voor testen)
/usr/local/bin/dashcam-transfer --limit 10

Logbestand

/tmp/dashcam-transfer.log

Voorbeeld:

[2026-05-29 19:54:29] INFO Transfer voltooid: 303 ok, 0 fouten
[2026-05-29 19:54:29] INFO Overgezet: 20260529112143_0003403F.MP4 → 20260529/front/ (381203172 bytes)

Herstructurering

Bestaande data op /mnt/ultratouch/dashcam/ was oorspronkelijk inconsistent:

  • 2025: mappen chauffeur/ en weg/ (oude dashcam)
  • Begin 2026: platte bestanden (direct in datum-map)
  • Vanaf maart 2026: mappen front/ en rear/

Het restructure.py script heeft alle historische data omgezet naar de uniforme front//back/ structuur. Hierbij zijn bestanden gesorteerd op basis van de camera-suffix in de bestandsnaam.

Automatisering (nog in te richten)

Systemd service

[Unit]
Description=Dashcam SD card transfer
After=mnt-sdcard.mount

[Service]
Type=oneshot
ExecStart=/usr/local/bin/dashcam-transfer

Udev rule

ACTION=="add", KERNEL=="sdd1", RUN+="/usr/local/bin/dashcam-transfer-trigger"

Waarbij dashcam-transfer-trigger een kort bash-script is dat enkele seconden wacht tot de automount actief is en dan het Python-script start.