NEWS
ioBroker Signal Nachrichten
-
Ich bin neu hier und auch in der Welt des Smarthome. Da ich ein NAS zuhause habe ist der ioBroker jetzt als Docker auf meiner QNAP. Das funktioneirt auch super die Einrichtung von Alexa war mir möglich. Jetzt habe ich gesehen das man auch Nachrichten an Signal damit schicken kannst.
Ich habe da eine Anleitung gefunden die für den PI gemacht worden ist. Die Befehle kontne ich Auch im Docker absetzen. Das hat auch so weit geklappt.
angefangen habe ich mit
sudo apt update
sudo apt upgrade (Optional. Danach sollte man "sudo reboot" eingeben)
sudo apt install default-jdk
sudo apt-get install qrencodeDann habe ich die Pakte runter geladen bei
wget http://www.elzershark.com/iobroker/rpi_signal-cli-0.8.1.tar
wget https://github.com/AsamK/signal-cli/releases/download/v0.8.3/signal-cli-0.8.3.tar.gz
das ging auch noch die nächsten Befehle musste ich anpassen
sudo tar xf rpi_signal-cli-0.8.1.tar -C /opt/iobroker
sudo tar xf signal-cli-0.8.3.tar.gz -C /opt/iobroker
Das iobroker musste ich hinzufügen damit es gefunden wird.Dann habe ich das neuere Programm Aktiviert
sudo ln -sf /opt/iobrokersignal-cli-0.8.3/bin/signal-cli /usr/local/bin/
auch hier habe ich das iobroker hinzugefügt.Damit war das Modul installiert und ich konnte es auch bedienenJetzt wollte ich mit einen QR Code erstellen lassen mit dem befehl
sudo -u iobroker signal-cli link -n "iobroker" | tee >(xargs -L 1 qrencode -t utf8)
Leider funktioniert das nicht ich bkomme folgende Fehlermeldung
Benutzung: signal-cli link [-h] [-n NAME]signal-cli: Fehler: nicht berücksichtigte Argumente: '| tee >(xargs -L 1 qrencode -t utf8)'
So kann ich keine verbunden Geräte einbinden da ich den QR Code scannen muss.
Ich wollte dann aber testen ob es überhaut funktionert also habe ich eine alte Sim genommen wo ich sms empfangen kann.
habe dann mit dem Befehl
sudo -u iobroker signal-cli -u +49meinenummer register --captcha 03AGdBq27_3MFkj4Auugs8SI2vJ1QGiH8Y3xERyhW1fYfTI1OTG9COfg8STpslDZQme3sZ_vUFTmVq9nyXVjzIdt2bm5CMl8iLfM0zEuGl2-o5LkOdPMbk-cUqZhCIIqU1ApvoSAglZO0jrkJB6WQI2POUoal5n1zdvlPPqqA0_EPzFj6EJ_spMPFY-wPtbYJMeGh9TtP62MWTRHNTkXBf0lcA8is7mer97RLsZrrpSenR706mL4mwZDp1K8S1eoquO5dhYeJ-FdL-qei_S1KqAT__cNgIfw4eOIXHbzdETdipQ8ZsjiWPMPaIbd8SNj_qf_R4l1OjOGt_5babZXoB4LVMaUacCQGqlNIpERDGoHaitBCePgaFKU0Z_iObhUM_5TM6NHOanp8ijQMxzw2lW513jPkMgm8IuaOrH7FtzIe7X_MqC-s3Nb7pWIz5FmMx-uF16ooQgQ0CbajXK0Eh8a074INfWp55OEzO1XioGNt7EkS61GCBMqoxLqvZ64XROgeskxONKBeaKFCFm_s2dAsdeGMF4Et0XQ
Einen Code angefordert mit dem erhalten Code habe ich dannsudo -u iobroker signal-cli -u +49meinenummer verify 123-456
Die nummer ferei geschaltetJetzt kann ich mit dem Befehl
sudo -u iobroker signal-cli -u +49ibrokernummer send -m "Sascha lässt Grüßen!" +49empängernummer
Auch nachrichten verschicken.Dann habe ich den Adapter javascript.0 installiert und den haken bei exec erlauben gesetzt.
Jetzt soll es ausreichen wenn man ein skrip mit Blocky erstellt dort das exec modul mit dem Befehl
signal-cli -u +49sender send -m "Sascha lässt Grüßen!" +49empfänger
eigentlich eine nachricht versenden.
Leider kommt die fehlermeldung
javascript.0 (2284) Stop script script.js.Signal.Signal
Jetzt weiß ich nicht weiter.
Weiß jemand was ich falsch mache? -
So jetzt habe ich das ganze nicht als Blocky erstellt sondern direkt als Javascript
exec('signal-cli -u +49sender send -m "Sascha lässt Grüßen!" +49empfänger')
Da funktioniert es. Ich verstehe nicht warum aber bei dem einfach befehl geht das noch. ich weiß nur nicht wie ich das jetzt einbauen kann. Wenn ich zum beispiel mir eine nachricht zu schicken möchte das die Tür geöffnet worden ist.
-
@saschame
Ich habe heute auch Signal installiert, lief alles bestens.
Nun wollte ich auch mit Blockly ein Script erstellen, allerdings werden hier keine Nachrichten versendet.
Auch nicht mit Java. Hast du da noch was gemacht?Zu deiner Frage, mach es mal so
-
-
@ahnungsbefreit Wusste nicht dass es da einen gibt!?
Der ist wohl noch in beta oder? -
hab meinen Fehler nun selbst gefunden.
Hab das ganze am Slave installiert und hab das Skript am Master geschrieben, kann dann natürlich nicht funktionieren. -
@michi_pi Du hast Recht, ich habe da was verwechselt. Es gibt aber einen Adapter Request hier und da in den Kommentaren wird auch auf den Artikel in der c't mit dem Kommandozeilen Tool für Signal verwiesen, das hatte ich noch im Hinterkopf und dachte, dann ist der Weg zum Adapter ja nicht mehr weit...
-
@saschame da ich jetzt einige Stunden darauf verwendet habe, eine Variable in den zu sendenden Text einzubauen, will ich mein Ergebnis hier teilen; vielleicht hilft's ja jemandem.
Ich habe zunächst das Blockly-Beispiel von Elzershark aus seinem Forum genommen, wo immerhin schon neben fixem Text ein Variablenwert ergänzt wurde. Ich habe das Beispiel auf einen Variablenwert reduziert - also die festen Texte entfernt- , mir den JS-Code kopiert und diesen dann in einem JS-Skript laufen lassen. Ging auch. Dann wollte ich eine globale Funktion definieren, an die ein zuvor konstruierter String zum Senden übergeben wird. Dann wurd's erwas kompliziert mit 2 Sorten Anführungszeichen und Kommata. Verstanden hab ich es nicht 100%ig - auch weiß nicht nicht was .join('') am Ende bewirkt - , aber so funktioniert es immerhin:
Globale Funktion:
function SignalSend (SignalText) {
exec((['signal-cli -u +49172xxxxxxx send -m ', SignalText ,' +49172xxxxxxx'].join('')));
return;
}let DAX = "'Der DAX steht bei " + getState('0_userdata.0.DAX30').val + " Punkten.'";
SignalSend (DAX);Es geht auch ohne Text in der simplen Form
let DAX = getState('0_userdata.0.DAX30').val;Doch wenn man Text vor den Wert stellt, muss man m.E. den String mit einem Hochkomma vorne beginnen lassen und hinter dem Wert ein Hochkomma in Anführungsstrichen folgen lassen, also:
let DAX = "'Der DAX liegt jetzt etwa bei " + getState('0_userdata.0.DAX30').val + "'";Nachtrag:
Damit man sich keine Gedanken machen muss und einfach grundsätzlich einen "normalen" String an die globale Funktion übergeben kann, würde ich in der Globalfunktion zwei Hochkommata zwischen Anführungsstrichen ergänzen. Selbst wenn sie nicht gebraucht werden , stören sie wohl nicht:exec((['signal-cli -u +49172xxxxxxx send -m ',"'"+ SignalText +"'",' +49172xxxxxxx'].join('')));