docs: README met ontwerp, uitwerking en gebruiksaanwijzing
This commit is contained in:
parent
4b4179e01c
commit
dda50b6d8f
1 changed files with 125 additions and 0 deletions
125
README.md
Normal file
125
README.md
Normal file
|
|
@ -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_<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
|
||||
|
||||
```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.
|
||||
Loading…
Reference in a new issue