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

memento_10

Hey!

ZitatDas läuft auf einem Raspi4, korrekt?
Korrekt.

ZitatWelche OS/Kernel Version? Alle Pakete aktuell?
Alles Pakete aktuell. Kernel 5.10.63-v7l+

ZitatDu kannst auch mal probieren auf signal-cli 0.9.2. zu updaten (nicht das ich mir viel davon verspreche, aber mir fällt sonst nicht mehr viel ein) - dazu einfach im Installer script
Das habe ich bereits versucht, jedoch klappt dann gar nichts mehr.

Ich konnte mein Problem mittlerweile etwas eingrenzen.
Bei Registrierung von 2 Nummern in 2 Signalbots funktioniert das Senden an einzelne Nummern normal.

Problematisch wird es in folgenden Fällen:
1.) Eine Gruppe mit meinem Handy und den beiden Signalbots: Senden an meine Nummer klappt von beiden Signalbots aus. Auch ich kann in die Gruppe senden, und die Nachricht wird von beiden empfangen. Wenn jedoch ein Signalbot eine Nachricht in die Gruppe schickt, wir er von Empfangsbestötigungen (receipt messages) des anderen überflutet.

2.) Mein 2. Versuch war, eine Nummer am Samrtphone zu registrieren, und beide Signalbots mit dieser Nummer zu verlinken. Wenn ich damit eine Gruppe bilde funktioniert das Senden zu und von meiner Nummer einwandfrei. Wenn jedoch ein Signalbot eine Nachricht in die Gruppe sendet, bekomme ich das zwar auf mein Handy, der andere Bot bekommt sie jedoch nicht.
Eine Nachricht vom Signalbot an die eigene Nummer, führt wieder zu der Überflutung mit Empfangsbestätigungen.

Ich habe in der Signal-CLI-Doku gelesen, dafür wäre eine eigene Option gedacht (--note-to-self), aber die ist im Modul nicht integriert.
Grundgedanke des Setups ist, dass ich von meinem Handy aus mit beiden FHEM-Instanzen reden kann, aber die beiden sollten sich auch untereinander unterhalten können.

LG
Simon
FHEM auf Rpi4, OpenWRT auf Netgear Nighthawk, CUL868, FHT80, Tradfri, CUL433, tbot, alexa-fhem, ESP8266, Shelly 1+2, homebridge, Klingelerkennung über ESP, Anwesenheit per OpenWRT

Adimarantis

Hi Simon,

Grundsätzliches:
Jeder signal-cli Instanz sollte nur mit einer Nummer verbunden sein. Einen ähnlichen Fehler ("message storm") hatte ich auch mal - ich glaube eben mit einer kopierten Registrierung - konnte das aber letztendlich nicht mehr nachstellen. Da heutzutage eigentlich jeder DSL Anschluss mit 3 Rufnummern kommt, bzw. man bei einigen Anbietern kostenlose VOIP Nummern registrieren kann, sollte es machbar sein, jeder Instanz eine eigene Nummer zu geben.
Wenn du trotzdem noch Probleme hast, und ein klar nachstellbares Szenario, mach bitte einen Bug auf der signal-cli github Seite auf.

Grundsätzlich könnte man noteToSelf in SignalBot zur Verfügung stellen - inwiefern das dein Problem löst, solltest du aber erstmal auf der Kommandozeile (dbus-send) ausprobieren. Verlinkte Devices sind ganz nett zum Ausprobieren, meiner Meinung nach aber keine Lösung für den produktiven Einsatz.

Die nächste Frage ist, wofür du zwei Instanzen benötigst. Sofern es sich um zwei Raspi's im selben Netz handelt, würde ich eher dazu raten mit nur einer Instanz und FHEM2FHEM zu arbeiten. FHEM2FHEM unterstützt seit kurzem auch remote Kommandos, so dass du bequem von der zweiten Instanz ein "set Remote_FHEM cmd set SignalBot send ...." machen kannst. Auf Messages vom Signalbot reagieren kannst du ebenfalls ganz einfach indem du sie mit FHEM2FHEM abonnierst.

Ich habe noch folgenden Bug-Report zu 0.9.0 bzgl. eines "message storm" gefunden:
https://github.com/AsamK/signal-cli/issues/777

Das müsste demnach in 0.9.2 behoben sein. Kannst du näher ausführen was "klappt gar nichts mehr" mit 0.9.2. bedeutet? Ich hab das zwar bisher nur auf meiner Test-Instanz laufen (Raspi400), dort aber schon seit Wochen ohne Probleme. Falls ich noteToSelf einbauen sollte, würde ich gerne auf 0.9.2 gehen (oder sogar höher, falls es bis dahin ein neues Release gibt).

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)

enno

Moin Jörg,

kurze Rückmeldung von mir. Ich habe ja seit dem 11.11. bei mir 0.9.2 laufen. Ohne Probleme absolut stabil.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Gisbert

Wie mache ich am einfachsten ein Update?
Ich hab diese Version:
VERSION Signalbot:3.1 signal-cli:0.9.0 Protocol::DBus:0.19
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Adimarantis

Aktuell sehe ich keinen Vorteil darin ein update von signal-cli zu machen, daher verwendet der Installer nach wie vor V0.9.0
Wer es dennoch machen möchte, das Installerscript unter ~fhem/www/signal wie folgt editieren:

SIGNALVERSION="0.9.2"

und nochmal drüberinstallieren lassen.

Aktuell warte ich auf das nächste Update. Die aktuelle Entwicklerversion auf Github verwendet bereits die neuste signal-client library, die zkgroup integriert, wodurch nur noch eine, statt zwei native libraries übersetzt werden müssen. Was ich auch verfolge ist das neue RPC Feature. Eventuell könnte es damit Sinn machen sich von Dbus zu verabschieden. Mit RPC sollte es z.B. einfacher sein, signal-cli in einen komplett eigenen Container zu verfrachten, aber das wäre wieder eine größere Umstellung für die ich erst Zeit finden müsste und über dessen Mehrwert ich mir nicht so sicher bin.

Inzwischen wurde auch das Dbus Interface deutlich aufgebohrt, insbesondere gibt es mehr Funktionen für die Verwaltung von Gruppen. Ich möchte Signalbot aber nicht blind mit diesen Funktionen überfrachten, wenn es keinen konkreten Anwendungsfall aus FHEM heraus gibt (viele neue Funktionen zielen eher auf die interaktive Anwendung).
Wer aber mal stöbern und Vorschläge machen möchte findet die Auflistung der Funktionen hier:
https://github.com/AsamK/signal-cli/blob/master/man/signal-cli-dbus.5.adoc

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

Gisbert

Hallo Adimarantis,

vielen Dank für die Erklärungen der nächsten Schritte.

Mein Anliegen war eher praktischer Natur aus Sicht eines (unbedarften) Users. Das Script habe ich runter geladen, jetzt hat es die Rechte pi:pi und chmod steht auf 644. Was muss da geändert werden, und wie wird das Skript aufgerufen, mit dem Dateinamen oder wie sonst?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Adimarantis

Das Script wird immer automatisch bei FHEM Start bzw. "reinit" runtergeladen, aktualisiert und auch per chmod ausführbar gemacht. Natürlich in dem Fall üblicherweise unter dem fhem User. Dann einfach z.B. mit vi oder nano editieren und wieder abspeichern. Wenn ich offiziell eine neue Version freigebe, reicht eben dann auch ein "reinit" und das neuste Skript steht wieder unter www/signal
Ausgeführt wird das dann wie üblich mit
sudo ./signal_install.sh

Wie gesagt, solange niemand Probleme hat, die explizit auf die signal-cli Version zurückzuführen sind oder Signalbot Funktionen eine neue Version benötigt, werde ich auch keine neue Version freigeben. "Never touch a running system" - um so weniger verschiedenen Installationen im Umlauf sind, um so leichter ist es Support zu leisten.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Gisbert

Verständlich, dann gedulde ich mich, bis du eine neue Version frei gibst.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Jamo

Hallo Adimarantis,
zumindest unter Debian 10, muss man für 0.9.2 anscheinend auch wieder die Libraries neu kompilieren. Also lass ich lieber auch erstmal alles beim alten, bis Du eine neue Version freigibst.
Grüsse und danke für die tolle Unterstützung und das Modul!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Adimarantis

Ja, die Debian 10 libs hab ich noch nicht gebaut - hab meine VM versehentlich auf 11 upgedated :)
Darfst dich aber gerne freiwillig melden. Für das nächste Update werd ich schauen dass ich die VM nochmal baue...

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,
freiwillig und sehr gerne! Nur zur Info, ich bekomme folgende Fehlermeldung im FHEM Signal Modul, und Messages werden nicht verschickt (funktioniert also nicht)
Error in sendMessage:Error Executing Method org.asamk.Signal.sendMessage: 'void org.signal.client.internal.Native.keepAlive(java.lang.Object)'

Was habe ich gemacht:
- auf https://github.com/signalapp/zkgroup gibt es noch keine neuen Libraries für 0.9.2, also habe ich die vorher kompilierten Dateien (Antwort #381 in diesem Thread) libsignal_jni.so und libzkgroup.so von 0.9.0 nach 0.9.2 kopiert"
cd /opt/fhem/signal-cli-0.9.2/lib/
sudo cp ../../signal-cli-0.9.0/lib/libsignal_jni.so .
sudo cp ../../signal-cli-0.9.0/lib/libzkgroup.so .

Dann die libraries ersetzt:
sudo -u fhem zip -u signal-client-java-*.jar libsignal_jni.so
sudo -u fhem zip -u zkgroup-java-*.jar libzkgroup.so

Neustart und check:
sudo systemctl restart signal.service
jamo@inuc:/opt/fhem$ systemctl status signal.service
● signal.service - Send secure messages to Signal clients
   Loaded: loaded (/etc/systemd/system/signal.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-11-29 20:10:32 CET; 4s ago
Main PID: 32436 (java)
    Tasks: 49 (limit: 4915)
   Memory: 160.1M
   CGroup: /system.slice/signal.service
           └─32436 java -Xms2m -classpath /opt/fhem/signal-cli-0.9.2/lib/signal-cli-0.9.2.jar:/opt/fhem/signal-cli-0.9.2/lib/lib.jar:/opt/fhem/signal-cli-0.9.2/lib/bcprov-jdk15on-1.69.jar:/opt/fhem/signal-cli-0.9.2/l
lines 1-8/8 (END)

jamo@inuc /opt/fhem$ java --version
openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)

jamo@inuc:/opt/fhem$ ldd --version
ldd (Debian GLIBC 2.28-10) 2.28

jamo@inuc:/opt/fhem$ uname -r
4.19.0-17-amd64
jamo@inuc:/opt/fhem$ cat /etc/debian_version
10.11
jamo@inuc:/opt/fhem$ cat /proc/version
Linux version 4.19.0-17-amd64 (debian-kernel@lists.debian.org) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.194-3 (2021-07-18)

FHEM neu gestartet:VERSION
Signalbot:3.1 signal-cli:0.9.2 Protocol::DBus:0.19


Wenn ich dann eine Message schicke, bekomme ich obigen Fehler und textmessages werden nicht verschickt. Bin jetzt wieder auf 0.9.0, das funktioniert stabil.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Adimarantis

Hi Jamo,

anscheinend ist der aktuelle Stand des Source Code nicht mehr kompatibel (durch den merge libsignal und zkgroup) - da müsste man wahrscheinlich auf einen älteren Stand/Branch gehen.
Lohnt aber den Aufwand nicht. Lass uns auf die nächste signal-cli release warten, die bereits auf das neue library layout aufsetzen wird.

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

So machen wir das! Danke nochmal, das Signal Modul läuft super.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

LuGu

Ich könnte mal Hilfe gebrauchen.
Die signal Installation in fhem ist ohne Probleme durchgalaufen,
Jetzt möchte ich eine Nummer registrieren, scheiter aber immer am captcha

192.168.111.200:8083/fhem?cmd=set signal captcha signalcaptcha://03AGdBq24ZS4yjw_zcj6YQbxRYbbFd4I2OFljTggSwzEy3FEtWJZFPsI5RX8KCSjB0HXjJy2A3jn4CwyPMoXqoyxeUISE10qluFRuoCUW3BCDhwWH8zt5fUVDyR5Zxg0S1WYdrYWp536-z2TzVMFNTmcbj5auBd_QuesSq9-TDbO9l1yJVx5lxRnzaI5GstWNNk9duQyXLjfO1zyywVWEARklXN1SgitxvW69SZnxZzEzPOav_bQ4Ira_QlU_RpGELi3Q1oNV9KbWEVXNS5Pa0l2WsmRUyWFLK1fzRzVCO-XJAbiGcfvEhbSbMii2vThnKEnh9bm6i28RFHMS09AC86eZM-fvxaltceCVsI9-A3tkpFYtzDIsBkO5n6_k8Xn1OB2ZBbMqKqanJuHFlTBse6hO0SmHpr4btUtTTut6vXfss8fAzLRBxpDlLkAzUpzyZFLbHu7mUmDX6NfXID-dI6E7atiGv0OMuSw


Egal, wie ich es versuche manuell oder automatisiert über powershell.
Es öffnet sich in jedem Fall ein neues Fenster mit:

Incorrect captcha - e.g. needs to start with signalcaptcha://

Obwohl der captch string ja mit signalcaptcha:// beginnt.

Ich hoffe, jemand hat einen Tip für mich. Ich drehe mich immer nur im Kreis und komme nicht weiter.

Gruß LuGu
FHEM mit RPi3 (Visu über FTUI)
HMCCU mit piVCCU3 / MQTT2 mit zigbee2mqtt

moskito

Ich hatte das Phänomen auch beim letzten mal.
Abhilfe war - glaube ich -  alles komplett über die Eingabezeile in der Weboberfläche einzugeben:
set signal captcha signalcaptcha://03AGdBq24ZS4yjw_zcj6YQbxR.....

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean