Neues Modul: Signalbot (Integration für den Signal Messenger) via signal-cli

Begonnen von Adimarantis, 31 Januar 2021, 19:16:19

Vorheriges Thema - Nächstes Thema

globalcow

Hallo Jörg,

eines vorweg, ich bin ganz neu im Forum und weiß nicht ob das hier der richtige Ort ist einen eventuellen Bug im Modul zu melden.

Danke für das tolle Modul! Ich nutze Signalbot (Signalbot:3.0 signal-cli:0.9.0 Protocol::DBus:0.19) in Kombination mit Babble (ohne Chatbot) wie im Wiki beschrieben. Der Weg von Signal nach Babble funktionierte ohne Probleme, allerdings habe ich nie eine Antwort von Babble in Signal bekommen. Der Grund dafür war das der Empfänger nicht richtig angegeben war. Die Variable $PARM0 wurde von Signalbot immer als # übergeben. Ich konnte eine Ursache und eine Lösung dafür finden. In Zeile 686 in 50_Signalbot.pm steht:
$replyPeer="#".$groupIdRegex if defined $groupIdRegex;
Da diese alle vorherigen replyPeer Ermittlungen überschreibt und es wohl vorkommen kann, das die $groupIdRegex definiert aber leer ist, ergibt sich der replyPeer = #. Ich habe diese wie folgt geändert und das Problem damit umgangen:
$replyPeer="#".$groupIdRegex if (defined $groupIdRegex && $groupIdRegex ne "");
Schau doch mal ob ich da einen Denkfehler habe oder ob dass tatsächlich ein Fehler ist.

Viele Grüße
globalcow

Adimarantis

Hi globalcow,

Da hast du wirklich einen Bug entdeckt.
Das Problem liegt sogar noch etwas tiefer: Dadurch das ich weiter oben irgendwann ein "quotemeta" eingebaut habe, ist der Fall "undefined" bei allen 3 Tests gar nicht möglich (nach quotemeta wird aus undef anscheinend ein leerer String). D.h. richtig ist hier immer der Tests auf Leerstring.

Gruß,
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Beim Testen der Änderungen ist mir noch eine Unschönheit beim "invite" Kommando aufgefallen. Änderungen sind im svn eingecheckt und morgen über update verfügbar (Version 3.1)

Achtung Ich hatte mein Testsystem auf signal-cli 0.9.1 upgedated und dabei feststellen müssen, das eine für Signalbot wichtige Funktion für die Handhabung von Kontakten nicht mehr funktioniert. Daher enthält das aktuelle Update auch gleich eine Warnung, falls jemand 0.9.1. installiert haben sollte, wieder auf 0.9.0 zu gehen.

Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

KyleK

Hallo,

ich hab auf meinem RaspberryPi 3B ein Update des FHEM-Moduls und von signal-cli auf 0.9.0 gewagt.
Dazu hab ich das script in fhem/www/signal verwendet.

Während die Installation prinzipiell fehlerfrei von statten ging, hab ich jetzt das Problem dass der signal-cli service nicht startet, weil er in einen Timeout rennt:
KyleK@raspberrypi:~fhem/www/signal master ⚡$ sudo ./signal_install.sh test
You chose the following option: test

Start signal-cli service
Job for signal.service failed because a timeout was exceeded.
See "systemctl status signal.service" and "journalctl -xe" for details.
Checking installation via dbus-send command...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.
unexpected reply

Sending a message via perl Protocol::DBus...Error getting reply


journal-ctl:
Oct 25 22:43:25 raspberrypi systemd[1]: Starting Send secure messages to Signal clients...
-- Subject: A start job for unit signal.service has begun execution
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- A start job for unit signal.service has begun execution.
--
-- The job identifier is 1164.
Oct 25 22:44:55 raspberrypi systemd[1]: signal.service: Start operation timed out. Terminating.
Oct 25 22:44:56 raspberrypi systemd[1]: signal.service: Main process exited, code=exited, status=143/n/a

Das Default-Timeout ist 90 Sekunden, wenn ich das im Systemd-Skript anhebe via:

TimeoutSec=200

dann scheint es zu klappen.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Adimarantis

Zitat von: KyleK am 25 Oktober 2021, 23:11:39
Das Default-Timeout ist 90 Sekunden, wenn ich das im Systemd-Skript anhebe via:

TimeoutSec=200

dann scheint es zu klappen.
Das Starten von signal-cli dauert schon etwas - sind viele .jar Files die eingebunden werden müssen. Wobei 90s schon sehr viel sind.
Auf meinem Rapsi4 mal gemessen:
pi@raspi400:~ $ time sudo service signal restart

real    0m47,562s
user    0m0,025s
sys     0m0,077s

Und das ist ja dann die Summe aus stop und start. Wobei ein Raspi3 natürlich potentiell langsamer ist und wenn dann noch eine langsamere SD-Karte dazu kommt - möglich dass es die Zeit reisst. Was kommt da bei dir raus?

Ich gehe mal davon aus, du hast die signal.service Datei so erweitert?
....
BusName=org.asamk.Signal
TimeoutSec=200

[Install]
....


Das könnte ich schon ins Install Script aufnehmen. Möchte aber nicht zu hoch gehen - daher die Frage nach deinem Timing.

Jörg

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

KyleK

Laut log hat bei mir der Aufstart 159 Sekunden gedauert.
Allerdings konnte ich diese Zeit seitdem nicht mehr reproduzieren. Jetzt gehts immer schneller als das.

Vielleicht wurde beim Update auf 0.9.0 irgendwas migriert, und es hat deshalb so lange gedauert.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Axxl

Hallo zusammen,

erstmal vielen Dank für das neue Modul. Ich habe es versucht irgendwie in meinem Setup hinzubekommen, bin aber letztendlich gescheitert.
Ich habe lange Zeit SISI genutzt, das ging aber vor ein paar Monaten einfach nicht mehr und daher bin ich auf dieses neue Modul aufmerksam geworden.

Zu meinem Setup:

Ich nutze FHEM in einem Docker container. Hierzu habe ich bisher vermieden ein eigenes Image zu bastlen, sondern fahre mit dem Basis Image ganz gut https://github.com/fhem/fhem-docker.
Hier gibt es ja auch möglichkeiten über ENVs APT,NPM,CPAN etc .. nachzuinstallieren. Ebenso gibt es ja die start-scripte pre-init.sh , post-init.sh, pre-start.sh etc ..

Damals habe ich es geschafft SISI per dBUS zum laufen zu bekommen. Meine Signal-Cli data hatte ich natürlich in ein geeignetes Verzeichnis in den Container genmounted, um so bei einem Neustart nicht immer die Nummer neu registrieren zu müssen.

Es gibt hier ja auch ein docker install script. Dies nutzt so wie ich das verstehe aber nicht das "offizielle" basis image von FHEM. Geht das gar nicht damit, da evtl. dass release hier nicht passt ? Debian 10.

Hat es jemand hinbekommen SIGNALBOT zum laufen zu bekommen in einem Docker Image das auf fhem/fhem basiert ? Würde mich über Informationen über die entsprechenden Teile die nötig sind in den start-scripten freuen.

Danke,
Axxl

enno

Moin Jörg,

habe seit zwei Tagen das Problem, dass Signalbot zwar noch sendet, aber nichts empfängt. das Script habe ich durchlaufen lassen es sagt bei allen Punkten ok.
sudo ./signal_install.sh
amd64-glibc2.33-0.9.0 is an unsupported combination - signal-cli binary libraries might not work
This script will help you to install signal-cli as system dbus service
and prepare the use of the FHEM Signalbot module

Please verify that these settings are correct:
Signal-cli User:              signal-cli
Signal-cli Install directory: /opt
Signal config storage:        /var/lib/signal-cli
Signal version:               0.9.0
System library path:          /usr/lib
System architecture:          amd64
System GLIBC version:         2.33
This will update system packages, install or uninstall signal-cli

system   : prepare required system package (except signal-cli)
install  : install signal-cli and setup as dbus system service
test     : run a basic test if everything is installed and registered correctly
remove   : Remove signal-cli and all configurations (will be archived)
start    : Start the signal-cli service (or respective docker processes)
all      : Run system, install, start and test (default)

!!! Everything needs to run with sudo/root !!!

Proceed (Y/n)? Y
Checking for /usr/lib...found
Checking for /etc/dbus-1...found
Checking for /etc/dbus-1/system.d...found
Checking for /usr/share/dbus-1...found
Checking for /usr/share/dbus-1/system-services...found
Checking for /etc/systemd/system...found
Checking for /run/dbus...found
Checking for apt-ftparchive...available
Checking for wget...available
Checking for sudo...available
Checking for haveged...available
Checking for java...available
Checking for diff...available
Checking for dbus-send...available
Checking for cpan...available
Checking for zip...available
Checking for /usr/include/dbus-1.0/dbus/dbus.h...available
Checking for /usr/share/build-essential/essential-packages-list...available
Checking for /usr/share/doc/libimage-librsvg-perl...available
Checking for /usr/share/perl5/URI.pm...available
Checking for Protocol::DBus...V0.19 found
Checking user signal-cli ...found
Checking for /opt...found
Checking for /var/lib/signal-cli...found
Checking for existing signal-cli installation...found
Checking signal-cli version...signal-cli 0.9.0
signal-cli matches target version...ok
Checking for /etc/dbus-1/system.d/org.asamk.Signal.conf...found
Checking for /usr/share/dbus-1/system-services/org.asamk.Signal.service...found
Checking for /etc/systemd/system/signal.service...found
Start signal-cli service
Checking installation via dbus-send command...success
Sending a message via perl Protocol::DBus...reply received


Wenn ich jetzt in Fhem versuche meine Nummer zu registrieren kommt bei der Eingabe des Captchas die Fehlermeldung " Incorrect captcha - e.g. needs to start with signalcaptcha:// "

Hast du eine Idee wie ich das Captchas hin bekomme?

Gruss
  Enno

PS: in /var/log/syslog habe ich folgende Meldungen:  Nov 11 10:18:05 FHEM signal-cli[132]: Envelope from: unknown source
Nov 11 10:18:05 FHEM signal-cli[132]: Timestamp: 1636461752110 (2021-11-09T12:42:32.110Z)
Nov 11 10:18:05 FHEM signal-cli[132]: Sent by unidentified/sealed sender
Nov 11 10:18:05 FHEM signal-cli[132]: Exception: org.whispersystems.libsignal.InvalidMessageException: invalid message Message decryption failed (ProtocolInvalidMessageException)
Nov 11 10:18:05 FHEM signal-cli[132]: No message content
Nov 11 10:18:26 FHEM signal-cli[132]: Envelope from: unknown source
Nov 11 10:18:26 FHEM signal-cli[132]: Timestamp: 1636461752110 (2021-11-09T12:42:32.110Z)
Nov 11 10:18:26 FHEM signal-cli[132]: Sent by unidentified/sealed sender
Nov 11 10:18:26 FHEM signal-cli[132]: Exception: org.whispersystems.libsignal.InvalidMessageException: invalid message Message decryption failed (ProtocolInvalidMessageException)
Nov 11 10:18:26 FHEM signal-cli[132]: No message content
Nov 11 10:18:39 FHEM signal-cli[132]: Envelope from: unknown source
Nov 11 10:18:39 FHEM signal-cli[132]: Timestamp: 1636461195217 (2021-11-09T12:33:15.217Z)
Nov 11 10:18:39 FHEM signal-cli[132]: Sent by unidentified/sealed sender
Nov 11 10:18:39 FHEM signal-cli[132]: Exception: org.whispersystems.libsignal.InvalidMessageException: invalid message Message decryption failed (ProtocolInvalidMessageException)
Nov 11 10:18:39 FHEM signal-cli[132]: No message content


Einfacher FHEM Anwender auf Intel®NUC

Adimarantis

Zitat von: Axxl am 11 November 2021, 09:48:08
Es gibt hier ja auch ein docker install script. Dies nutzt so wie ich das verstehe aber nicht das "offizielle" basis image von FHEM. Geht das gar nicht damit, da evtl. dass release hier nicht passt ? Debian 10.
Ich habe meine Docker Variante zwar auf Ubuntu basiert, aber Debian 10 sollte genauso gehen, habe mich aber nicht weiter mit dem "offizellen" Image beschäftigt.
Mit etwas Docker Know How sollte es möglich sein, aus meinem Script die relevanten Teile (Pakete, Scripte) zu übernehmen.
Leider kann ich dazu aber aktuell keine grosse Hilfestellung geben.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Zitat von: enno am 11 November 2021, 09:50:00
Hast du eine Idee wie ich das Captchas hin bekomme?
Welchen Ansatz nimmst du? Hast du die Methode mit der Windows Registry (Power Shell script) verwendet?
Letztendlich braucht die "set captcha" Methode den vollen String "signalcaptcha://......." von der Signal Captcha web site.

Zitat
Nov 11 10:18:05 FHEM signal-cli[132]: Exception: org.whispersystems.libsignal.InvalidMessageException: invalid message Message decryption failed (ProtocolInvalidMessageException)
Vielleicht ist hier wirklich eine art "Re-registrierung" notwendig - habe ich aber bei mir noch nie gesehen und meine Umgebung läuft schon ewig ohne neue Registrierung.
Lass uns erstmal versuchen dass deine Registrierung durchläuft.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

enno

Ich habe alle Versionen die im Wiki stehen durch. Ich bin mit Linux unterwegs. Windows habe ich hier nicht im Angebot.

- Mit Firefox: signalcaptcha.desktop runterladen und nach ~/.local/share/applications/signalcaptcha.desktop kopiert und mit xdg-mime default signalcaptcha.desktop x-scheme-handler/signalcaptcha (alles mit dem Desktop User) aktiviert

Die Seite wird aufgerufen und meldet den Fehler "Incorrect captcha - e.g. needs to start with signalcaptcha://"

- Mit Chrome alles über "F12" und Console kopiert und in "set SIGNAL captcha signalcaptcha://1234xdfr..." gleiche Fehlermeldung

Gruss
  Enno

Einfacher FHEM Anwender auf Intel®NUC

Adimarantis

Steht ein Fehler im "lasterr"?
Es ist nicht zwangsläufig der String falsch, sondern er lehnt ihn evtl. aus irgendwelchen Gründen ab.

Irgendwo gab es auch noch den Hinweis, dass potentiell eine andere Captcha Seite verwendet werden könnte:
https://signalcaptchas.org/challenge/generate.html

Probier das mal.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

enno

Moin Jörg,

ich habe den Register Vorgang direkt in der Console gemacht. Soweit so gut. senden klappt, aber es kommen immer noch keine Nachrichten mehr rein. Ich vermute es liegt am  "signal-cli". Hier hatte einer auch so ein Problem. https://github.com/AsamK/signal-cli/issues/290

Wenn ich in der Console starte:  sudo -u signal-cli ./signal-cli --config /var/lib/signal-cli -u +4912345 receive

Bekomme ich folgende Meldungen im Sekundentakt: Envelope from: unknown source
Timestamp: 1636451210012 (2021-11-09T09:46:50.012Z)
Sent by unidentified/sealed sender
Exception: org.whispersystems.libsignal.InvalidMessageException: invalid message Message decryption failed (ProtocolInvalidMessageException)
No message content


Ich suche mal weiter....

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Adimarantis

Du könntest mal versuchen signal-cli 0.9.2. zu installieren. Einfach im Install script die Version ändern.
Wird bereits unterstützt aber bisher habe ich keine Notwendigkeit gesehen das Update zu verbreiten

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

enno

   VERSION    Signalbot:3.1 signal-cli:0.9.2 Protocol::DBus:0.19

Senden geht, empfangen nicht. Wenn ich eine Nachricht gesendet habe steht das Reading "sentMsgTimestamp" auf "pending". Soll das so?

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC