feat: stuur WhatsApp notificatie na dashcam transfer

This commit is contained in:
Eddy de Vink 2026-06-07 16:18:43 +02:00
commit e0b36a5b9c
2 changed files with 98 additions and 3 deletions

View file

@ -3,12 +3,14 @@
import argparse import argparse
import fcntl import fcntl
import json
import logging import logging
import os import os
import re import re
import shutil import shutil
import subprocess import subprocess
import sys import sys
import urllib.request
SD_CARD = "/mnt/sdcard" SD_CARD = "/mnt/sdcard"
SOURCE_DIR = os.path.join(SD_CARD, "Novatek", "Movie") SOURCE_DIR = os.path.join(SD_CARD, "Novatek", "Movie")
@ -103,6 +105,30 @@ def ensure_free_space(needed_bytes, target_base):
logging.info("Ruimte vrijgemaakt: %d bytes door %d mappen", freed, len(removed)) logging.info("Ruimte vrijgemaakt: %d bytes door %d mappen", freed, len(removed))
WHATSAPP_API = "http://100.97.199.84:3000/client/sendMessage/EdGpt"
WHATSAPP_CHAT = "31620248011@c.us"
def send_whatsapp_notification(ok, errors):
if errors == 0:
prefix = "✅"
status = "geen fouten"
else:
prefix = "❌"
status = f"{errors} fout(en)"
body = f"{prefix} Dashcam transfer voltooid: {ok} bestanden overgezet, {status}"
payload = {"chatId": WHATSAPP_CHAT, "content": body, "contentType": "string"}
try:
data = json.dumps(payload).encode()
req = urllib.request.Request(
WHATSAPP_API, data=data, headers={"Content-Type": "application/json"}
)
urllib.request.urlopen(req, timeout=10)
logging.info("WhatsApp notificatie verstuurd")
except Exception as e:
logging.warning("WhatsApp notificatie mislukt: %s", e)
def parse_args(): def parse_args():
parser = argparse.ArgumentParser(description="Dashcam transfer tool") parser = argparse.ArgumentParser(description="Dashcam transfer tool")
parser.add_argument( parser.add_argument(
@ -186,9 +212,8 @@ def main():
) )
ok += 1 ok += 1
logging.info( logging.info("Transfer voltooid: %d ok, %d fouten", ok, errors)
"Transfer voltooid: %d ok, %d fouten", ok, errors send_whatsapp_notification(ok, errors)
)
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -0,0 +1,70 @@
# WhatsApp Notification Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Add a WhatsApp notification to the dashcam transfer script that sends a summary to admin Eddy after each transfer.
**Architecture:** A single `send_whatsapp_notification()` function is added to `dashcam-transfer.py`. It POSTs to the local wwebjs-api (running on Mac Mini via Tailscale) using stdlib `urllib.request`. Failures are logged but never crash the script.
**Tech Stack:** Python 3 stdlib (`urllib.request`, `json`), wwebjs-api REST API
---
### Task 1: Add WhatsApp notification to dashcam-transfer.py
**Files:**
- Modify: `dashcam-transfer.py:3` (add imports)
- Modify: `dashcam-transfer.py:189-191` (add notification call)
- [ ] **Step 1: Add imports**
Add `import json` and `import urllib.request` after the existing stdlib imports.
- [ ] **Step 2: Add `send_whatsapp_notification()` function**
Insert before `parse_args()` (after `ensure_free_space`):
```python
WHATSAPP_API = "http://100.97.199.84:3000/client/sendMessage/EdGpt"
WHATSAPP_CHAT = "31620248011@c.us"
def send_whatsapp_notification(ok, errors):
status = "geen fouten" if errors == 0 else f"{errors} fout(en)"
body = f"Dashcam transfer voltooid: {ok} bestanden overgezet, {status}"
payload = {"chatId": WHATSAPP_CHAT, "content": body, "contentType": "string"}
try:
data = json.dumps(payload).encode()
req = urllib.request.Request(WHATSAPP_API, data=data, headers={"Content-Type": "application/json"})
urllib.request.urlopen(req, timeout=10)
logging.info("WhatsApp notificatie verstuurd")
except Exception as e:
logging.warning("WhatsApp notificatie mislukt: %s", e)
```
- [ ] **Step 3: Call notification at end of `main()`**
Replace:
```python
logging.info(
"Transfer voltooid: %d ok, %d fouten", ok, errors
)
```
With:
```python
logging.info("Transfer voltooid: %d ok, %d fouten", ok, errors)
send_whatsapp_notification(ok, errors)
```
- [ ] **Step 4: Verify the script parses correctly**
Run: `python3 -c "import ast; ast.parse(open('dashcam-transfer.py').read()); print('OK')"`
Expected: `OK`
- [ ] **Step 5: Commit**
```bash
git add dashcam-transfer.py
git commit -m "feat: stuur WhatsApp notificatie na dashcam transfer"
```