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

pcjogi

Hallo zusammen,

ich versuche einem bestehendem Signalaccount via link eine hem Instanz hinzuzufügen. Leider erscheint jedoch kein QR-Code den ich scannen könnte. Der Versuch das mit verschiedenen Browsern (Safari, Chrome) auf verschiedenen OS (Android Mac und Windows) brachte keinen Erfolg.

Jemand eine Idee?

Danke
Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.

Adimarantis

Zitat von: pcjogi am 31 Mai 2024, 13:08:53ich versuche einem bestehendem Signalaccount via link eine hem Instanz hinzuzufügen. Leider erscheint jedoch kein QR-Code den ich scannen könnte. Der Versuch das mit verschiedenen Browsern (Safari, Chrome) auf verschiedenen OS (Android Mac und Windows) brachte keinen Erfolg.

Die von mir verwendete Google API wurde von Google anscheinend eingestellt. Ich habe jetzt eine Version eingecheckt die eine alternative API verwendet. Bitte probieren (Version im SVN oder morgen per Update)
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: ReiKo55 am 25 Mai 2024, 20:23:45Wieder ist der Name im ersten Eintrag mit "Protocol::DBus::Type::Array=ARRAY(0x698bd70)" überschrieben.

Kann ich bei mir nicht nachvollziehen. Bist du auf der aktuellen signal-cli version 0.13.3 ?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

WolfgangV

Hi,

ich habe das gleiche Problem und außerdem erhalte ich beim "Update all" die Meldung:

FHEM/50_Signalbot.pm failed: Permission denied, trying to restore the previous version and aborting the update
2024.06.02 23:11:25 1:

Was tun?

Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

Ralli

Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240601) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

WolfgangV

Hallo an alle,

könnte mir mal bitte jemand die einzelnen Schritte erklären, wie GoogleAuth mit Signal verbunden wird?
Alleine komme ich da nicht weiter und eine Anleitung habe ich auch sonst nirgendwo gefunden.

Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

Adimarantis

Ich gehe mal davon aus, dass du bereits ein GoogleAuth Device eingerichtet hast. Wenn nicht bitte die Dokumentation des entsprechenden Moduls lesen.
Die Schritte in Signalbot sind zwar alle per Beschreibung der Attribute vorhanden, aber zugegebenerweise etwas verstreut und nicht als Schritt-für-Schritt Anleitung.
Ich habe daher jetzt folgendes Kapitel im Wiki ergänzt:
https://wiki.fhem.de/wiki/Signalbot#Fernsteuerung_und_Authentifizierung
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

WolfgangV

Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

JunePaik

Hallo, leider läuft das Script bzgl. der Java-Installation bei meinem Raspberry Pi 5 nicht richtig. Es geht fälschlicherweise davon aus, daß Version 21 vorliegt, obwohl das nicht so ist. Im Debian Bookworm Repo ist Version 17.

sudo -E ./signal_install.sh system
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.13.4 (libsignal-client v0.47.0)
System library path:          /usr/lib
System architecture:          aarch64
System GLIBC version:         2.36
Using Java version:           /opt/java/bin/java
Native Java 21.0              no (current version:21.0)

apt-cache search --names-only openjdk
openjdk-17-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-17-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-17-doc - OpenJDK Development Kit (JDK) documentation
openjdk-17-jdk - OpenJDK Development Kit (JDK)
openjdk-17-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-17-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-17-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-17-jre-zero - Alternative JVM for OpenJDK, using Zero
openjdk-17-source - OpenJDK Development Kit (JDK) source files
uwsgi-plugin-jvm-openjdk-17 - Java plugin for uWSGI (OpenJDK 17)
uwsgi-plugin-jwsgi-openjdk-17 - JWSGI plugin for uWSGI (OpenJDK 17)
uwsgi-plugin-ring-openjdk-17 - Closure/Ring plugin for uWSGI (OpenJDK 17)
uwsgi-plugin-servlet-openjdk-17 - JWSGI plugin for uWSGI (OpenJDK 17)

Edit:
Gemäß /opt/java/bin/java --version


openjdk 21.0.2 2024-01-16 LTS
OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13-LTS, mixed mode)

Beim Ausführen allerdings:
./signal-cli --version
Error: LinkageError occurred while loading main class org.asamk.signal.Main
        java.lang.UnsupportedClassVersionError: org/asamk/signal/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0

In der /tmp/signal_install.log sehe ich auch nur:
Get:37 http://deb.debian.org/debian-security bookworm-security/main arm64 openjdk-17-jre-headless arm64 17.0.11+9-1~deb12u1

Da müsste doch dann stehen, daß sich die entsprechende VErsion von https://github.com/adoptium/temurin21-binaries gezogen wurde?

Wie kann man das beheben?

Adimarantis

Komisch. Kannst du mal folgende Befehle probieren und jeweils die Ausgabe posten:

java --version
$JAVA_HOME/bin/java --version
/opt/java/bin/java --version
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

JunePaik

Hi, habe meinen Beitrag oben auch noch ergänzt.

java --version
openjdk 17.0.11 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb12u1, mixed mode)


$JAVA_HOME/bin/java --version
openjdk 17.0.11 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb12u1, mixed mode)

Ich könnte ja mal
fi
if [ -e "/opt/java/bin/java" ]; then
    JVER=`/opt/java/bin/java --version | grep -m1 -o '[0-9][0-9]\.[0-9]'`
    if [ "$JVER" = "$JAVA_VERSION" ]; then
      JAVACMD="/opt/java/bin/java"
      export JAVA_HOME="/opt/java"
      JAVA_NATIVE=no
    fi

aus dem Script löschen.


Edit:

Joar, dann passt es.

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.13.4 (libsignal-client v0.47.0)
System library path:          /usr/lib
System architecture:          aarch64
System GLIBC version:         2.36
Using Java version:           /opt/java/bin/java
Native Java 21.0              download (current version:17.0)
This will update system packages, install or uninstall signal-cli

Adimarantis

Bist du sicher dass du unter /opt/java noch nichts hattest? (Die Ausgabe hast du nicht geposted)
Bei mir geht es unter Bookworm und ich hab bei java --version die selbe Ausgabe wie du.

Script ändern klappt natürlich auch. Wär nur interessant gewesen ob man es fixen muss.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

JunePaik

Hatte ein Backup vorm Ausführen des Script angelegt und eingespielt. Unter opt/java steht nix. Sieht aber immer noch komisch aus.

Muss das so, daß erst default Repo JRE installiert wird und dann das adoptium Paket?

Welche Ausgabe hast du denn bei $JAVA_HOME/bin/java --version?

java --version
-bash: java: command not found
$JAVA_HOME/bin/java --version
-bash: /bin/java: No such file or directory
/opt/java/bin/java --version
-bash: /opt/java/bin/java: No such file or directory

sudo -E ./signal_install.sh system
./signal_install.sh: line 43: java: command not found
Warning: No Java 21.0 found - will try download of a Java 21.0 package
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.13.4 (libsignal-client v0.47.0)
System library path:          /usr/lib
System architecture:          aarch64
System GLIBC version:         2.36
Using Java version:           /opt/java/bin/java
Native Java 21.0              download (current version:)
You chose the following option: system

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...installing (haveged)done
Extracting templates from packages: 100%jre)
done
Checking for diff...available
Checking for dbus-send...available
Checking for cpan...available
Checking for zip...available
Checking for qrencode...installing (qrencode)done
Checking for /usr/include/dbus-1.0/dbus/dbus.h...installing (libdbus-1-dev)...done
Checking for /usr/share/build-essential/essential-packages-list...available
Checking for /usr/share/doc/libimage-librsvg-perl...installing (libimage-librsvg-perl)...done
Checking for /usr/share/perl5/URI.pm...available
Checking for Protocol::DBus...Can't locate Protocol/DBus.pm in @INC (you may need to install the Protocol::DBus module) (@INC contains: /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/aarch64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl-base /usr/lib/aarch64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl) at /tmp/signal1507.tmp line 5.
BEGIN failed--compilation aborted at /tmp/signal1507.tmp line 5.
Installing latest Protocol::DBus...done
Checking user signal-cli ...Adding user `signal-cli' ...
Adding new group `signal-cli' (1002) ...
Adding new user `signal-cli' (1002) with group `signal-cli (1002)' ...
Creating home directory `/home/signal-cli' ...
Copying files from `/etc/skel' ...
Adding new user `signal-cli' to supplemental / extra groups `users' ...
Adding user `signal-cli' to group `users' ...
created
Downloading Java from adoptium...successful
Unpacking ...done
Checking for Java 21.0...successful

java --version
openjdk 17.0.11 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb12u1, mixed mode)
$JAVA_HOME/bin/java --version
openjdk 17.0.11 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb12u1, mixed mode)
/opt/java/bin/java --version
openjdk 21.0.2 2024-01-16 LTS
OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13-LTS, mixed mode)

Adimarantis

Das schaut jetzt eigentlich grundsätzlich gut aus.
Was mich hauptsächlich irritiert ist
Checking for Protocol::DBus...Can't locate Protocol/DBus.pm in @INC (you may need to install the Protocol::DBus module) (@INC contains: /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/aarch64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl-base /usr/lib/aarch64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl) at /tmp/signal1507.tmp line 5.
BEGIN failed--compilation aborted at /tmp/signal1507.tmp line 5.
Hat die Installation von Protocol::DBus denn geklappt? Sprich, wenn du das volle Installationsscript (ohne Parameter "system") laufen lässt - klappt dann der Selbsttest?
Wenn nicht, kannst du
sudo cpan -T install Protocol::DBus >dbus.logausführen und dbus.log posten?

Wegen Java nochmal:
./signal-cli --versionwird nur funktionieren wenn du vorher
export JAVA_HOME=/opt/javamachst.
Sonst nimmt er das Java17, was zu der Fehlermeldung führt.

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

JunePaik

Jo, Selbsttest ist okay und Dbus wurde im Nachgang ordentlich installiert.

Zitatexport JAVA_HOME=/opt/java

Das wars. Danke.

Ich muss auch gestehen, ich bin zwar FHEM User, eine Integration von Signal brauch ich allerdings dort gar nicht. Aber wie du hier (ich nehme an, du bist das) ja bereits geschrieben hast, kann man dein Script auch gerne ohne FHEM benutzen, einfach weil die manuelle Installation, erst recht mit Java 21 als Grundvoraussetzung, für so Hobbyanwender schon echt 'ne Herausforderung ist. Mein Ziel ist es den Pi mittels signal-cli als dauerhaftes Signal Primary Device laufen zu lassen und dann auf eine Matrix Instanz auf selben Pi nebst Signal Mautrix-Bridge zu linken, um einen Matrix Client als einzigen Client auf allen Geräten nutzen zu können ohne die Altlast, immer noch den offiziellen Client laufen zu haben. 

Die Registrierung mit signal-cli wäre an sich nicht das Problem, nur liest man, daß, wenn man nicht ständig ein "receive" auslöst, was der Daemon übernimmt, das Signal Konto dann auch mal gerne wieder deaktiviert wird. Da Signal es ja nicht hinkriegt, einen vollumfänglichen Multi-Device Service anzubieten (Begrezung auf 5 Geräte, kein 2. Phone, Android Tablets völlig außen vor), kam nun dein Script ins Spiel,  :)