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

Flachzange

Eine kurze Recherche sagt, dass GLIBC 2.29 erst ab Kernel 4.20 dabei ist. Buster fährt noch mit 4.19. Eine Möglichkeit wäre es mit einem Backport-Kernel zu testen.

Adimarantis

Compiliert wurde anscheinend für glibc 2.29 - nur findet der die nicht (und ich hätte eigentlich 2.28 erwartet)
was sagt den
ldd --version

@Flachzange: Wenn auf dem selben System compiliert wird, dann würde ich eigentlich erwarten dass das zusammenpasst.


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

Jamo

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Adimarantis

Hi Jamo,

also da ist dann irgendwas faul in deinem System. ldd schaut ok aus, aber warum übersetzt er dann für 2.29? Hast du schon mal ein einfaches Programm übersetzt und geschaut ob das läuft? Alle Pakete aktuell?
Vielleicht solltest du einfach auf Debian 11 updaten, falls da generell ein Wurm drin ist.

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

Jamo

Hallo Joerg,
danke erstmal aber ich verstehe das nicht. Vielleicht kannst Du mir das nochmal erklären.

Bevor ich die beiden libraries laut deiner Anleitung übersetzt habe, habe ich mit sudo apt install ./signal-cli-dbus_0.9.0-1_glibc2.31_amd64.deb die beiden Ubuntu pakete installiert (manchmal funktionieren ja die Ubuntu auch für Debian).

Was meinst Du mit ''warum übersetzt er dann für 2.29''? ''Was'' habe ich mit 2.29 übersetzt, und kann ich das wieder entfernen und nochmal übersetzten?

Er meckert ja nicht die beiden Dateien 'libsignal_jni.so' und 'libzkgroup.so' an, die ich als einzige kopiert habe, sondern /lib/x86_64-linux-gnu/libm.so.6. Die ist bei mir von May 2019 und zeigt auf

lrwxrwxrwx 1 root root 12 May  1  2019 /lib/x86_64-linux-gnu/libm.so.6 -> libm-2.28.so

Danke erstmal.


Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Adimarantis

Bevor ich die beiden libraries laut deiner Anleitung übersetzt habe, habe ich mit sudo apt install ./signal-cli-dbus_0.9.0-1_glibc2.31_amd64.deb die beiden Ubuntu pakete installiert (manchmal funktionieren ja die Ubuntu auch für Debian).
Ich fürchte damit hast du dein System inkonsistent gemacht.
Schmeiss das wieder runter und installiere vorsichtshalber die passende glibc (2.28) nochmal
Dann nochmal libraries compilieren.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Jamo

Hallo Jörg,
TADA TADA!

Signalbot:3.0beta3     signal-cli:0.9.0     Protocol::DBus:0.19

Nachdem ich deinem Rat gefolgt bin, und nochmal compiliert habe, habe ich gemerkt, das ich beim ersten Mal die Libraries gar nicht ersetzt hatte:
cd /opt/signal/lib
sudo -u signal-cli zip -u signal-client-java-*.jar libsignal_jni.so
sudo -u signal-cli zip -u zkgroup-java-*.jar libzkgroup.so


Nachdem ich das jetzt gemacht hatte, funktionierts.

DANKE Dir für die Geduld und die Erklärungen.

Letzte Frage(n):
Ich bekomme im FHEM-Modul folgende Meldung: Signal-cli is running in single-mode, please consider starting it without -u parameter (e.g. by re-running the installer)

Deswegen habe ich in /etc/systemd/system/signal.service unter ExecStart den -u parameter geloescht, aber das funktioniert nicht. Ich bekomme folgendes:
1) Liegts daran das der user fhem ist, und nicht signal-cli?
2) Was heisst genau "single-mode"? Im Wiki finde ich nichts.... Was ist der Vorteil/Nachteil für mich?
3) Im Log erscheint folgende Fehlermeldung: PERL WARNING: Use of uninitialized value $multi in numeric eq (==) at ./FHEM/50_Signalbot.pm line 1638.
4) Ich kann die kompilierten Libraries für Debian 10/amd64 zur Verfügung stellen, falls das für jemanden anderes nützlich ist. Bitte melden.

jamo@inuc:/opt/fhem/FHEM$ sudo systemctl status signal.service
● signal.service - Send secure messages to Signal clients
   Loaded: loaded (/etc/systemd/system/signal.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2021-09-23 13:11:48 CEST; 10s ago
  Process: 11890 ExecStart=/opt/fhem/signal-cli/bin/signal-cli +4912123456789 --config /opt/fhem/.local/share/signal-cli daemon --system (code=exited, status=1/
Main PID: 11890 (code=exited, status=1/FAILURE)

Sep 23 13:11:48 inuc systemd[1]: signal.service: Main process exited, code=exited, status=1/FAILURE
Sep 23 13:11:48 inuc systemd[1]: signal.service: Failed with result 'exit-code'.
Sep 23 13:11:48 inuc systemd[1]: Failed to start Send secure messages to Signal clients.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Adimarantis

Die Telefonnummer gehört zum "-u" Parameter und muss auch weg.

Single Mode heisst du hast eine dedizierte Nummer. Das ist quasi die alte Art und Weise.
Jetzt kann man zwischen mehreren Nummer wechseln. Hat erstmal keinen Nachteil für dich, außer der nervigen Meldung :)

Die Libraries kannst du mir gerne irgendwo zur Verfügung stellen, dann mach ich damit noch ein .deb Paket

Fehlermeldung schau ich mir an - da hab ich wohl einen Fall noch nicht richtig behandelt, sollte aber an der Stelle erstmal harmlos sein.

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

Jamo

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Adimarantis

Danke Jamo,

(edit: Dateien umgezogen, da svn.fhem.de dafür der falsche Platz war)
unter http://fhem.bublath.de/ finden sich somit aktuell 4 Varianten von .deb packages.
- Raspbian Buster
- Ubuntu 18.04
- Ubuntu 20.04
- Debian Buster

Bitte beachten, dass diese Packages nur den Betrieb von signal-cli sicherstellen sollen und ggf. trotzdem Perl Module für Signalbot auf dem System fehlen könnten.

Ich habe jetzt auch mein Docker Script wieder aktualisert und etwas getested. Es ist im Wiki: https://wiki.fhem.de/wiki/Signalbot verlinkt und beschrieben.

Ein paar Tage Test möchte ich noch abwarten, dann werde ich das Modul über Update verteilen.

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

Flachzange

Ich würde gerne die Gelegenheit nutzen mich für das Modul zu bedanken. Es läuft wirklich gut und die Doku im Wiki ist vorbildlich. Auch die kleinen Extras wie das "Command-Notify" mit GoogleAuth sind klasse.

Drei kleinere Verbesserungsvorschläge, die weitestgehend kosmetischer Natur sind:

1) Unterstützung für Gruppen im Command Notify. Wenn die Nachricht aus einer Gruppe kam, soll sie auch zurück in die Gruppe (command-Notify:14)
my $msgGroup =  ReadingsVal("Signalbot", "msgGroupName", "");
my $msgSender = ReadingsVal("Signalbot", "msgSender", "");
if ($msgGroup ne "") {$msgSender  = "#" . $msgGroup;}
elsif (substr($msgSender, 0, 1) ne "+")  { $msgSender = "@" . $msgSender }


2) Verhinderung einer Perl Warning, wenn man nur den favprefix schickt (command-Notify:26)
# ggf. Favoriten auflösen
if ($favPrefix && substr($msgText, 0, length($favPrefix)) eq $favPrefix) {
   $favno = $favPrefix eq $msgText ? 0 : int(substr($msgText, length($favPrefix)));
       @favarray = split(";", AttrVal("Signalbot", "favList", undef));


3) UTF-8 Encoding im Log (50_Signalbot.pm:345)
Log3 $hash->{NAME}, 3 , $hash->{NAME}.": Before parse:" . encode_utf8($fullstring) . ":";


Wenn Blödsinn gerne ignorieren.

Gruß
Chris

Adimarantis

Hi Chris,

Schau ich mir mal an.
Die Favoriten im Wiki sind "Fremdcode" von @Weini.
Wenn die Nachfrage nach dem Feature größer wird, müsste man wohl mal darüber nachdenken, wie man das integriert.

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

weini

Hi Chris!

Danke dir für die Anmerkungen. Ich habe 1) & 2) jetzt bei mir eingebaut und möchte ein wenig testen. Wenn keine Probleme auftreten, dann übernehme ich das so ins Wiki.

weini

weini

Punkte 1) & 2) sind jetzt im notify code im Wiki enthalten.

@Flachzange: Vielen Dank dir!

Adimarantis

Ich habe das Modul soeben ins SVN gepushed. Sollte ab morgen über UPDATE verfügbar sein.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)