Wenn Cloud-basierte Dienste in der Lage sind Signal-Nachrichten zu versenden, dann müsste das mein lokales System doch ebenfalls können. Gefunden habe ich bei meiner Suche ein kleines Projekt auf GitHub, welches genau dies ermöglicht: https://github.com/AsamK/signal-cli. Also genau das, was ich suchte um von der Kommandozeile aus Nachrichten zu versenden.
Mein IO-Broker läuft auf Ubuntu 24.04. Sinngemäß funktioniert diese Anleitung auch für andere Systeme sowie einer Raspberry Pi basierten Lösung oder was auch immer. Zusammengefasst: Irgendeine Linux-Anwendung soll Nachrichten per Signal versenden. In dem Fall, oder bei den kommenden Ubuntu-Versionen, müssen die entsprechenden Versionsnummern der eingesetzten Software geändert werden.
Installation
# Zum Benutzer iobroker wechseln sudo -u iobroker bash # Signal darüber informieren, sich zu verbinden signal-cli link -n iobroker > /tmp/signal.txt & # Kurz warten und den QR-Code erstellen qrencode -t ANSI `cat /tmp/signal.txt`
# Natürlich sollte hier das jeweils aktuelle Release von der GitHub Seite ausgewählt werden ;-) wget https://github.com/AsamK/signal-cli/releases/download/v0.13.9/signal-cli-0.13.9.tar.gz # entpacken ... tar xvfz signal-cli-0.13.9.tar.gz # ... und nach /opt verschieben. Wie erklärt noch den SymLink setzen. mv signal-cli-0.13.9 /opt/ ln -sv signal-cli-0.13.9/ signal-cli # Falls noch nicht vorhanden: Java installieren apt install openjdk-21-jre # Und gleich noch qrencdoe apt install qrencode
Hierbei wird via signal-cli der Link-Vorgang initiiert. Dies muss gestartet werden und läuft im Hintergrund weiter. Für den Fall, dass man zu langsam ist und die Sitzung beendet wird, beginnt man einfach nochmals von vorne. Sobald der Link-Vorgan im Hintergrund läuft, kann man den QR-Code erstellen. Damit dieser korrekt dargestellt wird, sollte die Konsole entsprechend groß genug sein. Sobald man den QR-Code hat wechselt man zum Smartphone, startet Signal und wählt Einstellungen/Gekoppelte Geräte/Neues Gerät und folgt den Anweisungen. Signal ist nun verbunden, in der Liste der vertrauten Geräte erscheint der IO-Broker.
Integration in IO-Broker
Eine erste Testnachricht wird wie folgt verschickt:
date | ./signal-cli -u +49177....24 send --notify-self --message-from-stdin +49177....24
Die Nummer ist natürlich gegen die eigene Handynummer zu tauschen. Es sollte eine Notiz an einen selbst ankommen.
Um aus IO-Broker heraus einfacher Nachrichten versenden zu können, habe ich den obigen Befehl in ein kurzes Shell-Skript gepackt. Auch hier ist die eigene Nummer entsprechend anzupassen.
#!/bin/sh
# Ein einfaches Hilfsskript um per Signal-Nachrichten zu versenden
NO="+49177....14"
cat | /opt/signal-cli/bin/signal-cli -u $NO send --notify-self --message-from-stdin $NO
Dieses Skript habe ich unter /usr/local/bin/signal-send
abgelegt. Zeit, das Ganze im IO-Broker zu integrieren. Dafür habe ich ein einfaches Blockly-Skript erstellt. Die Variable Message dient hier nur als Platzhalter und kann natürlich um beliebige Objekte erweitert oder ausgetauscht werden.
Fertig
Die Testnachricht kam an, alles funktioniert wie es soll. Mein IO-Broker teilt mir nun das ein oder andere wichtige Ereignis via Signal mit: Die Waschmaschine im Keller, welche fertig ist und noch viele weitere, spannende Dinge.