# OpenClaw Signal-Integration und täglicher Morgen-Digest Diese Anleitung beschreibt den funktionierenden Installationsweg auf dem OpenClaw-System `2026.5.6` auf ARM64/aarch64. Sie berücksichtigt die konkret aufgetretenen Stolperstellen: Java-Version, fehlende native `libsignal-client`, QR-Code-Ausgabe im Terminal, unterschiedliche CLI-Optionen bei `message send` und `cron add`, sowie den korrekten Paperless-Skillnamen. ## Ziel OpenClaw soll täglich um 08:00 Uhr Europe/Vienna eine Signal-Nachricht senden. Der Inhalt soll ein kurzer deutschsprachiger Digest sein mit: - Terminen und Aufgaben aus `caldav-kalender` für heute und morgen - neuen Dokumenten aus dem Paperless-Posteingang über den Skill `paperless` - Versand per Signal an `+436643941018` ## Voraussetzungen - OpenClaw ist installiert und läuft. - OpenClaw-Version: `2026.5.6` - Systemarchitektur: ARM64/aarch64 - `signal-cli` soll als verknüpftes Signal-Gerät verwendet werden. - Der Signal-Channel wird in OpenClaw über das Dashboard aktiviert. ## Java 25 installieren Der zuerst installierte Java-21-Stand war zu alt. Die Fehlermeldung lautete sinngemäß: ```text UnsupportedClassVersionError ... class file version 69.0 ... only recognizes ... 65.0 ``` Das bedeutet: das verwendete `signal-cli` wurde für Java 25 gebaut. Funktionierender Befehl: ```bash sudo apt update sudo apt install -y openjdk-25-jre-headless java -version ``` Falls mehrere Java-Versionen installiert sind: ```bash sudo update-alternatives --config java ``` Dort Java 25 auswählen. ## signal-cli korrekt installieren Der manuelle `/opt`-Installationsweg führte auf ARM64 zu folgendem Fehler: ```text Missing required native library dependency: libsignal-client no signal_jni in java.library.path ``` Der funktionierende Weg war daher die Paketquelle für `signal-cli` und die native Variante. Zuerst alten manuellen Symlink sichern oder entfernen: ```bash sudo mv /usr/local/bin/signal-cli /usr/local/bin/signal-cli.manual.bak 2>/dev/null || true hash -r ``` Paketquelle hinzufügen: ```bash sudo curl -sL -o /etc/apt/trusted.gpg.d/morph027-signal-cli.asc \ https://packaging.gitlab.io/signal-cli/gpg.key echo "deb [arch=arm64] https://packaging.gitlab.io/signal-cli signalcli main" \ | sudo tee /etc/apt/sources.list.d/morph027-signal-cli.list sudo apt update ``` Wichtig: Die Architektur wurde explizit auf `arm64` eingeschränkt, weil sonst eine Warnung zu `armhf` erschien: ```text Das Laden der konfigurierten Datei »main/binary-armhf/Packages« wird übersprungen ... ``` Dann `signal-cli-native` installieren: ```bash sudo apt install -y signal-cli-native ``` Das Paket `morph027-keyring` war nicht verfügbar und wurde daher nicht installiert. Der manuell abgelegte GPG-Key reichte aus. Prüfen: ```bash which signal-cli signal-cli --version ``` ## signal-cli mit Signal koppeln Der einfache Befehl: ```bash signal-cli link -n "OpenClaw" ``` führte im Terminal nur zu Fragezeichen. Das war ein Darstellungsproblem des QR-Codes. Funktionierender Weg: ```bash sudo apt install -y qrencode signal-cli link -n "OpenClaw" | tee >(xargs -L 1 qrencode -t utf8) ``` Wichtig: Den Prozess laufen lassen, bis das Handy die Verknüpfung bestätigt hat. Nicht vorher mit `Ctrl+C` abbrechen. Auf dem Handy: ```text Signal → Profilbild → Verknüpfte Geräte → Neues Gerät verknüpfen ``` Dann den QR-Code scannen. ## Signal-Channel in OpenClaw aktivieren Im Dashboard: ```text Kommunikation → Channels → Signal ``` Dort Signal aktivieren und die passenden Felder setzen. Empfohlene Werte: ```json5 { enabled: true, cliPath: "signal-cli", dmPolicy: "pairing", allowFrom: [], configWrites: true, historyLimit: 50 } ``` Falls ein Feld **Signal Account** vorhanden ist, dort die Signal-Nummer im internationalen Format eintragen: ```text +43... ``` Danach den Gateway neu starten: ```bash openclaw gateway restart openclaw channels status ``` ## Signal-Versand testen In OpenClaw `2026.5.6` verwendet `message send` nicht `--to`, sondern `--target`. Funktionierender Test: ```bash openclaw message send \ --channel signal \ --target "+436643941018" \ --message "OpenClaw Signal-Test" ``` Wenn diese Nachricht ankommt, ist der Signal-Channel korrekt eingerichtet. ## Täglichen Morgen-Digest anlegen Wichtig: Bei `cron add` heißt die Zieloption in dieser OpenClaw-Version **nicht** `--target`, sondern `--to`. Korrektes Kommando: ```bash openclaw cron add \ --name "Signal Morgen-Digest" \ --cron "0 8 * * *" \ --tz "Europe/Vienna" \ --session isolated \ --message "Erstelle täglich auf Deutsch einen kompakten Morgen-Digest. Nutze caldav-kalender für Termine und Aufgaben für heute und morgen. Nutze paperless für neue Dokumente im Paperless-Posteingang. Melde neue Paperless-Dokumente nur einmal und verwende dafür persistentes Tracking. Abschnitte: Termine heute, Termine morgen, Aufgaben, Neue Paperless-Dokumente. Wenn leer: Keine." \ --announce \ --channel signal \ --to "+436643941018" ``` Der korrekte Paperless-Skillname ist: ```text paperless ``` nicht: ```text papaerless ``` ## Gateway-Scope-Freigabe Beim Anlegen des Zeitplans kann eine Gateway-Freigabe notwendig sein. Die Fehlermeldung sieht etwa so aus: ```text scope upgrade pending approval pairing required: device is asking for more scopes than currently approved ``` Dann im Dashboard unter Geräte oder Approvals die Scope-Erweiterung genehmigen. Alternativ per CLI prüfen: ```bash openclaw devices list openclaw approvals get ``` Danach den `openclaw cron add ...` Befehl erneut ausführen. ## Zeitplan prüfen und manuell starten Zeitpläne anzeigen: ```bash openclaw cron list ``` Beispiel für den angelegten Job: ```text ID Name Schedule 257ad34d-5e96-47a2-a06d-1b9a792e6687 Signal Morgen-Digest cron 0 8 * * * @ Europe/Vienna ``` In dieser Version erwartet `openclaw cron run` die Job-ID, nicht den Namen. Funktionierender manueller Start: ```bash openclaw cron run 257ad34d-5e96-47a2-a06d-1b9a792e6687 ``` Erfolgreiche Ausgabe: ```json { "ok": true, "enqueued": true, "runId": "manual:257ad34d-5e96-47a2-a06d-1b9a792e6687:..." } ``` Läufe prüfen: ```bash openclaw cron runs ``` ## Merksätze für diese OpenClaw-Version ```text openclaw message send → --target openclaw cron add → --to openclaw cron run → Job-ID verwenden, nicht den Namen Paperless-Skill → paperless ``` ## Quellen - OpenClaw Channel-Konfiguration: https://docs.openclaw.ai/gateway/config-channels - OpenClaw CLI-Referenz: https://docs.openclaw.ai/cli - signal-cli Projekt: https://github.com/AsamK/signal-cli - signal-cli Debian/Ubuntu-Pakete: https://packaging.gitlab.io/signal-cli/ - signal-cli Provisioning/Linking: https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)