From dda50b6d8fc2b4146e73f25eddcfc7966bf05813 Mon Sep 17 00:00:00 2001 From: Eddy de Vink Date: Fri, 29 May 2026 22:07:29 +0200 Subject: [PATCH] docs: README met ontwerp, uitwerking en gebruiksaanwijzing --- README.md | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..fd71507 --- /dev/null +++ b/README.md @@ -0,0 +1,125 @@ +# 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_.MP4 +``` +- `YYYYMMDDHHMMSS` — datum + tijd van opname +- `` — oplopend nummer +- ``: `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 + +```bash +# 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 + +```ini +[Unit] +Description=Dashcam SD card transfer +After=mnt-sdcard.mount + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/dashcam-transfer +``` + +### Udev rule + +```udev +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.