6.1 KiB
6.1 KiB
Dashcam Transfer — Ontwerp
1. Doel
Automatisch dashcam-opnames (MP4) verplaatsen van een SD-kaart naar een USB-SSD op een
remote Fedora Linux server (nextcloud), met organisatie per datum en camera-positie.
2. Hardware & Mounts
| Component | Mount point | Device | Bestandssysteem | Status |
|---|---|---|---|---|
| USB-SSD (4TB) | /mnt/ultratouch |
/dev/sdc2 |
exfat | ✅ Gemount, 3,0T / 3,7T (82%) |
| SD-kaart (via USB reader) | /mnt/sdcard |
/dev/sdd1 |
exfat | ✅ Gemount, 116G / 117G (100%) |
Beide mounts worden automatisch beheerd door systemd transient automount units.
3. SD-kaart structuur (bron)
/mnt/sdcard/
├── Novatek/
│ ├── Movie/ ← MP4 opnames (338 bestanden, 116 GB)
│ ├── Photo/ ← leeg
│ └── EMR/ ← leeg
├── hitlittlev1.0.exe ← firmware-update tool
└── .Trash-1000/ ← macOS verborgen map
Bestandsnaam conventie
YYYYMMDDHHMMSS_XXXXXXXX<kamera>.MP4
YYYYMMDDHHMMSS— datum + tijd van opnameXXXXXXXX— sequentieel nummer<kamera>:F— FrontcameraB— Backcamera (rear)
- Grootte: ~381 MB per bestand, ~5 minuten opname
Voorbeelden
20260529085848_0003363F.MP4 → front camera, 29-05-2026 08:58:48
20260529085848_0003364B.MP4 → back camera, 29-05-2026 08:58:48
4. SSD structuur (doel)
Bestaande data
/mnt/ultratouch/dashcam/
├── 20250808/
│ ├── chauffeur/ ← 56 GB
│ └── weg/
├── 20250811/ ← 72 GB
│ ├── chauffeur/
│ └── weg/
├── ...
├── 20260328/
│ ├── front/
│ └── rear/
├── ...
└── 20260425/ ← 59 GB
├── front/
└── rear/
- 2025: mappen
chauffeur/enweg/— oude dashcam - 2026: mappen
front/enrear/— huidige dashcam - Totale grootte: 3,0 TB
- Oudste map: ~56 GB, nieuwste: ~59 GB
Gewenste structuur (bij nieuwe transfers)
/mnt/ultratouch/dashcam/
└── YYYYMMDD/ ← datum uit bestandsnaam (bv. 20260529)
├── front/ ← bestanden met suffix F
│ └── YYYYMMDDHHMMSS_XXXXXXXXF.MP4
└── rear/ ← bestanden met suffix B
└── YYYYMMDDHHMMSS_XXXXXXXXB.MP4
5. Transfer logica
5.1 Handmatige uitvoering
Eerste implementatie: een bash-script dat handmatig gestart kan worden.
/usr/local/bin/dashcam-transfer
5.2 Automatische trigger (later)
Aanbevolen: udev rule + systemd service.
- udev detecteert wanneer
/dev/sdd1verschijnt (SD-kaart reader) - Start een systemd oneshot service die het transfer-script uitvoert
- Eventueel: vertraging van 10-30 seconden zodat de automount klaar is
Alternatief: systemd path unit die /mnt/sdcard/Novatek/Movie/ monitort.
5.3 Stappenplan
1. Controleer of /mnt/sdcard gemount is
2. Scan /mnt/sdcard/Novatek/Movie/ op *.MP4 bestanden
2a. Als er geen MP4 bestanden zijn → stop
3. Bereken totale grootte van de te verplaatsen bestanden
4. Controleer vrije ruimte op /mnt/ultratouch
5. Als niet genoeg ruimte:
a. Bepaal benodigde ruimte (totale grootte MP4 + 5% marge)
b. Sorteer /mnt/ultratouch/dashcam/ mappen op naam (YYYYMMDD)
c. Verwijder oudste mappen één voor één tot vrije ruimte >= benodigd
d. Log welke mappen verwijderd zijn
6. Voor elk MP4 bestand:
a. Parse datum (YYYYMMDD) uit bestandsnaam (eerste 8 chars)
b. Parse camera-positie (F → front, B → rear) uit laatste char voor .MP4
c. Maak target map aan: /mnt/ultratouch/dashcam/YYYYMMDD/{front,rear}/
d. Verplaats bestand: mv "$bron" "$doel/"
e. Log de transfer
f. Bij fout: log error, ga verder met volgend bestand
7. Na alle transfers:
a. Verwijder lege submappen in /mnt/sdcard/Novatek/ (Movie, Photo, EMR)
b. Optioneel: unount /mnt/sdcard (alleen bij udev-trigger)
8. Log samenvatting: aantal files, totale grootte, eventuele fouten
5.4 Overwegingen
- Alleen
.MP4(hoofdlettergevoelig:*.MP4en*.mp4) - Verplaatsen (mv), niet kopiëren — SD-kaart wordt niet gekloond
- Alleen overgezette bestanden worden verwijderd (via mv, niet aparte rm)
- Vreemde bestanden (
hitlittlev1.0.exe, macOS._bestanden) worden niet aangeraakt - Oude mappen (2025,
chauffeur//weg/) blijven intact — worden niet overschreven - Lockfile voorkomt dubbele uitvoering (bijv. via flock)
6. Automatisering
6.1 Udev rule (gepland)
# /etc/udev/rules.d/99-dashcam-sdcard.rules
ACTION=="add", KERNEL=="sdd1", RUN+="/usr/local/bin/dashcam-transfer-trigger"
6.2 Systemd service
[Unit]
Description=Dashcam SD card transfer
After=mnt-sdcard.mount
[Service]
Type=oneshot
ExecStart=/usr/local/bin/dashcam-transfer
User=root
7. Logging & Rapportage
- Logbestand:
/var/log/dashcam-transfer.log - Formaat:
[YYYY-MM-DD HH:MM:SS] <niveau> <bericht> - Niveaus: INFO, WARNING, ERROR
- Inhoud per bestand:
[2026-05-29 19:00:00] INFO Verplaatst: Novatek/Movie/20260529085848_0003363F.MP4 → dashcam/20260529/front/ - Samenvatting: aantal bestanden, totale grootte, duur, eventuele fouten
8. Foutafhandeling
| Scenario | Actie |
|---|---|
| SD-kaart niet gemount | Foutmelding + exit code 1 |
| Ultratouch niet gemount | Foutmelding + exit code 1 |
| Geen MP4 bestanden gevonden | INFO log + exit code 0 |
| Onvoldoende ruimte + geen mappen te verwijderen | ERROR + exit code 1 |
| Bestand kan niet gelezen worden | ERROR log + skip |
| Lockfile aanwezig (al bezig) | WARNING log + exit code 1 |
| Onbekende camera-letter (niet F/B) | FILE overslaan naar onbekend/ map |
9. Implementatie volgorde
| Stap | Wat | Status |
|---|---|---|
| 1 | Bash script: basale transfer (parsen + mv) | 📝 Te doen |
| 2 | Bash script: schijfruimte-check + cleanup | 📝 Te doen |
| 3 | Bash script: logging + lockfile | 📝 Te doen |
| 4 | Systemd service voor handmatig starten | 📝 Te doen |
| 5 | Udev rule voor automatische trigger | 📝 Te doen |
| 6 | Testen met huidige SD-kaart | 📝 Te doen |