Files
raspi_openclaw/old/mailbox-cal-openclaw-skill/mailbox-cal-updated-docs
2026-05-06 08:41:06 +02:00
..
2026-05-06 08:41:06 +02:00
2026-05-06 08:41:06 +02:00

openclaw-mailbox-cal

OpenClaw Skill-Repository — mailbox.org Kalender und Aufgaben auf dem Raspberry Pi
Telegram-Bot-Befehle für Kalendertermine (khal), Tasks (todoman) und automatischen CalDAV-Sync (vdirsyncer).


Schnellstart

# 1. .env befüllen
cp assets/.env.example .env && nano .env

# 2. Installation
chmod +x scripts/install.sh && bash scripts/install.sh

# 3. Selbsttest
bash scripts/test_setup.sh

Projektstruktur

openclaw-mailbox-cal/
├── SKILL.md                     ← OpenClaw Skill-Definition
├── README.md                    ← Diese Datei
├── assets/
│   └── .env.example             ← Umgebungsvariablen-Vorlage
├── config/
│   ├── vdirsyncer.conf          ← vdirsyncer CalDAV-Konfiguration
│   ├── khal.conf                ← khal Kalender-Konfiguration
│   └── todoman.conf             ← todoman Aufgaben-Konfiguration
├── scripts/
│   ├── install.sh               ← Installations-Script (Raspi)
│   ├── test_setup.sh            ← Selbsttest aller Komponenten
│   └── openclaw_skill.py        ← OpenClaw/Telegram Bot Handler
└── systemd/
    ├── vdirsyncer-sync.service  ← systemd Service Unit
    ├── vdirsyncer-sync.timer    ← systemd Timer (alle 15 Min.)
    └── vdirsyncer-sync.env      ← Umgebungsvariablen für systemd

Setup-Schritte (detailliert)

Schritt 1 — Voraussetzungen

  • Raspberry Pi mit Raspberry Pi OS Bookworm (64-bit empfohlen) oder Ubuntu 22.04+ ARM
  • mailbox.org-Konto
  • App-Passwort in mailbox.org anlegen:
    Einstellungen → Sicherheit → App-Passwörter → Neu erstellen
  • OpenClaw installiert: openclaw.dev
  • Telegram Bot-Token via @BotFather

Schritt 2 — .env konfigurieren

cp assets/.env.example .env
nano .env

Mindestens diese Werte setzen:

MAILBOX_USER=vorname.nachname@mailbox.org
MAILBOX_PASS=app-passwort-xyz

Schritt 3 — install.sh ausführen

chmod +x scripts/install.sh
bash scripts/install.sh

Das Script installiert automatisch:

  • vdirsyncer — CalDAV-Sync-Tool
  • khal — CLI-Kalender
  • todoman — CLI-Aufgabenverwaltung
  • pass — GNU Password Store
  • python3-keyring — Python-Keyring-Integration
  • gettext-base — envsubst für Konfigurationen

Anschließend:

  • Alle Konfigurationsdateien werden deployed
  • systemd User-Timer wird aktiviert
  • Initialer Sync wird durchgeführt

Schritt 4 — OpenClaw Skill registrieren

OpenClaw erkennt Skills automatisch wenn sie in einem der Skill-Verzeichnisse liegen. Kein manueller Eintrag in openclaw.json nötig — das install.sh legt bereits einen Symlink an.

# Manuell (falls install.sh den Symlink nicht angelegt hat):
mkdir -p ~/.openclaw/skills
ln -s ~/mailbox-cal ~/.openclaw/skills/mailbox-cal

Optional — Zugangsdaten direkt in ~/.openclaw/openclaw.json hinterlegen (Alternative zur .env-Datei). Immer zuerst Backup anlegen:

cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak

Dann im "skills"-Block den "entries"-Unterblock ergänzen:

"skills": {
  "install": {
    "nodeManager": "npm"
  },
  "entries": {
    "mailbox-cal": {
      "enabled": true,
      "env": {
        "MAILBOX_USER": "dein.name@mailbox.org",
        "MAILBOX_PASS": "app-passwort-xyz"
      }
    }
  }
}

Nach jeder Änderung an openclaw.json validieren und Gateway neu starten:

openclaw doctor --fix
openclaw gateway restart

Schritt 5 — Telegram testen

Sende an deinen Bot:

/termine
/aufgaben
/sync
/status

Test-Befehle

Vollständiger Selbsttest

bash scripts/test_setup.sh

vdirsyncer

# Verbindung testen und Sammlungen entdecken
vdirsyncer discover calendars
vdirsyncer discover tasks

# Synchronisation manuell starten
vdirsyncer sync

# Nur Kalender synchronisieren
vdirsyncer sync calendars

# Verbose-Ausgabe
vdirsyncer -v DEBUG sync

khal

# Termine heute
khal list

# Termine nächste 7 Tage
khal list today 7d

# Agenda-Ansicht
khal agenda

# Interaktiver Kalender
ikhal

# Ereignis hinzufügen (interaktiv)
khal new

# Ereignis direkt anlegen
khal new 2025-06-15 14:00 15:00 "Arzttermin" --calendar mailbox_kalender

# Cache neu aufbauen
khal rebuild-cache

# Konfiguration anzeigen
khal printformats

todoman

# Alle offenen Aufgaben
todo list

# Alle Aufgaben inkl. erledigt
todo list --all

# Neue Aufgabe
todo new "Bericht schreiben"

# Aufgabe mit Fälligkeitsdatum
todo new --due 2025-06-30 "Bericht abgeben"

# Aufgabe mit Priorität (1=hoch, 9=niedrig)
todo new --priority 1 "Dringend: Server patchen"

# Aufgabe als erledigt markieren (ID aus 'todo list')
todo done 1

# Aufgabe löschen
todo delete 2

# Aufgaben-Listen anzeigen
todo lists

systemd

# Timer-Status
systemctl --user status vdirsyncer-sync.timer

# Service manuell starten (einmaliger Sync)
systemctl --user start vdirsyncer-sync.service

# Alle User-Timer anzeigen
systemctl --user list-timers

# Live-Log verfolgen
journalctl --user -u vdirsyncer-sync.service -f

# Log der letzten 50 Zeilen
journalctl --user -u vdirsyncer-sync.service -n 50

# Timer deaktivieren
systemctl --user disable --now vdirsyncer-sync.timer

Python-Skill direkt testen

python3 scripts/openclaw_skill.py

mailbox.org CalDAV-Endpunkte

Zweck URL
CalDAV-Basis https://dav.mailbox.org/caldav/<USER>/
Kalender-Sammlung https://dav.mailbox.org/caldav/<USER>/Kalender/
Aufgaben-Sammlung https://dav.mailbox.org/caldav/<USER>/Aufgaben/
CardDAV (Kontakte) https://dav.mailbox.org/carddav/<USER>/

Entdeckung aller Sammlungen:

curl -u "USER:PASS" -X PROPFIND https://dav.mailbox.org/caldav/ \
  -H "Depth: 1" -H "Content-Type: application/xml"

Sicherheit

Maßnahme Status
App-Passwort statt Hauptpasswort Empfohlen
vdirsyncer-Config: chmod 600 Automatisch via install.sh
.env nicht in Git In .gitignore eingetragen
HTTPS für CalDAV dav.mailbox.org erzwingt TLS
pass(1)-Integration Optional via pass + python3-keyring

Fehlerbehebung

vdirsyncer: [Errno 111] Connection refused
→ Netzwerkverbindung prüfen: ping dav.mailbox.org

vdirsyncer: Conflict!
→ Beide Seiten wurden geändert. Konflikt manuell lösen oder conflict_resolution = "b wins" in vdirsyncer.conf setzen.

khal: No calendars configured
khal rebuild-cache ausführen; Pfad in ~/.config/khal/config prüfen.

todoman: Error: No lists found
path-Eintrag in ~/.config/todoman/config.cfg prüfen; Verzeichnis ~/.local/share/vdirsyncer/tasks/ muss existieren und .ics-Dateien enthalten.

systemd-Timer läuft nach Reboot nicht
sudo loginctl enable-linger $USER ausführen (User-Session ohne Login).


Lizenz

MIT — Freie Nutzung, Veränderung und Weitergabe.