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: Mad-at am 08 März 2021, 16:44:45
seit ich die Beta 2.0.1 installiert habe ist der Speicherverbrauch auch von fhem selber (also nicht nur die knapp 400 mb durch die cli) deutlich gestiegen.
Das ist seltsam. Ich hätte hier sogar einen umgekehrten Trend erwartet.
Mein Produktivsystem (FHEM+PiVCCU+ffmpeg IPcam Prozess+signal-cli+pi-hole) läuft auf meinem Pi4 mit 1.0/4.0 GB RAM - der 100MB! Swap ist zwar voll, aber sagt ja nichts.
Mein Testsystem (FHEM+signal-cli) hat aktuell 570MB/4.0GB RAM und 0/100MB Swap. Der Raspi 3 hat doch 1GB, oder? D.h. der sollte das schon noch packen.
Beide laufen seit 11 Tagen ohne reboot (da hatte ich mal wieder alle Updates laufen lassen).

Also ich kann dein Speicherproblem nicht wirklich nachvollziehen. Hat sonst noch jemand Erfahrungswerte dazu?

Jörg

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

Mad-at

Ja der hat 1GB
Aber ehrlicherweise: der arme Pi muss auch bei mir mehr als nur FHEM stemmen: emonhub, Pihole und unbound laufen auch.
Trotzdem ja, finde es auch strange. Ich hatte v1 aber auch nicht sehr lange laufen bis ich Deine beta entdeckt habe, vielleicht wärs unter der auch aufgelaufen? Keine Ahnung.

Adimarantis

Also wenn ich bei mir auf den Speicher schaue, dann ist FHEM ferner liefen beim Speicherverbrauch. Das deckt sich mit meiner Vermutung das Signalbot von V1 auf V2 eigentlich eher sogar weniger Speicher braucht (und definitiv weniger als SiSi weil es keinen fork() Prozess braucht).
Ganz vorne ist allerdings signal-cli - und das ist ja ein Java Prozess - und Java bedient sich gerne großzügig und räumt nur auf wenn es muss.
Du könntest mal probieren, ob du Java den Speicherhunger abgewöhnst indem du den maximalen Heap beschränkst.
Das geht mit z.B. mit
-Xmx256m
Keine Ahnung wie weit man da runtergehen kann bevor es "Out of Memory" gibt, aber eigentlich sollte signal-cli nicht so wahnsinnig viel brauchen.

Dazu musst du
/etc/systemd/system/signal.service
editieren und die Zeile mit Environment z.B. so ändern:
Environment="SIGNAL_CLI_OPTS=-Xms2m -Xmx256m"

Kannst das ja mal versuchen auszureizen und hier posten wie weit man das treiben kann.

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

Mad-at


enno

Moin Jörg,

Signalbot:2.0.2-beta signal-cli:0.8.1 Protocol::DBus:0.16

Ich habe komplett neu installiert und registriert. Alles ohne Probleme. Funktioniert wie vorher auch schon. Speicher beobachte ich auch mal mit einem Auge. Das Problem mit den Zeilenumbrüchen hatte ich auch. Hatte da aber den Fehler bei mir gesucht nun ist es aber auch gelöst :)

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Nighthawk

Hallo Jörg,

als erstes vielen Dank für das tolle Modul, ich habe dieses von Anfang an auf 2 von einander unabhängigen Instanzen laufen.
Vor ein paar Tagen bin ich mit der ersten Intstanz zu der Beta 2.0.2 gewechselt und diese läuft absolut problemlos, da habe ich auch die zweite Instanz umgestellt.
Die zweite instanz hat leider nur einige Stunden funktioniert, seit gestern bekomme ich keine messages über Signalbot mehr.
Das Device hat eine Fehlermeldung
Error in sendMessage:java.net.ConnectException: Failed to connect to textsecure-service.whispersystems.org/2001:0:0:0:0:0:453f:b88f:443

Und im Log mit Verbose 5 ist nur folgendes zu sehen:
2021.03.17 20:11:15 3: Signal: Before parse:Test:
2021.03.17 20:11:15 4: Signal: sendMessage called for +49********::Test
2021.03.17 20:11:15 5: Signal: ASync Dbus Call: sendMessage Args:Test,ARRAY(0x55ed19b70bf8),ARRAY(0x55ed19b70ca0)
2021.03.17 20:12:25 4: Signal: ASync Error for: sendMessage


Hier ein List des Devices:
Internals:
   FD         42
   FUUID      6021287d-f33f-69d4-45c7-7481c476484bec0d
   NAME       Signal
   NOTIFYDEV  global
   NR         221
   NTFY_ORDER 50-Signal
   STATE      Connected
   TYPE       Signalbot
   VERSION    Signalbot:2.0.2-beta signal-cli:0.8.1 Protocol::DBus:0.16
   Helper:
     DBLOG:
       lastError:
         logdb:
           TIME       1615983145.86363
           VALUE      Error in sendMessage:java.net.ConnectException
   READINGS:
     2021-02-08 20:04:12   joinedGroups   
     2021-03-17 20:12:25   lastError       Error in sendMessage:java.net.ConnectException: Failed to connect to textsecure-service.whispersystems.org/2001:0:0:0:0:0:453f:b88f:443
     2021-03-17 20:11:15   sentMsg         Test
     2021-03-17 05:59:10   sentMsgRecipient XXXXXXX
     2021-03-17 20:11:15   sentMsgTimestamp pending
   helper:
     init       :1.67
     signalpath /org/asamk/Signal
     version    801
     attachments:
     contacts:
       +49********* XXXXXX

Attributes:
   allowedPeer +49*********
   defaultPeer +49*********
   devStateIcon .*Connected:fa_comments@green .*Disconnected:fa_comments@red
   room       Kommunikation
   verbose    5


Was kann ich da tun?

Gruß
Alex

Adimarantis

Zitat von: Nighthawk am 17 März 2021, 13:28:49
Was kann ich da tun?
Schaut erstmal eher nach einem signal-cli Problem aus. Ein paar Ansätze:
1. Hast du unterschiedliche Nummern registriert (mit einer kopierten Registrierung wird es nicht funktionieren)
2. In der Fehlermeldung ist eine IPV6 Adresse. Ich wüsste zwar nicht das signal-cli damit ein Problem hat, aber kannst du prüfen ob die beiden Systeme bzgl. IPV4 vs IPV6 anders konfiguiert sind?
3. Schau mal ins /var/log/syslog ob da irgendwas aufschlussreiches steht
4. Starte mal das Install Script mit Option "test" ob die 3 tests auf der Ebene funktionieren

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)

Nighthawk

Hallo Jörg,

danke für deine Rückmeldung.

Zu 1. auf dem Problemsystem ist nur eine Nummer registriert, diese hatte ich auf dem gleichen System vorher mit der ersten Version des Signalbot am laufen und es hat ja auch einige Stunden mit der Beta 2.0.2 funktioniert.

Zu 2. der Unterschied der Systeme ist, das funktionierende sitzt hiter einer Fritzbox, das mit Aussetzer sitzt hinter einem größeren Server mit NAT.

Zu 3. die Logs schaue ich mir nachher noch genauer an.

Zu 4. der Test hatte nach der Installation auf Anhieb funktioniert, ich füher es heute nochmal aus und schau mal was da passiert.

Gruß
Alex

Nighthawk

Hallo Jörg,

im Syslog sind nur die 2 folgenden Einträge zu finden:


signal-cli[1579]: WARN Manager - Failed to get sender certificate, ignoring: java.net.ConnectException: Failed to connect to textsecure-service.whispersystems.org/2001:0:0:0:0:0:4a75:b29a:443
signal-cli[1579]: WARN Manager - Failed to retrieve profile, ignoring: java.util.concurrent.TimeoutException


Seltsam ist, dass es manchmal von alleine wieder funktioniert (hat den ganze Freitag tadellos seinen Dienst verrichtet) und dann schlagartig wieder nicht.

Gruß
Alex

MarcoE

Moin,
nachdem mir auffiel seit ein paar Tagen keine Nachrichten mehr per Signalbot zu bekommen habe ich die aktuellen Dateien signalbot und installer mir wieder geholt und danach signal_install.sh mit system, install und test aufgerufen.
Bei Test bekam ich folgenden output:

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 settigns are correct:
Signal-cli User:              signal-cli
Signal-cli Install directory: /opt
Signal config storage:        /var/lib/signal-cli
Signal version:               0.8.0
System library path:          /usr/lib
Phone number to be used:      +49623XXXXX
You seem to run Ubuntu on x86_64
Your chose the following option: test

Please enter the number (+49...) of somebody that you can send a test message to
Number:+4915114139958
Sending a message from command line to +4915YYYY
Stopping signal-cli service
If you get a 'in use, waiting' message, skip by pressing CTRL-C - this is normal when system service is already up and running
Failed to send/receive message (Assertion): Unknown version: 0
java.lang.AssertionError: Unknown version: 0
        at org.whispersystems.signalservice.internal.push.PushTransportDetails.getPaddedMessageBody(PushTransportDetails.java:45)
        at org.whispersystems.signalservice.api.crypto.SignalServiceCipher.encrypt(SignalServiceCipher.java:94)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessage(SignalServiceMessageSender.java:1729)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessages(SignalServiceMessageSender.java:1689)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendMessage(SignalServiceMessageSender.java:1534)
        at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendMessage(SignalServiceMessageSender.java:316)
        at org.asamk.signal.manager.Manager.sendMessage(Manager.java:1417)
        at org.asamk.signal.manager.Manager.sendMessage(Manager.java:1345)
        at org.asamk.signal.manager.Manager.sendMessage(Manager.java:1008)
        at org.asamk.signal.dbus.DbusSignalImpl.sendMessage(DbusSignalImpl.java:90)
        at org.asamk.signal.commands.SendCommand.handleCommand(SendCommand.java:134)
        at org.asamk.signal.commands.DbusCommand.handleCommand(DbusCommand.java:14)
        at org.asamk.signal.App.handleLocalCommand(App.java:211)
        at org.asamk.signal.App.init(App.java:169)
        at org.asamk.signal.Main.main(Main.java:43)
If you use an Oracle JRE please check if you have unlimited strength crypto enabled, see README
Start signal-cli service
Sending a message via dbus-send command
Error org.freedesktop.dbus.exceptions.DBusExecutionException: Error Executing Method org.asamk.Signal.sendMessage: Unknown version: 0
Sending a message via perl Net::DBus
org.freedesktop.dbus.exceptions.DBusExecutionException: Error Executing Method org.asamk.Signal.sendMessage: Unknown version: 0
If the recipient got all three messages, your setup looks healthy and you're ready to go to set up Signalbot in FHEM


(die xxx und yyy sind natürlich richtige Nummern die auch funktionieren).
Das unterliegende ubuntu ist aktuell.
Was könnte da falsch laufen?

Viele Grüße
Marco

Adimarantis

Zitat von: Nighthawk am 21 März 2021, 13:12:00
Failed to connect to textsecure-service.whispersystems.org/2001:0:0:0:0:0:4a75:b29a:443

Also für mich schaut das nach einem generellen Verbindungsproblem zum Signal Server aus. Check bei Problemen mal ob du textsecure-service.whispersystems.org anpingen kannst. Das ist irgendwo auf der System/Netzwerkebene und meiner Meinung nach kein Problem von signal-cli oder Signalbot.

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: MarcoE am 22 März 2021, 10:17:26
Failed to send/receive message (Assertion): Unknown version: 0

Haben deine Profile einen Usernamen (set updateProfile ...) , so einen Fehler habe ich meine ich schon gesehen, wenn die Nummer keinen definierten Namen hat.
Du bist noch auf der alten signal-cli Version - vielleicht solltest du probieren auf 0.8.1 und Signalbot V2-beta zu gehen (werde ich demnächst ohne große Änderungen als nicht-beta releasen, muss nur noch mal dazu kommen zu testen, welche Pakete der Installer jetzt wirklich braucht)

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

MarcoE

Hallo,
Zitat von: Adimarantis am 22 März 2021, 10:57:16
Haben deine Profile einen Usernamen (set updateProfile ...) , so einen Fehler habe ich meine ich schon gesehen, wenn die Nummer keinen definierten Namen hat.
Du bist noch auf der alten signal-cli Version - vielleicht solltest du probieren auf 0.8.1 und Signalbot V2-beta zu gehen (werde ich demnächst ohne große Änderungen als nicht-beta releasen, muss nur noch mal dazu kommen zu testen, welche Pakete der Installer jetzt wirklich braucht)

Jörg

Der Fehler tritt schon auf shell Ebene auf. bei signal_install test. Oder gibt es da auch einen updateProfile?
Ich bin auf der Version die hier auf Seite 1 (für 50_Signalbot) verlinkt ist. Was muß ich noch updaten? Oder woher bekomme ich neueres?

Viele Grüße
Marco

Adimarantis

Beta release ist hier: https://forum.fhem.de/index.php/topic,118370.msg1136873.html#msg1136873
Sobald ich dazu komme es endgültig zu releasen, kommt die in den ersten Post.

Das Script hat eine Option "name" mit der man von dort den Namen setzen kann.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Nachdem die Beta jetzt schon lange genug bei mir und anderen im Einsatz ist habe ich die neue Version (nahezu unverändert) als V2.1 im ersten Post freigegeben.
Ich hoffe mir sind da keine last-minute Schnitzer reingekommen. Derzeit bin ich leider anderweitig sehr beschäftigt und weiß auch nicht wann ich dazu komme die Anleitung im Wiki upzudaten (Hilfe erwünscht :) )

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)