Neues Modul für "(Si)gnal - (Si)cherer Messenger" [32_SiSi.pm]

Begonnen von Quantum, 26 Februar 2018, 14:32:42

Vorheriges Thema - Nächstes Thema

Quantum

#15
ZitatKannst du mir sagen wann was verwendet wird?

Session
Ist auf den Benutzer begrenzt. Auf grafischen Oberflächen dient der Session Bus beispielsweise dazu Nutzerprogramme untereinander zu verbinden.
Bsp: Pidgin->newMessage => Session-Bus => Notify-Dienst->show

System
Nutzübergreifender Bus. Wird vorallem von Systemkomponenten verwendet. Nicht Nutzerspezifisch. Und genau das machen wir hier.
signal-cli (user:signal-cli)->newMessage => System-Bus => FHEM-Modul (user:fhem)->show

Zitatich meine es funktionierte vorher mit session

Ich denke durch dein sudo reboot hast du vorigere expermiente am Session Bus wieder zurückgesetzt.
Der session Bus wird auf headless Systemen normalerweise nicht automatisch gestartet.

Freundliche Grüße
Quantum

Quantum

war nun ein bisschen fleißig:

Neue Features:
-> Anzeige der letzten und der vorigen Nachricht (Die Namen der readings wurden an TelegramBot angelehnt)
-> Neues Attribut. defaultRecipient
-> neue Set-Kommandos für das senden von Nachrichten (angelehnt an TelegramBot)
-> Modul und Versionscheck

für weitere Änderungen und nähere Beschreibung siehe GitHub Repo https://github.com/Quantum1337/32_SiSi.pm

Es wurde viel internes verändert. Wenn aktualisiert wird und ein bestehendes Modul vorhanden ist. Am besten löschen und neu einbinden.

Freundliche Grüße
Quantum

malted

Zitat von: Quantum am 26 Februar 2018, 14:32:42
da es noch kein Modul für den quelloffenen Messenger "Signal" gibt,

Ich sag nicht, dass die Lösung besser ist. Aber sicherheitshalber... das kennst? https://forum.fhem.de/index.php?topic=30745.0

Bei mir funktioniert das seit über drei Jahren ohne Probleme.

Ich habe unlängst mal auf den Fork geupdatet, damit die Attachments wieder gehen.
https://github.com/aebruno/textsecure

Braucht zumindest kein DBUS etc..

Quantum

Hallo malted,

klar hab auch ein Beitag in deinem Thread hinterlassen.
Viele wege führen nach Rom. Und DBus ist bei meisten Distributionen im Standard
installiert. Wenn der signal-cli hierfür auch noch eine Schnittstelle bietet... Wieso nicht nutzen ?
Wenn es bei dir so funktioniert ist doch alles ok :)

Freundliche Grüße
Quantum

Quantum

hab gerade die Änderungen der letzten Tage gepushed

Neue Features:
-> Senden von Gruppennachrichten
-> Es werden Internals über den Status und den Inhalt der letzten Nachricht gesetzt.

Änderungen:
-> die Bedienung der set Kommandos send|msg|_msg|message wurde verändert. Verhält sich nun ähnlich wie TelegramBot

Bugfixes:
-> GruppenIds werden nun richtig angezeigt

Für nähere Informationen siehe: https://github.com/Quantum1337/32_SiSi.pm

Weitere Wünsche und konstruktive Kritik gerne gesehen !

Freundliche Grüße
Quantum

klausw

Hallo Quantum,

getestet und für gut befunden  8)

Gruppennachrichten funktionieren (wusste bis dahin gar nicht, das sowas existiert)
defaultRecipient auch

Für mich kann dein Modul derzeit alles was ich benötige und läuft stabil.
Hast du vor das Modul dem FHEM Repository hinzuzufügen?

Grüße
Klaus

PS: Das telegram Modul hat noch einige nette Funktionen, die ich selbst nicht nutze bzw. anderweitig umgesetzt habe. Aber vielleicht ist da was dabei das du auch sinnvoll findest
- FHEM Befehle direkt über ein Hotword absetzen (auch limitierbar nach Client und Befehl).
- Standard Antworten an nicht autorisierte User oder die Möglichkeit die NAchrichten von diesen an einen Definierten Client weiterzuleiten.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Quantum

Hallo klausw,

super, dass es bei dir funktioniert :)

Ja, es gibt allerdings noch ein paar interne Baustellen die ich hier notiert habe. Danach könnte man es sich überlegen, das Modul dem Repo hinzuzufügen.
Was ich auf jedenfall noch machen werde, ist, dass nur noch definierte Nummern durchgelassen werden. Und Standardantworten bzw. Weiterleiten an einen definieten Nutzer.

Beim Thema FHEM Befehle direkt über das Modul abzusetzen, hab ich den Vorteil, der sich dadurch ergibt noch nicht wirklich erkannt.
Ich bin ein Freund des KISS (Keep it simple, stupid) Prinzips und des Leitsatzes "Do one thing, but do it well". Und so wie ich das erkenne, kann das ganze über Notifys etc. erledigt werden.
So mach ich das... Oder erkenne ich da etwas nicht ?

Freundliche Grüße
Quantum

klausw

Hallo Quantum,

Zitat von: Quantum am 10 März 2018, 12:06:42
Beim Thema FHEM Befehle direkt über das Modul abzusetzen, hab ich den Vorteil, der sich dadurch ergibt noch nicht wirklich erkannt.
...
So mach ich das... Oder erkenne ich da etwas nicht ?

Letztendlich lassen sich auch Standardantworten mit notifys lösen.
Der Vorteil einer direkten Implementierung ist ein geringerer Konfigurationsaufwand.
Aber dein Modul deine Entscheidung  8)
Mit der aktuellen Funktionalität bin ich mehr als zufrieden.
Ich hatte nur ein paar Funktionen aufgezählt die mir beim Telegram Modul aufgefallen waren.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

subseven

#23
Hallo,

gerade habe Signal auf meinem FHEM-System(Arch-Linux) in Betrieb genommen.
Es funktioniert soweit echt Super. Um das bestehende Telegram abzulösen zu können benötige ich allerdings Gruppenchats (also eine Gruppe als DefaultRecipient). Wie ist das möglich?
Bei der Ausgabe meiner notfiys habe ich nämlich zZ das Problem, dass es nicht mehr komplett ankommt.
Beispiel:
.*:[Hh]umidity:.* { if($EVTPART1 > 70 ) {if($TYPE =~ m/LaCrosse/) {{ fhem ("set fhemsignal send @#SHxxxxxxxxKmuJ+w== Feuchtigkeitswarnung:\n$NAME $EVENT:\nLuftfeuchte zu hoch!"); Log 3, "$NAME: Feuchtigkeitswarnung $EVENT";}}}}

Hier kommt nur noch "Feuchtigkeitswarnung:" an der Zeilenumbruch und die Variable wird nicht mit ausgegeben.
Nutze ich das selbe mit Telegram funktioniert es. Das ist dann so:
.*:[Hh]umidity:.* { if($EVTPART1 > 70 ) {if($TYPE =~ m/LaCrosse/) {{ fhem ("set fhemcallebot message Feuchtigkeitswarnung:\n$NAME $EVENT:\nLuftfeuchte zu hoch!"); Log 3, "$NAME: Feuchtigkeitswarnung $EVENT";}}}}

Edit: Scheint an dem Zeilenumbruch zu liegen. Ohne geht es. Eine Gruppe als DefaultRecipient wäre aber trotzdem ganz praktisch.

Grüße und vielen Dank für die Arbeit bisher! ;)

Quantum

Hallo subseven,

den newline Fehler hab ich behoben. Da hat sich ein "\" zuviel eingenistet :).
DefaultGroup gibt es zZ noch nicht. Werde es angehen sobald ich wieder etwas Zeit finde.

Freundliche Grüße
Quantum

subseven

Zeilenumbrüche funktionieren nun.  8)
Für den DefaultRecipient wäre es am einfachsten, wenn wie bei Telegramm anstelle einer Nummer auch eine Gruppe angegeben werden kann. Dein Modul müsste es verarbeiten, dass entweder eine Nummer oder eben die GruppenID angegeben wird. Dann entsprechend den Parameter von signal-cli setzen.
Denn so ist ohne Einschränkungen das
set <NAME> message
verwendebar und man muss nicht auf
set <NAME> send @#SHxxxxxxxxKmuJ+w==
zurückgreifen.

Danke für die schnelle Umsetzung der Zeilenumbrüche!

Ralf Kruppa

Hallo, ich bin gerade dabei bei meinem FHEM dem MEssanger Dienst Signal mit einzubauen, habe aber Probleme dieses hinzubekommen.
Ich habe folgendes System
Raspberry PI3 auf dem FHEM läuft seit einigen Jahren Problemlos, mit Tablet UI als Oberfläche.
Ich habe signal-cli installiert mit Java und ich kann über

/signal-cli -u +49xxxxxxxxx send -m "Hallo Handy" +49xxxxxxxxx

Machrichten schicken.
Ich habe dbbus installiert

perl -MNet::DBus -le 'print $Net::DBus::VERSION'
1.1.0

Schicken einer Nachricht über dbus-send geht nicht

sudo dbus-send --system --type=method_call --print-reply --dest="org.asamk.Signal" /org/asamk/Signal org.asamk.Signal.sendMessage string:MessageText array:string: string:+49xxxxxxxx

es kommt die Fehlermeldung:

Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

Den Benutzer habe ich hinzugefügt:

sudo adduser signal-cli

Als passwort habe ich auch signal-cli genutzt. Muß ich mit dem Benutzer noch irgend was machen ?

Vielen Dank für die Hilfe
Gruß Ralf


reibuehl

Hast Du die in https://github.com/AsamK/signal-cli/wiki/DBus-service beschriebenen Schritte (als User root) gemacht?

Schau mal, ob die Dateien
  /etc/dbus-1/system.d/org.asamk.Signal.conf
  /usr/share/dbus-1/system-services/org.asamk.Signal.service
  /etc/systemd/system/signal.service
existieren und das der Pfad zu signal-cli in /etc/systemd/system/signal.service stimmt. Dann mal mit
  systemctl status signal.service
  systemctl status dbus.service
checken, ob beide Services laufen.
Reiner.

Ralf Kruppa

Hallo,

der signal.service läuft nicht.

* signal.service - Send secure messages to Signal clients
   Loaded: loaded (/etc/systemd/system/signal.service; enabled)
   Active: failed (Result: exit-code) since Fr 2018-05-25 11:00:59 CEST; 1h 2min ago
Main PID: 6468 (code=exited, status=203/EXEC)

Mai 25 11:00:59 xxxxx.xx systemd[1]: signal.service: main process exited, code=exited, status=203/EXEC
Mai 25 11:00:59 xxxxx.xx systemd[1]: Failed to start Send secure messages to Signal clients.
Mai 25 11:00:59 xxxxx.xx systemd[1]: Unit signal.service entered failed state.

In der Datei signal.service ist unter User der signal-cli eingetragen.

Muss ich den noch auf dateien oder Verzeichnisse berechtigen ? könte das das Problem sein ?

Gruß Ralf

reibuehl

Also bei mir hat der user signal-cli das Homeverzeichnis /var/lib/signal-cli in dem das data Verzeichnis mit der Konfiguration liegt. /var/lib/signal-cli und alles darunter gehört bei mir dem User signal-cli.
Reiner.