Da ich whatsapp nicht mag, keine Lust auf jabber habe und trotzdem unterwegs ggf. mal ne Info von FHEM haben will, habe ich mit der nagelneuen textsecure-cli was gebaut. Funktioniert hier auf den ersten Blick astrein.
Ist bisher nur eine Richtung, d.h. FHEM an Handy. Die Software ist aber grundsätzlich bidirektional. Eventuell kann man zukünftig so auch Fotos von einer Webcam verschicken, wenn jemand an der Tür klingel etc.
Wer sich fragt, warum Textsecure, findet bei Wikipedia (https://de.wikipedia.org/wiki/TextSecure) etliche Gründe. Kurzum ist es ein Programm wie Whatsapp, bloß OpenSource unter der GPL3 mit vernünftiger End-zu-End-Verschlüsselung. Textsecure verwendet unter Android GCM, weshalb die Nachrichten sofort auftauchen. Alles was an Heimautomation von außen erreichbar wird, sollte ziemlich wasserdicht sein, weshalb Textsecure eine naheliegende Lösung ist, um von unterwegs mit FHEM zu kommunizieren.
Ist etwas detailierter, da auf meinem Banana-pi unter Debian nur ein altes go 1.0.x vorhanden war, erstmal ein aktuelles bauen: siehe auch https://golang.org/doc/install/source
Kann hinterher alles wieder geloescht werden, da die go gebauten binaries static sind (d.h. sie laufen stand-alone ohne irgendwelche Libs).
root@fhem:~# apt-get install mercurial
root@fhem:~# hg clone -u release https://code.google.com/p/go
root@fhem:~# cd go/src
root@fhem:~/go/src# ./all.bash
# Building C bootstrap tool.
cmd/dist
# Building compilers and Go bootstrap tool for host, linux/arm.
lib9
libbio
...
ALL TESTS PASSED
---
Installed Go for linux/arm in /root/go
Installed commands in /root/go/bin
*** You need to add /root/go/bin to your PATH.
Nun das Textsecure holen und bauen:
root@fhem:~# mdir ~/gocode
root@fhem:~# export GOPATH=~/gocode
root@fhem:~# ./go/bin/go get github.com/janimo/textsecure/cmd/textsecure
root@fhem:~#
Wenn das oben ohne Fehler fertig ist, hat alles geklappt. Nun die Demo-Config holen und mal testeN.
root@fhem:~# cp -R gocode/src/github.com/janimo/textsecure/cmd/textsecure/.config/ ~
root@fhem:~# vim ~/.config/config.yml
# Telefonnummer eintragen, es gehen auch Festnetz-Nummern, dann aber logischerweise den verificationType auf voice stellen. Dann ruft da ein Roboter an und gibt einem den Code durch. Der ist relativ schnell und wiederholt nichts. Deswegen was zu schreiben bereitlegen.
root@fhem:~# ./gocode/bin/textsecure
Enter verification number (without the '-')>537723 # <- Das ist der vom Anruf oder von der SMS
2014/12/21 00:24:45 Registration done
Nun wird unter /root/.storage alles nötige angelegt (keys).
Jetzt kann man es direkt zu seinem Handy mal ausprobieren. Das ist eine session, wo man quasi chatten kann.
Wichtig ist, dass es aus dem Ordner aufgerufen wird, in dem die .config und .storage liegt. Man kann leider keinen Pfad zur Config angeben, zumindest habe ich da jetzt in den Parametern des Binarys nix gefunden.
root@fhem:~# ./gocode/bin/textsecure -to "+4915xxxxxx"
>test
Works
>^Croot@fhem:~#
Nun das ganze für fhem verfügbar machen:
root@fhem:~# mkdir -p /opt/textsecure/bin
root@fhem:~# cp gocode/bin/textsecure /opt/textsecure/bin
root@fhem:~# mkdir /opt/fhem/ts
root@fhem:~# cp -R .config/ .storage/ /opt/fhem/ts
root@fhem:~# chown fhem:dialout -R /opt/fhem/ts
root@fhem:/opt/fhem/ts# sudo -u fhem /opt/textsecure/bin/textsecure -to="+4915xxxxx"
>adf
root@fhem:/opt/fhem/ts#
Last but not least, die helper-function einfügen. Muss leider kurzzeitig das working-directory ändern, damit das .config und .storage ordentlich gefunden wird.
root@fhem:/opt/fhem# cat FHEM/99_myUtils.pm
package main;
use strict;
use warnings;
use Cwd;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
######################################################
# Aufgabe :Versenden von textsecure
# Parameter 1:Nummer Format +4917012345678
# Parameter 2:Message
#
sub sendTextsecure($$)
{
my ($nr, $Message) = @_;
my $dir = getcwd();
chdir "/opt/fhem/ts/";
Log 3, "sendTextsecure Nr: ". $nr . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("/opt/textsecure/bin/textsecure -to=\"$nr\" -message=\"$Message\"");
chdir "$dir";
}
1;
root@fhem:/opt/fhem#
Fast fertig, noch ein schlankes
reload 99_myUtils.pm
in FHEM
und dann kann man auch schon loslegen:
define test at *00:41 { sendTextsecure("+4915xxxxxxx", "test") }
Nachdem jetzt folgende Änderung Eingang gefunden hat Fix attachment sending and receiving. (https://github.com/janimo/textsecure/commit/60709ab5545f8416364c776edfe491e01a2bbbb0), funktioniert nun auch der Versand von Attachments hervorragend.
Vorstellbar sind der Versand von Audio-Files (z.B. vom Anrufbeantworter der Fritzbox holen und per Textsecure verschicken oder ein Raummikro aktivieren, wenn Bewegung ausgelöst wurde), Webcam-Fotos oder sogar Videos.
Beispiel, es klingelt an der Tür, direkt Foto oder Video machen und zurückschicken.
Hierzu einfach in der /opt/fhem/FHEM/99_myUtils.pm noch die folgende Subroutine ergänzen:
sub sendTextsecureAttachment($$)
{
my ($nr, $Message) = @_;
my $dir = getcwd();
chdir "/opt/fhem/ts/";
Log 3, "sendTextsecure Nr: ". $nr . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("/opt/textsecure/bin/textsecure -to=\"$nr\" -attachment=\"$Message\"");
chdir "$dir";
}
Wenn man nun eine IPCam wiefolgt hat:
define IPCam IPCAM 192.168.178.40:8080
attr IPCam snapshots 3
attr IPCam delay 3
attr IPCam path shot.jpg
attr IPCam event-on-update-reading snapshots
attr IPCam storage /opt/fhem/snapshots/
Kann man leicht bei z.B. Bewegung sich ein Bild aufs Handy schicken lassen.
define bewegungssensorSendFoto notify Bewegungsmelder1:motion ({ sendTextsecureAttachment("+491xxxxxxxxx","/opt/fhem/snapshots/IPCam_snapshot.jpg") })
Wenn man sich die schönen Graphiken zuschicken lassen will, geht so etwas leicht:
Zitat
system("wget -q -O - 'http://fhem:8083/fhem/SVG_showLog?dev=SVG_FileLog_t.wohnzimmer_Climate_1&logdev=FileLog_t.wohnzimmer_Climate&gplotfile=SVG_FileLog_t.wohnzimmer_Climate_1&logfile=CURRENT&pos=' | convert -density 1200 - /tmp/out.png);
Und
({ sendTextsecureAttachment("+491xxxxxxxxx","/tmp/out.png") })
Da jetzt das Schicken von Bildern so gut klappt, habe ich bei dem Statusbild (http://forum.fhem.de/index.php?topic=21821.0) für Kindle-Reader etwas geklaut.
Wichtig ist, dass man am Ende den convert-Aufruf in der 99_myUtils.pm so ändert, dass er einen weißen statt transparenten Hintergrund baut:
system("convert $Ausgabedatei.svg -background white -flatten -type GrayScale -depth 8 $Ausgabedatei.png &");
Und dann am Ende noch ein zusätzliches:
Zitat
{ sendTextsecureAttachment("+491xxxxxxxxxx","/opt/fhem/snapshots/KindleDisplay.png") }
Ansonsten kommen da jetzt niedliche kleine Statusbilder.
Hallo habs mal installiert funkioniert recht gut ,
nun meine frage wie kann man ein *.txt versenden ?
{ sendTextsecureAttachment("+491xxxxxxxxxx","/opt/fhem/log/Seriell.txt") }
So bekomm ich Anwort :Doppelte Nachricht
{ sendTextsecure("+4917xxxxxxxxx","/opt/fhem/log/Seriell.txt") }
So bekomm ich Antwort : "/opt/fhem/log/Seriell.txt"
kann mir einer helfen ??
Gruß otto
Bisher sind wohl nur Medien-Attachments (https://github.com/WhisperSystems/TextSecure/issues/993) vorgesehen.
Textfiles kann man aber einfach als Text direkt in Textsecure schicken.
Ich würde das umgekehrt einlesen und nur die letzten x Zeilen schicken. Dafür hab ich mal einen kurzen Proof of Concept geschrieben:
Das passende CPAN-Modul installieren:
sudo apt-get install libfile-readbackwards-perl
Dann oben in der 99_myUtils.pm das eintragen:
use File::ReadBackwards;
Folgende Sub schickt dann die letzten X Zeilen aus einem Logfile:
sub sendTextsecureLog($$$)
{
my ($nr, $logfile,$numlines) = @_;
my $dir = getcwd();
my $Message="Sending last $numlines Lines from $logfile:\n";
my $line;
chdir "/opt/fhem/ts/";
my $bw = File::ReadBackwards->new( $logfile ) or return "can't read 'log_file' $!" ;
while ($numlines >0 and defined($line= $bw->readline ) ) {
$numlines--;
$Message.=$line;
}
Log 3, "sendTextsecure Nr: ". $nr . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("/opt/textsecure/bin/textsecure -to=\"$nr\" -message=\"$Message\"");
chdir "$dir";
}
Auf dem Telnet-Prompt dann einfach hiermit testen...
{ sendTextsecureLog("+4915xxxxxx", "/opt/fhem/log/fhem-2015-01.log", 10) }
Sorry meine Frage aber anscheinend liest ja dein Modul auch aus einem File oder ?
So könnte ich ja mit deiner Verson mein file Senden ?
oder versteh ich das falsch ?
Habs Versucht bekomm beim speichern der 99_myUtils.pm :
ERROR:
Undefined subroutine &main::myUtils_Initialize called at fhem.pl line 2019.
wenn ichs dan Teste bekomm ich wieder "doppelte Nachricht" aufs Handy
Ka was da fehtlt ?
Gruß otto
Genau, damit kannst Du Textdateien verschicken.
Du hast irgendwas in Deiner 99_myUtils.pm falsch gemacht.
So sieht meine vollständig aus und damit geht es:
package main;
use strict;
use warnings;
use Cwd;
use File::ReadBackwards;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
######################################################
# Aufgabe :Versenden von textsecure
# Parameter 1:Nummer Format +4917012345678
# Parameter 2:Message
#
sub sendTextsecure($$)
{
my ($nr, $Message) = @_;
my $dir = getcwd();
chdir "/opt/fhem/ts/";
Log 3, "sendTextsecure Nr: ". $nr . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("/opt/textsecure/bin/textsecure -to=\"$nr\" -message=\"$Message\"");
chdir "$dir";
}
######################################################
# Aufgabe :Versenden von Attachments via textsecure - derzeit gehen nur Audio, Video und Bilder
# Parameter 1:Nummer Format +4917012345678
# Parameter 2:Pfad+Dateiname zu Attachment
#
sub sendTextsecureAttachment($$)
{
my ($nr, $Message) = @_;
my $dir = getcwd();
chdir "/opt/fhem/ts/";
Log 3, "sendTextsecure Nr: ". $nr . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("/opt/textsecure/bin/textsecure -to=\"$nr\" -attachment=\"$Message\"");
chdir "$dir";
}
######################################################
# Aufgabe :Versenden der letzten x Zeilen von Textdateien via textsecure
# Parameter 1:Nummer Format +4917012345678
# Parameter 2:Pfad+Dateiname zu Textdatei
# Parameter 3:Die letzten wieviel Zeilen gesendet werden sollen
#
sub sendTextsecureLog($$$)
{
my ($nr, $logfile,$numlines) = @_;
my $dir = getcwd();
my $Message="Sending last $numlines Lines from $logfile:\n";
my $line;
chdir "/opt/fhem/ts/";
my $bw = File::ReadBackwards->new( $logfile ) or return "can't read 'log_file' $!" ;
while ($numlines >0 and defined($line= $bw->readline ) ) {
$numlines--;
$Message.=$line;
}
Log 3, "sendTextsecure Nr: ". $nr . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("/opt/textsecure/bin/textsecure -to=\"$nr\" -message=\"$Message\"");
chdir "$dir";
}
1;
Hab das von dir reingeschrieben Bekomm ich den Fehler :
Can't locate File/ReadBackwards.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 5. BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 5.
Was muß ich alles nachinstallieren, und wo bekomm ich das her?
Gruß otto
Zitat von: otto am 13 Januar 2015, 18:24:16
Was muß ich alles nachinstallieren, und wo bekomm ich das her?
Steht doch oben:
sudo apt-get install libfile-readbackwards-perl
Sorry hab ich überlesen ::)
Gruß otto
Hallo noch eine Frage dazu der Text wird von unten nach oben gelesen und so Zeilenweise gesendet
So kommt er bei Fhem rein:
1.1.2015 12:02 Störung im
Netzteil
1.1.2015 12:03 Rücketzen
so wird gesendet
1.1.2015 12:03 Rücketzen
Netzteil
1.1.2015 12:02 Störung im
kann man das umkehren ?
Gruß otto
Zitat von: otto am 15 Januar 2015, 22:54:45
der Text wird von unten nach oben gelesen und so Zeilenweise gesendet
kann man das umkehren ?
Streiche:
$Message.=$line;
Setze:
$Message=$line.$Message;
Hallo malted,
bin begeistert von Deiner Anleitung. Vielen Dank für Deine Mühe!
Der opa007
Hallo malted,
bei mir ist bei der Installation irgendetwas schief gelaufen auf dem RasPi. Ich habe versucht, alles zu löschen, um noch einmal von vorne beginnen zu können, das gelingt mir aber nicht.
Es hat alles zunächst geklappt und ich habe auch den Code per SMS bekommen.
...
real 26m50.363s
user 20m58.890s
sys 3m22.900s
# Checking API compatibility.
Go version is "go1.4", ignoring -next /root/go/api/next.txt
real 3m33.505s
user 2m54.520s
sys 0m11.930s
ALL TESTS PASSED
---
Installed Go for linux/arm in /root/go
Installed commands in /root/go/bin
*** You need to add /root/go/bin to your PATH.
root@raspi:~/go/src#
Den SMS code habe ich eingegeben und es kam die Rückmeldung "Registration done", nur kam kein prompt mehr, der RasPi war also beschäftigt. Ich habe die Session über Nacht offen gelassen und heute morgen war der Bildschirm mit einem "EOF" je Zeile voll. Ich habe die Session geschlossen und eine Neue aufgemacht. Wenn ich jetzt versuche, eine Nachricht zu schicken, kommt ein panic:
root@raspi:~# ./gocode/bin/textsecure -to "+4917xxxxxxxx"
>Duplicate message: expected 1, got 0
panic: runtime error: slice bounds out of range
Hast du eine Idee, wie ich das gefixt bekomme bzw. was ich alles löschen muss, um noch mal vor vorne anfangen zu können?
Das gleiche Problem habe ich hier auf einem ganz normalen laptop mit ubuntu auch. Die "Registration Done" muss man mit CTRL-C beenden (sonst tut sich da nix) und bei jedem SEND kommt ein Panic.
Zitat von: fu_zhou am 30 Januar 2015, 10:12:40
Hallo malted,
Hast du eine Idee, wie ich das gefixt bekomme bzw. was ich alles löschen muss, um noch mal vor vorne anfangen zu können?
Sorry, da bin ich echt überfragt.
Neustarten kannst du mit einem
rm -r .storage .config/config.yml gocode
export GOPATH=~/gocode
./go/bin/go get github.com/janimo/textsecure/cmd/textsecure
den aktuellen Code bauen.
Ich schlage vor, du machst mal ein Issue auf:
https://github.com/janimo/textsecure/issues
Hallo malted,
das ist eine nette Geschichte mit Textsecure. Ich wollte das selber mal ausprobieren, benutze aber textsecure schon auf dem Android-Telefon. Wenn ich bei der Registrierung die entsprechende Telefonnummer angeben, kommt aber kein Registration Code auf dem Telefon an. Das liegt möglicherweise daran, das die Nummer eben schon registriert ist? Hast Du eine Ahnung, ob man immer eine zusätzliche SIM-Karte mit einer neuen Nummer braucht zur Registrierung? Und nach der Registrierung braucht man die nicht mehr, da der Rechner dann ja per Internet kommuniziert?
VG TomNo
Zitat von: TomNo am 04 März 2015, 14:15:08
Das liegt möglicherweise daran, das die Nummer eben schon registriert ist?
Vermutlich...
Zitat
Hast Du eine Ahnung, ob man immer eine zusätzliche SIM-Karte mit einer neuen Nummer braucht zur Registrierung? Und nach der Registrierung braucht man die nicht mehr, da der Rechner dann ja per Internet kommuniziert?
Die Telefonnummer ist der Identifier innerhalb von Textsecure. Du brauchst eine eigene Telefonnummer. Das kann aber auch eine Festnetznummer sein. Einfach die Benachrichtung auf 'voice' stellen und die registrieren. Wenn Du keine festnetznummer hast, kannst Du dir bei sipgate kostenlos eine holen.
Hallo gibt es eine möglichkeit verschiedene Wörter rauszufiltern bzw auch Leerzeilen?
das aus sowas :
2015-06-15_18:07:56 Seriell UNKNOWNCODE 000
2015-06-15_18:08:05 Seriell UNKNOWNCODE 83: Mon 15-Jun-15 17:55:50: ZENTRALE ZUR�CKSETZEN
2015-06-15_18:10:14 Seriell UNKNOWNCODE 000
2015-06-15_18:10:22 Seriell UNKNOWNCODE 84: Mon 15-Jun-15 17:58:08: ZENTRALE ZUR�CKSETZEN
so was wird:
2015-06-15_18:07:56
2015-06-15_18:08:05 83: Mon 15-Jun-15 17:55:50: ZENTRALE ZUR�CKSETZEN
2015-06-15_18:10:22 Seriell UNKNOWNCODE 84: Mon 15-Jun-15 17:58:08: ZENTRALE ZUR�CKSETZEN
Gruß Otto
Tolle Anleitung. Vielen Dank!
In neueren Versionen kann man übrigens den Pfad zu .config über die Kommandozeile angeben!
Grüße
Nick
Wie könnte man denn integrieren, dass FHEM auch Nachrichten empfangen kann?
du kannst einfach den textsecure auf einer Nummer laufen lassen und alle zeilen an fhem schicken. Geht bestimmt irgendwie eleganter, aber müßte so funktionieren.
einen dummy anlegen
define textsecure_incoming dummy
root@fhem:/opt/fhem/ts# sudo -u fhem /opt/textsecure/bin/textsecure -to="+49157xxxxxxxxx" | while read line; do mes=$(echo $line| sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" | awk '{ print substr($0, index($0,$5)) }'); echo setreading textsecure_incoming message "$mes" | nc -q 1 fhem 7072 ; done
das sed löscht die Farb-Codes und das Awk zeigt Spalte 5 bis Zeilenende raus, damit wir nicht noch mal die Absendenummer und den Timestamp zusätzlich bekommen.
Mittels logging kann man dann alle Nachrichten wegschreiben. Und reagieren sollte auch mittels DOIF einfach sein. z.B.
define ts_react DOIF ([textsecure_incoming:message] eq "preheat") ({ sendTextsecure("+4915xxxxxxxx", "Heize vor") }, {set heater on})
Ansonsten kann man auch irgendwie die telnet-session von fhem per textsecure tunneln.
mkfifo ts
nc fhem 7072 < ts | sudo -u fhem /opt/textsecure/bin/textsecure -to="+4915xxxx" > ts
Das geht zumindest so weit, dass man vom handy cmds schicken kann und die antworten vom fhem-server sieht. Das hakt noch wegen der Farbcodes ("[35"), wer das wirklich will, bekommt das aber wohl leicht gelöst.
Supervielen Dank!
Klappt prinzipiell schonmal prima. Wie kann ich den Befehl denn absetzen, so dass die Shell nicht blockiert?
Ich hab's in einem Screen laufen lassen (apt-get install screen).
§ screen -R textsecure
Dann öffnet sich eine neue Shell, die man mit ctrl+a und dann 'd' detachen kann.
Ich habe heute plötzlich nur noch "Fehlerhaft verschlüsselte Nachricht"en von meinem Textsecire/Signal ausf Handy bekommen. Also habe ich den Ordner .storage gelöscht und wollte textsecure/signal neu registrieren. Per Voice wurde mit der Code durchgegeben. Das Registrieren hat geklappt. Doch jetzt bekomme ich beim Aufruf von textsecure folgende Fehlermeldung:
Could not get contacts: status code 401
websocket.Dial wss://textsecure-service.whispersystems.org:443/v1/websocket/?login=%2BXXXXXX&password=XXXXXX: bad status
Ich vermute ja, dass der Client nicht mehr kompatibel ist. Anscheinend wurde da auch schon seit Jahren nix mehr geändert.
Hat jemand eine Alternative für linux?
Zitat von: Thargor am 18 Oktober 2017, 22:23:01
Ich vermute ja, dass der Client nicht mehr kompatibel ist. Anscheinend wurde da auch schon seit Jahren nix mehr geändert.
Hat jemand eine Alternative für linux?
Also bei mir funktioniert das nach wie vor ohne Probleme. Das muss an Deiner Installation liegen.
Möglicherweise liegt es auch daran, dass Textsecure nun Signal ist und es eine eigene Signal-CLI https://github.com/AsamK/signal-cli (https://github.com/AsamK/signal-cli) gibt, die etwas anders zu funktionieren scheint. Vielleicht hat sich da auch das Backend geändert.
Ich habe es mit Signal aber hinbekommen. Die Basis war der erste Post dieser Diskussion.
Falls gewünscht, kann ich gerne die Schritte posten, die ich vorgenommen habe. Vielleicht kann sich jemand daran orientieren.
Schlussendlich ist es aber schon recht gut auf der Github-Seite der Signal-CLI beschrieben.
Nur die Anpassung an 99_myUtils.pm ist dann eine leichte Adaption dessen, was hier im ersten Poste geschrieben worden ist.
Zitat von: Bubinator am 14 Januar 2018, 14:13:54
Falls gewünscht, kann ich gerne die Schritte posten, die ich vorgenommen habe. Vielleicht kann sich jemand daran orientieren.
nur zu 8)
Kannst du auch Nachrichten emfangen?
das würde mich auch interessieren
Das klingt interessant, da werde ich doch mal einen Versuch wagen
Hallo zusammen,
wie schon geschrieben, es ist nicht kompliziert. Ich habe es auf meine RaspberryPi, auf dem auch FHEM läuft wie folgt gemacht.
@KlausW - Laut der Beschreibung der Signal-CLI soll auch der Empfang gehen. Das habe ich aber nicht ausprobiert und entsprechend auch nichts implementiert.
1. Signal-CLI installieren (Beschreibung stammt von https://github.com/AsamK/signal-cli (https://github.com/AsamK/signal-cli)
export VERSION=<latest version, format "x.y.z">
wget https://github.com/AsamK/signal-cli/releases/download/v"${VERSION}"/signal-cli-"${VERSION}".tar.gz
sudo tar xf signal-cli-"${VERSION}".tar.gz -C /opt
sudo ln -sf /opt/signal-cli-"${VERSION}"/bin/signal-cli /usr/local/bin/
2. Nummer (USERNAME ist die Telefonnummer im Format +49171...) für Signal registrieren (Parameter --voice optional, wenn keine SMS empfangen werden kann)
signal-cli -u USERNAME register
3. Den erhaltenen Verifikationscode eingeben
signal-cli -u USERNAME verify CODE
4. Grundsätzliche Funktionalität über die Bash testen (RECIPIENT ist die Telefonnummer des Empfängers, der auch Signal haben muss im Format +49172...):
signal-cli -u USERNAME send -m "This is a message" RECIPIENT
5. Signal-Konfigurationsdatei aus Homeverzeichns nach FHEM kopieren/verschieben
cp ~/.config /opt/fhem/
6. Als FHEM-User testen (sicherstellen, dass die Berechtigungen passen)
sudo -u fhem signal-cli -u USERNAME send -m "Test aus FHEM-Verzeichnis" RECIPIENT
Das waren nun die Schritte für die Installation und den Test der Signal-CLI. Nun kommt noch meine Anpassungen an den 99_myUtils.pm. Ich bin kein Perl-Entwickler und ich habe als Basis den Code aus dem ersten Posting in diesem Threat genommen. Verbesserungen sind natürlich immer willkommen.
7. 99_myUtils.pm anpassen
package main;
use strict;
use warnings;
use Cwd;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
######################################################
## Aufgabe :Versenden von Signal-Nachrichten
## Parameter 1:Nummer des Absenders im Format +491701234567
## Parameter 2:Nummer des Empfängers im Format +491711234567
## Parameter 3:Nachricht
##
sub sendSignalMessage($$$)
{
my ($nrAbs, $nr, $Message) = @_;
my $dir = getcwd();
#chdir "/opt/fhem/ts/";
Log 3, "sendSignal Nr: ". $nr . " Absender-Nr: ". $nrAbs . " Message:\x22" . $Message . "\x22 ";
#Direkter Aufruf
system("signal-cli -u \"$nrAbs\" send -m \"$Message\" \"$nr\"");
chdir "$dir";
}
1;
8. Nachricht aus FHEM versenden:
{ sendSignalMessage("+491701234567", "+491719876543210", "Nachricht aus der FHEM-Oberflaeche") }
Das war es dann auch. Über sendSignalMessage kann man nun zu diversen Events eine Nachricht versenden. Ich nutze es zur Warnung vor zu hoher Luftfeuchtigkeit in dem Raum, wo die Waschmaschine steht.
Viele Grüße & Glück Auf!
Hallo FHEM-Gemeinde,
da ich auch Nachrichten empfangen wollte und ich das ganze auf einem Raspberry Pi mache (das senden einer Nachricht kann mit der o.g. Methode u.u. 5 minuten dauern), habe ich mich für den daemon Modus des signal-cli und dbus entschieden. Ich habe auf Github unter
https://github.com/Quantum1337/signal2fhem
einen kleinen daemon abgelegt, der auf dbus signale reagiert und bei eintreffen einer Nachricht readings über Telnet setzt.
Wenn mir jemand sagen kann wie ich mit der FHEM API auf dbus signale reagiere, kann ich anbieten ein FHEM Modul zu schreiben. Diese Frage habe ich hier:
https://forum.fhem.de/index.php/topic,84166.0.html auch schon gestellt. Bekam aber leider keine antwort.
EDIT:
Siehe:
https://github.com/Quantum1337/32_SiSi.pm
https://forum.fhem.de/index.php/topic,84996.0.html
Grüße und Viel Erfolg
Guten Tag Gemeinde
Ich versuche seit geraumer Zeit Signal zu installieren. Unter Linux kann ich als root Problemlos Nachrichten senden. Als fhem kommt die folgende Meldung:
User is not registered
Folgende Schritte hatte ich durchgeführt:
cp -r ~/.config /opt/fhem/
chown -R fhem:dialout /opt/fhem/.config
chmod 666 /opt/fhem/.config -r
sudo -u fhem signal-cli -u +4156xxxxxxx send -m "Test aus FHEM-Verzeichnis" +4179xxxxxxx
Vielen Dank für eure Hilfe
Zitat von: vic am 09 September 2018, 09:46:24
Guten Tag Gemeinde
Ich versuche seit geraumer Zeit Signal zu installieren. Unter Linux kann ich als root Problemlos Nachrichten senden. Als fhem kommt die folgende Meldung:
User is not registered
Folgende Schritte hatte ich durchgeführt:
cp -r ~/.config /opt/fhem/
chown -R fhem:dialout /opt/fhem/.config
chmod 666 /opt/fhem/.config -r
sudo -u fhem signal-cli -u +4156xxxxxxx send -m "Test aus FHEM-Verzeichnis" +4179xxxxxxx
Vielen Dank für eure Hilfe
Was ist denn dein home-Verzeichnis für den User fhem? die signal-cli guckt in dort nach der config. Ggf. mal den Pfad zur Config per cmdline-argument mitgeben.
Ansonsten ist doch .config ein Ordner? da ist natürlich 666 eine blöde Permission für, probier mal 755 ;-)
Achja, ~/.storage brauchst Du auch...
Hallo malted und danke für die prompte Antwort
Das home-Verzeichnis von fhem lautet /opt/fhem (fhem:x:999:20::/opt/fhem:/bin/false)
Der chmod ist rekursiv auf 755 gesetzt.
Ein Verzeichnis ~/.storage ist bei mir nicht vorhanden
Unterdessen sind andere Fehlermeldungen erschienen die auf Zugriffsprobleme bei den Dateien local_policy.jar (Permission denied) und US_export_policy.jar (Permission denied) hinweisen.
Habe die Dateien auf 555 gesetzt.
Als Folge erscheint keine Fehlermeldung mehr jedoch kommt auch keine Nachricht an,.
Nun habe ich die Dateien zusätzlich mit chown fhem:dialout versehen.
ES FUNKTIONIERT NUN!!!!
Ganz herzlichen Dank für deine Hilfe malted. :)
Wünsche dir noch eine tollen Sonntag
Hallo Ihr Wissenden :)
ich setze aktuell telegram ein, würde aber gerne etwas mit Verschlüsselung verwenden.
Ich habe das Topic Signal/textsecure bis jetzt so verstanden, dass SMS versendet werden.
Liege ich da falsch? Dann habe ich die Anleitungen nicht genug durchgelesen...
Ich möchte Meldungen von FHEM senden und mit FHEM von einer App empfangen (geht alles mit Telegram).
Vielen Dank für eure Hinweise ...
Guten Tag
Gemäss meiner Kenntnisse besitzt Signal eine Ende-zu-Ende-Verschlüsselung.
Signal ist ein freier verschlüsselter Messenger. (Wikipedia)
https://de.wikipedia.org/wiki/Signal_(Messenger) (https://de.wikipedia.org/wiki/Signal_(Messenger))
Zitat von: Carsten K. am 07 November 2018, 14:35:30
ich setze aktuell telegram ein, würde aber gerne etwas mit Verschlüsselung verwenden.
Also meiner Meinung nach ist Telegram auch sicher.
Es gibt sogar 300.000 Dollar Bonus wenns jemand schafft, eine Nachricht zu entschlüsseln
Zitat von: delmar am 08 November 2018, 21:02:12
Also meiner Meinung nach ist Telegram auch sicher.
Es gibt sogar 300.000 Dollar Bonus wenns jemand schafft, eine Nachricht zu entschlüsseln
Das hört sich gut an ;D
Zitat von: delmar am 08 November 2018, 21:02:12
Also meiner Meinung nach ist Telegram auch sicher.
Es gibt sogar 300.000 Dollar Bonus wenns jemand schafft, eine Nachricht zu entschlüsseln
Bei Telegram ist eine Schwachstelle die Handhabung der Authentifikation auf dem Handy. So kann z.B. ein zusätzlicher Client angemeldet werden, der alle! Nachrichten mitlesen kann...
Ich löse dieses Problem so, dass ich nur "unkritische" Sachen über telegram steuere.. (Licht an, Licht aus, "sende mir ein Bild", "sende mir die Temperatur") und NICHT "öffne mir die Haustüre" ...
Dafür habe ich auf dem Handy ein VPN eingerichtet (was übrigens ziemlich einfach zu handhaben ist), mit dem ich mich auf meine FritzBox connecte ...
Grüße,
Stephan
Hallo zusammen,
es ging hier um Signal und die FHEM-Anbindung und nicht um Telegram oder irgendwelche "Glaubenskriege" der Messanger-Apps. ;)
Glück Auf!
Stefan