- Python 75.8%
- Shell 24.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- WHATSAPP_API gebruikte 100.97.199.84:3000 (Mac Mini Tailscale IP, verkeerde poort) - Gewijzigd naar localhost:3001 (wwebjs-api container op nextcloud zelf) - Comment toegevoegd om verwarring te voorkomen - README herschreven met WhatsApp notificatie sectie en correcte architectuur - Verouderd plan geüpdatet met juiste URL |
||
| docs/superpowers | ||
| .gitignore | ||
| dashcam-transfer-mount.sh | ||
| dashcam-transfer.py | ||
| README.md | ||
| restructure.py | ||
Dashcam Transfer
Automatisch dashcam-opnames (MP4) overzetten van een SD-kaart naar een USB-SSD, met organisatie per datum en camera-positie (front/back). Draait op de nextcloud server.
Architectuur
SD-kaart insteken
→ udev detecteert vendor:product (14cd:1212 of 05e3:0751)
→ systemd-run start /usr/local/bin/dashcam-transfer-mount.sh
→ wacht tot /dev/disk/by-uuid/00D3-7715 verschijnt (max 60s)
→ mount UUID op /mnt/sdcard (uid=1000, exfat)
→ systemctl start dashcam-transfer.service
→ /usr/local/bin/dashcam-transfer.py
1. Check mounts (/mnt/sdcard, /mnt/ultratouch)
2. Scan /mnt/sdcard/Novatek/Movie/ op *.MP4
3. Check vrije ruimte — verwijder oudste datum-mappen indien nodig
4. Copy + verify + delete per bestand
5. Stuur WhatsApp notificatie via wwebjs-api
Hardware
| Component | Mount | Device | Doel |
|---|---|---|---|
| USB-SSD (4TB, Seagate Ultra Touch) | /mnt/ultratouch |
/dev/disk/by-uuid/3027-8ECA |
Opslag |
| SD-kaart (via USB reader) | /mnt/sdcard |
/dev/disk/by-uuid/00D3-7715 |
Bron |
SSD wordt gemount via systemd .automount unit (permanent aangesloten).
SD-kaart wordt gemount door dashcam-transfer-mount.sh na udev trigger.
Bestandsstructuur
SD-kaart (bron)
/mnt/sdcard/Novatek/Movie/
├── 20260622050346_0000001F.MP4 ← front camera
├── 20260622050346_0000002B.MP4 ← back camera
└── ...
Bestandsnaam: YYYYMMDDHHMMSS_<sequentie><kamera>.MP4
F= front,B= back- ~381 MB per clip (~5 minuten)
SSD (doel)
/mnt/ultratouch/dashcam/
└── YYYYMMDD/
├── front/
│ └── ...F.MP4
└── back/
└── ...B.MP4
WhatsApp notificatie
Na elke transfer stuurt het script een WhatsApp bericht naar de beheerder:
✅ Dashcam transfer voltooid: 164 bestanden (56.8 GB) overgezet, geen fouten
De API (wwebjs-api) draait als Docker container op nextcloud zelf:
| Config | Waarde |
|---|---|
| API endpoint | http://localhost:3001/client/sendMessage/EdGpt |
| Sessie | EdGpt |
| Ontvanger | 31620248011@c.us (privé chat Eddy) |
De container: docker-compose.yml in /home/aiaiaiaiagent/wwebjs-api/.
Service & triggers
Udev rule (/etc/udev/rules.d/99-dashcam-trigger.rules)
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*[0-9]", ENV{ID_VENDOR_ID}=="14cd", ENV{ID_MODEL_ID}=="1212", RUN+="/usr/bin/systemd-run --no-block --collect /usr/local/bin/dashcam-transfer-mount"
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*[0-9]", ENV{ID_VENDOR_ID}=="05e3", ENV{ID_MODEL_ID}=="0751", RUN+="/usr/bin/systemd-run --no-block --collect /usr/local/bin/dashcam-transfer-mount"
Mount script (/usr/local/bin/dashcam-transfer-mount.sh)
Wacht tot de UUID beschikbaar is, unmount eventuele stale mounts, mount de SD-kaart en start de service.
Systemd service (/etc/systemd/system/dashcam-transfer.service)
[Unit]
Description=Dashcam SD card transfer
After=mnt-sdcard.mount
[Service]
Type=oneshot
ExecStart=/usr/local/bin/dashcam-transfer
User=root
Logging
Alle activiteit wordt gelogd naar /tmp/dashcam-transfer.log op nextcloud.
Handmatig gebruik
# Alle bestanden overzetten
/usr/local/bin/dashcam-transfer
# Beperkt tot eerste N bestanden (testen)
/usr/local/bin/dashcam-transfer --limit 10
Ontwikkeling
Lokale repo: ~/src/dashcam-transfer/ op Mac Mini.
Deployen naar nextcloud:
scp dashcam-transfer.py aiaiaiaiagent@nextcloud:/tmp/
ssh aiaiaiaiagent@nextcloud 'sudo -A cp /tmp/dashcam-transfer.py /usr/local/bin/dashcam-transfer'