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

Adimarantis

Zitat von: sinus61 am 07 Februar 2021, 12:30:26
Die Telefonummer funbktioniert ja, daher wundert mich die letzte Meldung. Und die lbzkgroup Dateien liegen in /usr/lib
Schau mal ob
unzip -v /opt/signal/lib/zkgroup-java-0.7.0.jar

Noch eine "libzkgroup.so" enthält. Die muss raus damit die /usr/lib version verwendet wird. Das hätte das script eigentlich mit
zip -d zkgroup-java-0.7.0.jar libzkgroup.so
machen sollen.
Wenn die noch drin ist - hast du noch logs von der Installation? Würde mich interessieren was da nicht geklappt hat.

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

Zitat von: Papaloewe am 07 Februar 2021, 12:32:10
Hier hat auch schon jemand eine REST API für den signal-cli gebaut und es gibt einen "fertigen" Docker Container dazu.
https://github.com/bbernhard/signal-cli-rest-api
Das wäre natürlich jetzt ein völlig anderer Ansatz bei der Kommunikation zwischen signal-cli und FHEM.
Von dem Docker Container könnte man sicher was für unsere Installation hier was abgucken. Kommt mir jetzt aber nochmal eine Stufe komplexer vor, da man mit der REST API nochmal etwas dazwischenbaut. Also seid mir nicht böse, aber ich finde wir haben einen praktikablen und stabilen Weg und ich werde da jetzt keine Energie in Alternativen stecken.
Wie zuvor beschrieben höchstens wenn der signal-cli main branch was interessantes einführt.

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)

BAfH

Hallo Jörg,

dickes Dankeschön für Deine tolle Arbeit und die Geduld. Es läuft.
Ich kann jetzt sauber Nachrichten senden und empfangen.
Top, habe gerade getestet, Nachrichten von FHEM an mein Phone zu senden abhängig vom Device State. Passt.
Bin gerade dabei, ein Notify zu erstellen um auf ankommende Nachrichten zu reagieren.
Nutze diesen Post https://forum.fhem.de/index.php/topic,84996.msg906042.html#msg906042
Da habe ich noch etwas zu tun.
Jut, gerade kommt wohl der Schnee hier bei uns in Brandenburg an, naja Schnee ist es nicht....  ;)
Also ich bin am Zuge.

Bis später
Gruß Thorben
mit sonnige Grüße aus Schönow

sinus61

Zitat von: Adimarantis am 07 Februar 2021, 12:37:48
Noch eine "libzkgroup.so" enthält. Die muss raus damit die /usr/lib version verwendet wird.

Die ist raus. Allerdings hatte ich die libs manuell kopiert, weil die nicht da waren. Hab gerade mal die remove Option genutzt und neu installiert, da fiel mir das wieder ein. Im Skript hast Du am Anfang $LIBPATH definiert, beim Installieren und Entfernen dann aber $LIBDIR benutzt. Hab das mal angepasst, dann läuft alles durch.

Allerdings nützt es nichts, es kommt weiter der Fehler:

OpenJDK Server VM warning: You have loaded library /tmp/resource17792002454964883349.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
WARN App - WARNING: Support for new group V2 is disabled, because the required native library dependency is missing: libzkgroup
ERROR App - User +49xxxxxxxxxx is not registered.


Mit der User funktioniert das wie gesagt trotzdem, nur mit einer Gruppe geht es nicht, der User lässt sich da nicht mit reinnehmen.

Adimarantis

Zitat von: sinus61 am 07 Februar 2021, 14:12:55
Im Skript hast Du am Anfang $LIBPATH definiert, beim Installieren und Entfernen dann aber $LIBDIR benutzt.
Tatsächlich. Ich hätte zuletzt hauptsächlich unter meiner X86 VM gestestet....
Korrigiert.

Die Signal Gruppen funktionieren leider ohne die library nicht.
Lass uns mal schauen ob er die Library anzieht:
sudo ldconfig -v | grep libzkgroup.so

Eigentlich muss /usr/lib da drin sein, vielleicht stimmen aber die Rechte nicht?

Ansonsten fällt mir nur noch ein ob du irgendwo anders im System noch ein zkgroup.jar hast, das er anzieht, wo die .so noch drin ist?

EDIT: Und du bist schon auf einem Raspberry unter armv71 oder?

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

sinus61


ldconfig: Pfad »/lib/arm-linux-gnueabihf« mehrfach angegeben
ldconfig: Pfad »/usr/lib/arm-linux-gnueabihf« mehrfach angegeben
ldconfig: /lib/arm-linux-gnueabihf/ld-2.28.so is the dynamic linker, ignoring

ldconfig: /lib/ld-linux.so.3 is the dynamic linker, ignoring

        libzkgroup.so -> libzkgroup.so



und ja


Architecture:        armv7l
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
Vendor ID:           ARM
Model:               4


Laut Doku sucht libsignal in java.library.path wenn die lib nicht im jar Paket ist. Wo könnte man denn erkennen was da angegeben ist?

Ok, /usr/lib/ ist da mit drin wenn man "java -XshowSettings:properties" aufruft.

Adimarantis

Hi sinus61,

Also laut deiner Fehlermeldung findet er eine lib.so - aber eben die falsche. Ich hab meine mal testweise gelöscht, dann kommt eine andere Fehlermeldung.
1. Check: Haben wir die selbe Library:
ls -l /usr/lib/libzkgroup.so
-rw-r--r-- 1 root root 681524 Feb  2 17:24 /usr/lib/libzkgroup.so

2. Check: Schaut das jar consistent wie meins aus:
ls -l /opt/signal/lib/zkgroup-java-0.7.0.jar
-rw-r--r-- 1 signal-cli signal-cli 34682 Feb  7 15:24 /opt/signal/lib/zkgroup-java-0.7.0.jar

3. Check welches .jar nimmt er (Voraussetzung Service läuft)
ps -ef | grep zkgroup
Da müsste irgendwo der volle Pfad opt/signal/lib/zkgroup-java-0.7.0.jar drinstehen
4. Check gibt es irgendwo noch eine andere .so
sudo find / -name libzkgroup.so 2>/dev/null

5. Check gibt es noch irgendwo ein anderes jar
sudo find / -name zkgroup-java-0.7.0.jar 2>/dev/null


Und dann bin ich mit meinem Latein wirklich am Ende...

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

BAfH

Hallo,

na dem shutdown restart hängt mein FHEM.
Folgende Meldung im Log
2021.02.07 16:47:57.676 3: Mosquitto device opened
Operation "ne": no method found,
left argument in overloaded package Net::DBus::Error,
right argument has no overloaded magic at ./FHEM/50_Signalbot.pm line 385.


Das ist der letzte Stand des 50_Signalbot.pm.

Wenn ich das Docker Image lösche und neu erstelle, ist die Registrierung auch weg???

Ich schaue mal

dann nichts mehr... Was könnte hier helfen?
Gruß Thorben
mit sonnige Grüße aus Schönow

Adimarantis

Hi Thorben,

Wahrscheinlich ist dein Dbus und/oder signal-cli daemon nicht oben.
Leider ist da wohl noch ein Bug in meinem Fehlerhandling - dazu kannst du mal di angehängte Version probieren. Die sollte zumindest einen Fehler ausspucken statt FHEM zu blockieren.

Wenn du das neuste Installscript als root mit dem Parameter "start" aufrufst, dann werden die beiden Dienste gestartet, wenn nötig.

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

frust

Also ich habs immer noch nicht hin bekommen.

Zitat
dbus-send --system --type=method_call --print-reply --dest="org.asamk.Signal" /org/asamk/Signal org.asamk.Signal.sendMessage string:"Test message via DBus" array:: string:+49xxxxxxxxx
funktioniert

vom FHEM aus

Zitatset SIGNAL send @+4917xxxxxxxx Hallo Signal

Error sending message:org.asamk.Signal.Error.Failure: org.whispersystems.signalservice.api.push.exceptions.NotFoundException: Not found
geht irgendwie nicht. FHEM und Rechner mehrfach neu gestartet, hilft aber nix 🤷🏻‍♂️

gibts Ideen was ich Debugger kann? FHEM-Log gibt nichts her.

sinus61

Zitat von: Adimarantis am 07 Februar 2021, 15:32:29
Also laut deiner Fehlermeldung findet er eine lib.so - aber eben die falsche.

Danke für die Unterstützung, jetzt hab ich es. Ich hatte ja schon vorab mal mit SiSi angefangen und da gab es /opt/fhem/signal-cli. Gelöscht und der Fehler ist weg.

Der Fehler mit "is not registered" bestand noch weiter, das hab ich mit dem Skript auch mit remove und install und register nicht gelöst bekommen, sondern einmal direkt it signal-cli gemacht. Damit läuft das auch. Braucht vielleicht nicht weiter erforscht werden, wenn sonst keiner das Problem hat.

Mit den Gruppen läuft es trotzdem noch nicht ganz rund, muss ich noch mal austesten.

BAfH

Hallo Jörg,
habe den Container neu erstellt.
Befehl ausgeführtsudo -u signal-cli /opt/signal/bin/signal-cli -u +49festnetz --config /var/lib/signal-cli daemon --system &
folgende Rückmeldung
root@FHEM:/opt/fhem#
[1] 24857
root@FHEM:/opt/fhem# /opt/signal/bin/signal-cli: 41: cd: can't cd to /opt/fhem
OpenJDK 32-Bit Server VM warning: You have loaded library /tmp/resource7942281494445111559.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
WARN App - WARNING: Support for new group V2 is disabled, because the required native library dependency is missing: libzkgroup
ERROR App - Error while checking account +49festnetz: Authorization failed!

[1]+  Exit 2                  sudo -u signal-cli /opt/signal/bin/signal-cli -u +4festnetz --config /var/lib/signal-cli daemon --system
root@FHEM:/opt/fhem#


Dein Test Script gibt folgenden Fehlerorg.freedesktop.DBus.Error.Spawn.FileInvalid: Cannot do system-bus activation with no user

Gepüft ist das der User signal-cli Zugriff hat:
drwxr-xr-x 3 signal-cli signal-cli 4096 Feb  7 17:53 signal-cli
/usr/share/dbus-1/system-services/org.asamk.Signal.service
/etc/dbus-1/system.d/org.asamk.Signal.conf

Reinit bringt
2021.02.07 18:24:58.407 3: Signal: Error while initializing Dbus:org.freedesktop.DBus.Error.Disconnected: Connection is closed
Gruß Thorben
mit sonnige Grüße aus Schönow

Adimarantis

Zitat von: frust am 07 Februar 2021, 17:45:29
gibts Ideen was ich Debugger kann? FHEM-Log gibt nichts her.

Im neusten Install Script wird mit dem Argument "test" noch auf eine dritte Methode (aus Perl)  gesendet. Geht das?

Die Frage ist auch von wann deine Scripten/Module sind. ggf. nochmal das Neuste aus dem ersten Post holen und laufen lassen.

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

Zitat von: BAfH am 07 Februar 2021, 18:40:38
Dein Test Script gibt folgenden Fehlerorg.freedesktop.DBus.Error.Spawn.FileInvalid: Cannot do system-bus activation with no user

Das ist eigentlich mit dem aktuellen Installer gefixed und die Datei org.asamk.Signal.service
hat jetzt eine zusätzliche Zeile mit "User=signal-cli"

Mit der Zeile müsste der Service starten.

das "can't cd" hatte ich auch, das macht nichts.

Am Besten halt die Services mit
./signal_install.sh start
starten.

Du hast außerdem anscheinend auch wieder die falsche lib.so

Schmeiss doch das /opt/signal nochmal weg und lass es vom Script neu bauen (argument: install) - aber bitte nochmal den Neusten holen.

Jörg

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

mspa

Guten Abend,
eine kurze Frage, wird ein Zeilenumbruch auch mit \n gemacht, wie bei anderen Modulen?👀 Achja die installtion hat super geklappt, es hat nur noch das modul libimage-librsvg-perl für SVG_plots gefehlt.
Mfg